New issue
Advanced search Search tips

Issue 777678 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Eve touch firmware update hang on upstream kernels

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Platform: 10004.0.0 (Official Build) dev-channel eve test

Steps to reproduce the problem:
1. Apply changes from the given diff to avoid a reboot loop from the forced update (issue 772203).
2. Build mainline kernel (ex: refs/tags/v4.12 from https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable).
Don’t forget to checkout chromeos subdirectory: $ git checkout cros/chromeos-4.4 chromeos
3. $ ./update_kernel.sh
4. Observe more than 15 seconds 'hang' on "Touchpad firmware updating..." splash screen.
5. Use CTRL+C to kill frecon and continue the rest of the boot.

DIFF:
--- chromeos-google-touch-firmware-update.sh.backup	2017-10-23 16:46:36.672112939 -0700
+++ chromeos-google-touch-firmware-update.sh	2017-10-23 16:51:07.383712962 -0700
   if [ "$?" -ne "0" ]; then
     die "Unable to flash new touchpad firmware, abort."
@@ -127,7 +129,7 @@
   log_msg "========================== WARNING =========================="
   log_msg "Reboot to reload touchpad driver, this will only happen once."
   log_msg "============================================================="
-  reboot
+  #reboot
   exit 0  # Reboot is not a blocking call, so we need to explicity exit.
 }

What is the expected behavior?
Device should not hang for more than 3 minutes, even after it has completed the (fake) upgrade.

What went wrong?
The device hangs forever because the chromeos-touch-update process never exits.

Did this work before? N/A 

Chrome version: 63.0.3230.0  Channel: dev
OS Version: 63.0.3230.0
Flash Version: 27.0.0.159

I highly recommend the following change to the flashing portion of the chromeos-google-touch-firmware-update script, as it will speed up the reproduction and remove the risk of firmware corruption through the flashing process:

--- chromeos-google-touch-firmware-update.sh.backup	2017-10-23 16:46:36.672112939 -0700
+++ chromeos-google-touch-firmware-update.sh	2017-10-23 16:51:07.383712962 -0700
@@ -115,7 +115,9 @@
 force_flash() {
   display_splash

-  st_flash --board=eve "${FW_LINK}"
+  #st_flash --board=eve "${FW_LINK}"
+  # Sleep for 15 seconds instead of flashing firmware
+  sleep 15
 
--- chromeos-touch-update.sh.backup	2017-10-23 17:36:25.360380966 -0700
+++ chromeos-touch-update.sh	2017-10-23 17:40:10.092938124 -0700
@@ -172,7 +172,7 @@
         logger -t "${LOGGER_TAG}" "Eve touchpad firmware update failed." ) &
   fi
 
-  wait
+  sleep 30; { jobs -l; ps ; } > /tmp/hung_jobs.txt
 
   # To restore runtime power management state from "on" to "auto" if they are
   # changed by this script in the begining.


Replacing this “wait” command with “sleep 30; { jobs -l; ps ; } > /tmp/hung_jobs.txt “ avoids the hangs and shows that the chromeos-google-touch-firmware-update.sh script is hung.

Attached are the /var/log/messages for a CPFE 4.4 kernel (forced a touchpad fw update) and a 4.12 kernel that has been pushed to the device.

The logs were captured with a '--debug' init option in the kernel boot parameters.

In the logs, you can see that the chromeos-touch-update pre-start process exits normally in the 4.4 kernel version, but never exits normally in the 4.12 kernel version.
4_4_messages_no_reboot.txt
1.3 MB View Download
4_12_messages_no_reboot.txt
659 KB View Download
Besides chromeos-touch-update hanging, another clear difference between the two logs just attached is a lot of frecon errors (or crashes) with the v4.12 upstream kernel.
Casey successfully tested another possible workaround/fix: calling clear_flash() at the end of force_flash()

https://chromium-review.googlesource.com/c/chromiumos/platform/touch_updater/+/721733/3/scripts/chromeos-google-touch-firmware-update.sh


Cc: kathrelk...@chromium.org
Components: Internals>Input
Labels: M-63
Status: Started (was: Unconfirmed)
Status: Available (was: Started)
This issue has been marked as started, but has no owner. Making available.

Sign in to add a comment