Eve touch firmware update hang on upstream kernels
Reported by
casey.g....@intel.corp-partner.google.com,
Oct 24 2017
|
|||
Issue descriptionUserAgent: 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
,
Oct 24 2017
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.
,
Oct 24 2017
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.
,
Oct 24 2017
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
,
Oct 26 2017
,
Jan 11
This issue has been marked as started, but has no owner. Making available. |
|||
►
Sign in to add a comment |
|||
Comment 1 by casey.g....@intel.corp-partner.google.com
, Oct 24 2017--- 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.