Allow battery cutoff in firmware stage. |
|||||||||
Issue descriptionThis is an issue that follows issue chrome-os-partner:51846. In 51846, we found that in a factory in-place-wiping flow, the disable_dev_request flag may get lost if NVStorage was stored on CMOS because (1) NVStorage was backup-ed only on reboot (firmware stage) (2) CMOS will get lost if there's no battery (i.e., cutoff). So if we do (1) set disable_dev_request (2) cut-off battery and shutdown, then next boot won't see disable_dev_request flag and leave the system booting in developer mode. There are changes in 51846 to make disable_dev_request more persistent but the real problem we are seeing is "not able to do battery cut-off in normal mode, after dev/normal mode transition". A more solid and robust solution would be to add a "battery_cutoff_request" to crossystem values so that the system can finalize as the flow: (1) set disable_dev_request=1, battery_cutoff_request=1 (2) reboot (3) firmware performs dev->norm transition and remove disable_dev_request (4) firmware performs cutoff and shutdown So when user receives the device, it's already in normal mode and no need of extra reboots.
,
Apr 12 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/aee6bd69fefac653cfc4a5679eb387d7c3280d14 commit aee6bd69fefac653cfc4a5679eb387d7c3280d14 Author: Hung-Te Lin <hungte@chromium.org> Date: Thu Apr 07 04:21:03 2016 Support doing battery cut-off in firmware stage. Add a new crossystem value "battery_cutoff_request" to indicate that next reboot should cut-off battery and shutdown during firmware stage. This request is primarily for factories to ship devices in an safe state. Previously we have done same thing by running "ectool battery-cutoff" but that creates a problem which "ectool" (and the one to request for cut-off) must live in developer mode while the device must be shipped in normal mode. The mode transition was solved by setting "disable_dev_request=1", but that flag is may get lost on x86 systems (having NV storage in CMOS) when the battery is cut-off . From the experience from Ryu, such settings (dev mode transition and battery cut-off) should be done together inside firmware execution so we can create a new flag, battery_cutoff_request, to finalize device properly. BRANCH=none BUG= chromium:601705 TEST=emerge-chell depthcharge vboot_reference chromeos-bootimage crossystem battery_cutoff_request=1 # Unplug AC adapter reboot # See device rebooted and then shutdown immediately. # Press power button and system won't boot. # Attach AC adapter and now system boots. CQ-DEPEND=CL:337596,CL:338193 Change-Id: I73ccae15b337cd65786106646546c67c155b8fa6 Reviewed-on: https://chromium-review.googlesource.com/337602 Commit-Ready: Hung-Te Lin <hungte@chromium.org> Tested-by: Hung-Te Lin <hungte@chromium.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org> [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/utility/crossystem.c [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/2lib/include/2nvstorage_fields.h [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/include/vboot_nvstorage.h [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/lib/vboot_nvstorage.c [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/2lib/2nvstorage.c [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/include/vboot_api.h [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/stub/vboot_api_stub.c [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/lib/vboot_api_kernel.c [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/host/lib/crossystem.c [modify] https://crrev.com/aee6bd69fefac653cfc4a5679eb387d7c3280d14/firmware/2lib/include/2nvstorage.h
,
Apr 12 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/depthcharge/+/1a368610678a191b8fb4d6274c1806405f1244fc commit 1a368610678a191b8fb4d6274c1806405f1244fc Author: Hung-Te Lin <hungte@chromium.org> Date: Thu Apr 07 04:41:38 2016 vboot: Add VbExEcBatteryCutOff callback. A new Vboot callback VbExEcBatteryCutOff was introduced to allow turning off system and cut-off battery by sending command to EC. BRANCH=none BUG= chromium:601705 TEST=emerge-chell depthcharge chromeos-bootimage; crossystem battery_cutoff_request=1 # Unplug AC adapter reboot # System reboots and then turned off entirely. # Press power button and system won't boot. # Plug AC adapter again and now system boots. CQ-DEPEND=CL:337602 Change-Id: I1c8e3688e95d0ed4583907115d055aa9086ed5fe Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/337596 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> [modify] https://crrev.com/1a368610678a191b8fb4d6274c1806405f1244fc/src/vboot/callbacks/ec.c [modify] https://crrev.com/1a368610678a191b8fb4d6274c1806405f1244fc/src/vboot/callbacks/ec_stub.c
,
Apr 13 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/u-boot/+/c7658525258058ffa565b73d2bee6882d8a89690 commit c7658525258058ffa565b73d2bee6882d8a89690 Author: Hung-Te Lin <hungte@chromium.org> Date: Tue Apr 12 01:47:17 2016 vboot: ec: add VbExEcBatteryCutOff callback. The new API VbExEcBatteryCutOff was added in vboot and the callback has to be provided in EC module. The new cut-off function is planned to be supported only on new device (i.e., those using Depthcharge) and not in U-Boot so the stub call here simply returns error. BRANCH=none BUG= chromium:601705 TEST=emerge-daisy_spring chromeos-u-boot chromeos-bootimage; CQ-DEPEND=CL:338178 Original-Change-Id: I9cf6842b6702cb9fd731a0e4180c67a9faa1d283 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/338193 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> (cherry picked from commit cc72f5c47c758892b0f41257b0dd441a506ffdcd) Change-Id: I2da432e9150995807e14476891a9dbd49cc6dcd8 Reviewed-on: https://chromium-review.googlesource.com/338399 Tested-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Commit-Queue: Duncan Laurie <dlaurie@chromium.org> [modify] https://crrev.com/c7658525258058ffa565b73d2bee6882d8a89690/cros/vboot/ec.c
,
Apr 13 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/4bc9906f35507cb332456cb69f883fad4cdfcba2 commit 4bc9906f35507cb332456cb69f883fad4cdfcba2 Author: Hung-Te Lin <hungte@chromium.org> Date: Thu Apr 07 04:21:03 2016 Support doing battery cut-off in firmware stage. Add a new crossystem value "battery_cutoff_request" to indicate that next reboot should cut-off battery and shutdown during firmware stage. This request is primarily for factories to ship devices in an safe state. Previously we have done same thing by running "ectool battery-cutoff" but that creates a problem which "ectool" (and the one to request for cut-off) must live in developer mode while the device must be shipped in normal mode. The mode transition was solved by setting "disable_dev_request=1", but that flag is may get lost on x86 systems (having NV storage in CMOS) when the battery is cut-off . From the experience from Ryu, such settings (dev mode transition and battery cut-off) should be done together inside firmware execution so we can create a new flag, battery_cutoff_request, to finalize device properly. BRANCH=none BUG= chromium:601705 TEST=emerge-chell depthcharge vboot_reference chromeos-bootimage crossystem battery_cutoff_request=1 # Unplug AC adapter reboot # See device rebooted and then shutdown immediately. # Press power button and system won't boot. # Attach AC adapter and now system boots. CQ-DEPEND=CL:338288,CL:338399 Original-Change-Id: I73ccae15b337cd65786106646546c67c155b8fa6 Original-Reviewed-on: https://chromium-review.googlesource.com/337602 Commit-Ready: Hung-Te Lin <hungte@chromium.org> Tested-by: Hung-Te Lin <hungte@chromium.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org> (cherry picked from commit aee6bd69fefac653cfc4a5679eb387d7c3280d14) Change-Id: I563602ee8437f867720942df7f658a28378579aa Reviewed-on: https://chromium-review.googlesource.com/338178 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Tested-by: Duncan Laurie <dlaurie@chromium.org> Commit-Queue: Duncan Laurie <dlaurie@chromium.org> [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/utility/crossystem.c [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/2lib/include/2nvstorage_fields.h [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/include/vboot_nvstorage.h [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/lib/vboot_nvstorage.c [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/2lib/2nvstorage.c [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/include/vboot_api.h [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/stub/vboot_api_stub.c [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/lib/vboot_api_kernel.c [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/host/lib/crossystem.c [modify] https://crrev.com/4bc9906f35507cb332456cb69f883fad4cdfcba2/firmware/2lib/include/2nvstorage.h
,
Apr 13 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/depthcharge/+/ae36f0f08bcd3b5649620039b74a25ab95bde431 commit ae36f0f08bcd3b5649620039b74a25ab95bde431 Author: Hung-Te Lin <hungte@chromium.org> Date: Thu Apr 07 04:41:38 2016 vboot: Add VbExEcBatteryCutOff callback. A new Vboot callback VbExEcBatteryCutOff was introduced to allow turning off system and cut-off battery by sending command to EC. BRANCH=none BUG= chromium:601705 TEST=emerge-chell depthcharge chromeos-bootimage; crossystem battery_cutoff_request=1 # Unplug AC adapter reboot # System reboots and then turned off entirely. # Press power button and system won't boot. # Plug AC adapter again and now system boots. CQ-DEPEND=CL:338178 Original-Change-Id: I1c8e3688e95d0ed4583907115d055aa9086ed5fe Signed-off-by: Hung-Te Lin <hungte@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/337596 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> (cherry picked from commit 1a368610678a191b8fb4d6274c1806405f1244fc) Change-Id: I03939ee83f4aff5268c2bc91dc6cfb6dc0bd4c75 Reviewed-on: https://chromium-review.googlesource.com/338288 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Tested-by: Duncan Laurie <dlaurie@chromium.org> Commit-Queue: Duncan Laurie <dlaurie@chromium.org> [modify] https://crrev.com/ae36f0f08bcd3b5649620039b74a25ab95bde431/src/vboot/callbacks/ec.c [modify] https://crrev.com/ae36f0f08bcd3b5649620039b74a25ab95bde431/src/vboot/callbacks/ec_stub.c
,
May 13 2016
I've verified the new cutoff flow. Tow CLs (CL:344434, CL:344564) for the factory toolkit are submitted for using the new cutoff method. They can only be applied to test image and firmware with CL:337596, CL:338193, and CL:337602. For projects that do not have the them, we have a check CL:336610, CL:339412 to avoid device finalized but still in dev mode. The finalize will fail if the device virtual dev mode is on. Hung-Te also provides a CL:344500 for those device to switch virtual dev mode before running finalize.
,
May 16 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/factory/+/ccbeab16d82b383746b70491cfd551bdc757dd15 commit ccbeab16d82b383746b70491cfd551bdc757dd15 Author: Shun-Hsing Ou <shunhsingou@chromium.org> Date: Fri May 13 03:58:45 2016 finalize: do battery cutoff when reboot Now we have new method to do battery cutoff when reboot. This CL removes 'battery_cutoff_at_shutdown', and add an additional check on the support of the image before in-place wipe. BUG= chromium:601705 TEST=Manually on Chell CQ-DEPEND=CL:344434 Change-Id: I830803376713aba683d88072504608d2b422d051 Reviewed-on: https://chromium-review.googlesource.com/344564 Commit-Ready: Shun-Hsing Ou <shunhsingou@chromium.org> Tested-by: Shun-Hsing Ou <shunhsingou@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> [modify] https://crrev.com/ccbeab16d82b383746b70491cfd551bdc757dd15/py/test/pytests/finalize/finalize.py [modify] https://crrev.com/ccbeab16d82b383746b70491cfd551bdc757dd15/py/gooftool/commands.py [modify] https://crrev.com/ccbeab16d82b383746b70491cfd551bdc757dd15/py/gooftool/core.py [modify] https://crrev.com/ccbeab16d82b383746b70491cfd551bdc757dd15/py/test/test_lists/generic_grt.py
,
May 16 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/memento_softwareupdate/+/906c2e97f419dc20c8a03ab7ddfcc663f3756ee1 commit 906c2e97f419dc20c8a03ab7ddfcc663f3756ee1 Author: Shun-Hsing Ou <shunhsingou@chromium.org> Date: Fri May 13 04:05:10 2016 battery_cutoff: apply battery_cutoff at reboot Now we have new battery cutoff method. This CL removes battery cutoff at shutdown and applies the new cut off method. BUG= chromium:601705 TEST=Manually on Chell Change-Id: Iefa761170d5d66a8eb4e664ab7385bae784e0830 Reviewed-on: https://chromium-review.googlesource.com/344434 Commit-Ready: Shun-Hsing Ou <shunhsingou@chromium.org> Tested-by: Shun-Hsing Ou <shunhsingou@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> [modify] https://crrev.com/906c2e97f419dc20c8a03ab7ddfcc663f3756ee1/battery_cutoff/battery_cutoff.sh
,
May 26 2016
,
Jul 1 2016
,
Aug 29 2016
,
Aug 31 2016
,
Sep 9 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/memento_softwareupdate/+/7f5021ac22fe38d131bbf038a50c49b03b70b7c3 commit 7f5021ac22fe38d131bbf038a50c49b03b70b7c3 Author: Shun-Hsing Ou <shunhsingou@chromium.org> Date: Fri May 13 04:05:10 2016 battery_cutoff: apply battery_cutoff at reboot Now we have new battery cutoff method. This CL removes battery cutoff at shutdown and applies the new cut off method. BUG= chromium:601705 TEST=Manually on Chell Change-Id: Iefa761170d5d66a8eb4e664ab7385bae784e0830 Reviewed-on: https://chromium-review.googlesource.com/344434 Commit-Ready: Shun-Hsing Ou <shunhsingou@chromium.org> Tested-by: Shun-Hsing Ou <shunhsingou@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> (cherry picked from commit 906c2e97f419dc20c8a03ab7ddfcc663f3756ee1) Reviewed-on: https://chromium-review.googlesource.com/382892 Commit-Queue: Shun-Hsing Ou <shunhsingou@chromium.org> Tested-by: Loop Wu <Loop_Wu@asus.com> Reviewed-by: Shun-Hsing Ou <shunhsingou@chromium.org> [modify] https://crrev.com/7f5021ac22fe38d131bbf038a50c49b03b70b7c3/battery_cutoff/battery_cutoff.sh
,
Sep 9 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/factory/+/0dcef4014b1c6ec76365100c9d921c7681bba2d7 commit 0dcef4014b1c6ec76365100c9d921c7681bba2d7 Author: Shun-Hsing Ou <shunhsingou@chromium.org> Date: Fri May 13 03:58:45 2016 finalize: do battery cutoff when reboot Now we have new method to do battery cutoff when reboot. This CL removes 'battery_cutoff_at_shutdown', and add an additional check on the support of the image before in-place wipe. BUG= chromium:601705 TEST=Manually on Chell CQ-DEPEND=CL:344434 Change-Id: I830803376713aba683d88072504608d2b422d051 Reviewed-on: https://chromium-review.googlesource.com/344564 Commit-Ready: Shun-Hsing Ou <shunhsingou@chromium.org> Tested-by: Shun-Hsing Ou <shunhsingou@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/383031 Tested-by: Loop Wu <Loop_Wu@asus.com> Commit-Queue: Shun-Hsing Ou <shunhsingou@chromium.org> [modify] https://crrev.com/0dcef4014b1c6ec76365100c9d921c7681bba2d7/py/test/pytests/finalize/finalize.py [modify] https://crrev.com/0dcef4014b1c6ec76365100c9d921c7681bba2d7/py/test/test_lists/generic_grt.py [modify] https://crrev.com/0dcef4014b1c6ec76365100c9d921c7681bba2d7/py/gooftool/gooftool.py
,
Nov 8 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/vboot_reference/+/8ec2ca176fbc6b392adbb01b20fe3a938071d08a commit 8ec2ca176fbc6b392adbb01b20fe3a938071d08a Author: Hung-Te Lin <hungte@chromium.org> Date: Thu Apr 07 04:21:03 2016 Support doing battery cut-off in firmware stage. Add a new crossystem value "battery_cutoff_request" to indicate that next reboot should cut-off battery and shutdown during firmware stage. This request is primarily for factories to ship devices in an safe state. Previously we have done same thing by running "ectool battery-cutoff" but that creates a problem which "ectool" (and the one to request for cut-off) must live in developer mode while the device must be shipped in normal mode. The mode transition was solved by setting "disable_dev_request=1", but that flag is may get lost on x86 systems (having NV storage in CMOS) when the battery is cut-off . From the experience from Ryu, such settings (dev mode transition and battery cut-off) should be done together inside firmware execution so we can create a new flag, battery_cutoff_request, to finalize device properly. BRANCH=none BUG= chromium:601705 TEST=emerge-chell depthcharge vboot_reference chromeos-bootimage crossystem battery_cutoff_request=1 # Unplug AC adapter reboot # See device rebooted and then shutdown immediately. # Press power button and system won't boot. # Attach AC adapter and now system boots. CQ-DEPEND=CL:337596,CL:338193 Change-Id: I73ccae15b337cd65786106646546c67c155b8fa6 Reviewed-on: https://chromium-review.googlesource.com/337602 Commit-Ready: Hung-Te Lin <hungte@chromium.org> Tested-by: Hung-Te Lin <hungte@chromium.org> Reviewed-by: Duncan Laurie <dlaurie@chromium.org> (cherry picked from commit aee6bd69fefac653cfc4a5679eb387d7c3280d14) Reviewed-on: https://chromium-review.googlesource.com/407724 Trybot-Ready: Shun-Hsing Ou <shunhsingou@chromium.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org> Commit-Queue: Shun-Hsing Ou <shunhsingou@chromium.org> Tested-by: Shun-Hsing Ou <shunhsingou@chromium.org> [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/utility/crossystem.c [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/2lib/include/2nvstorage_fields.h [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/include/vboot_nvstorage.h [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/lib/vboot_nvstorage.c [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/2lib/2nvstorage.c [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/include/vboot_api.h [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/stub/vboot_api_stub.c [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/lib/vboot_api_kernel.c [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/host/lib/crossystem.c [modify] https://crrev.com/8ec2ca176fbc6b392adbb01b20fe3a938071d08a/firmware/2lib/include/2nvstorage.h
,
Nov 8 2016
,
Nov 14 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/platform/depthcharge/+/e0704eacf34c7ef840fed27f6bb5e92ed96ca73c commit e0704eacf34c7ef840fed27f6bb5e92ed96ca73c Author: Hung-Te Lin <hungte@chromium.org> Date: Thu Apr 07 04:41:38 2016 vboot: Add VbExEcBatteryCutOff callback. A new Vboot callback VbExEcBatteryCutOff was introduced to allow turning off system and cut-off battery by sending command to EC. BRANCH=none BUG= chromium:601705 TEST=emerge-chell depthcharge chromeos-bootimage; crossystem battery_cutoff_request=1 # Unplug AC adapter reboot # System reboots and then turned off entirely. # Press power button and system won't boot. # Plug AC adapter again and now system boots. CQ-DEPEND=CL:337602 Change-Id: I1c8e3688e95d0ed4583907115d055aa9086ed5fe Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/337596 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> (cherry picked from commit 1a368610678a191b8fb4d6274c1806405f1244fc) Reviewed-on: https://chromium-review.googlesource.com/410980 [modify] https://crrev.com/e0704eacf34c7ef840fed27f6bb5e92ed96ca73c/src/vboot/callbacks/ec.c [modify] https://crrev.com/e0704eacf34c7ef840fed27f6bb5e92ed96ca73c/src/vboot/callbacks/ec_stub.c |
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by bugdroid1@chromium.org
, Apr 12 2016