New issue
Advanced search Search tips

Issue 705414 link

Starred by 1 user

Issue metadata

Status: Archived
Owner:
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

firmware updater: A more simplified firmware updater.

Project Member Reported by hungte@chromium.org, Mar 27 2017

Issue description

Provide a better (again) way to help partners and Google developers understanding and managing firmware updates.

Firmware updating process in ChromeOS AU is known to be complicated because it has to deal with different requests and different use cases. These were controlled by the logic in firmware updater scripts and the package setup (ebuild) files.

We had tried to simplify the process few times - and the latest one was http://go/cros-fw-update-simplified. From that design, the updating logic is primarily based on two things: write protection enabled or not, and a "stable version" setting in ebuild.
These rules worked pretty well and covered most of the scenarios that Chromebook projects needed, but since there are more new partners involved, the right way to use "stable version" seems obfuscating to them. Also we are seeing requests about making firmware root key change process more smooth. This should not be a problem if people only set "stable version" when the devices has reached MP, as recommended. On recent Intel systems we have needed to set the stable value to avoid dogfooders getting crashes during suspend due to MRC cache getting corrupted (it has been a while, maybe this is not an issue any more?).

To help dogfood process going more smoothly, and by the help from our recent work of "support different RO and RW in updater", we should consider to simplify the updater and ebuild files (again) to make it really easy to maintain and understood.

The goal is to deprecate the CROS_FIRMWARE_STABLE_MAIN_VERSION and CROS_FIRMWARE_STABLE_{EC,PD}_VERSION settings by using different RO & RW (CROS_FIRMWARE_MAIN_RW_IMAGE) with simplified logic - that we now always try to update RO if it's changed.

One important thing to address that is for recent x86 systems, suspend / resume after an update (especially RO) may not work, because:
- MRC cache may be invalid.
- ACPI tables may have been changed and existing pointers become invalid.
This is a known issue and no good solution yet except reducing RO updates unless it's really needed, and that's one of the reason we are proposing this new updater logic to avoid the magic STABLE version settings. 

Complete design doc in https://goto.google.com/cros-fw-update-2017

 
Showing comments 179 - 278 of 278 Older
Project Member

Comment 179 by bugdroid1@chromium.org, May 20 2017

Project Member

Comment 180 by bugdroid1@chromium.org, May 20 2017

Project Member

Comment 181 by bugdroid1@chromium.org, May 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform/firmware/+/969149fc4ae6421006ab6f2b99eee2dd18ccdf39

commit 969149fc4ae6421006ab6f2b99eee2dd18ccdf39
Author: Hung-Te Lin <hungte@chromium.org>
Date: Mon May 22 10:20:38 2017

updater3: Remove rw compatibility check.

There should be no more dogfood devices running updater3. Time to remove
the RW compatibility checks so we can eliminate the STABLE_VERISON
fields. Done by syncing with changes in updater4.

BUG= chromium:705414 
TEST=emerge-$BOARD chromeos-firmware-$BOARD.

Change-Id: Iae849515bf367ede98d94dd80d79229c14868bb0
Reviewed-on: https://chromium-review.googlesource.com/505979
Commit-Ready: Hung-Te Lin <hungte@chromium.org>
Tested-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>

[modify] https://crrev.com/969149fc4ae6421006ab6f2b99eee2dd18ccdf39/pack_dist/updater3.sh

Project Member

Comment 182 by bugdroid1@chromium.org, May 23 2017

Project Member

Comment 183 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 184 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 185 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 186 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 187 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 188 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 190 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 191 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 193 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 194 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 195 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 196 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 197 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 198 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 199 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 200 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 201 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 202 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 203 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 205 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 206 by bugdroid1@chromium.org, May 25 2017

Project Member

Comment 207 by bugdroid1@chromium.org, May 26 2017

Project Member

Comment 208 by bugdroid1@chromium.org, May 26 2017

Project Member

Comment 209 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 210 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 211 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 213 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 214 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 215 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 216 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 217 by bugdroid1@chromium.org, Jun 3 2017

Project Member

Comment 218 by bugdroid1@chromium.org, Jun 5 2017

Project Member

Comment 219 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 220 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 222 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 223 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 227 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 228 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 229 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 232 by bugdroid1@chromium.org, Jun 6 2017

Project Member

Comment 233 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 234 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 238 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 239 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 240 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 241 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 242 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 244 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 245 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 246 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 247 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 249 by bugdroid1@chromium.org, Jun 8 2017

Project Member

Comment 250 by bugdroid1@chromium.org, Jun 8 2017

Status: Fixed (was: Started)
Project Member

Comment 252 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 256 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 258 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 259 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 260 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 261 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 262 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 263 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 264 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 265 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 266 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 267 by bugdroid1@chromium.org, Jun 12 2017

Project Member

Comment 269 by bugdroid1@chromium.org, Jun 12 2017

Cc: jclinton@chromium.org shapiroc@chromium.org sjg@chromium.org
There are many code locations that still reference stable FW, EC and PD versions. For example: https://cs.corp.google.com/chromeos_internal/src/platform/firmware/pack_firmware.py?type=cs&q=stable-ec-version&l=745 . It's not clear to me if these are still used. For example, these templates still reference these: https://cs.corp.google.com/search/?q=REPLACE_STABLE_ECID&m=25&type=cs

Is this code still active and are you planning on deleting it?

The reason I'm asking is that it's not clear whether we can stop referencing stable-ec-version and stable-main-version in model.dtsi files.

I've removed all STABLE_* from chromeos-firmware-* ebuild files, so the answer is no, we're not using stable version anymore and it is planned to be deleted, but not in a hurry since it's not blocking anything.

You can work on that (delete all reference to stable, including templates) if you need to refactor model.dtsi or something else.
P.S: In order to make sure nothing breaks, I was planning to remove dead code after one or 2 milestones so we can assume the code has been pushed via AU and is verified to work. In other words, the original plan is to start removing after M62.
Project Member

Comment 273 by bugdroid1@chromium.org, Jul 13 2017

Labels: merge-merged-release-R60-9592.B
The following revision refers to this bug:
  https://chrome-internal.googlesource.com/chromeos/overlays/overlay-asuka-private/+/cddbf4140c2374f4f10a79495cad565e2285e029

commit cddbf4140c2374f4f10a79495cad565e2285e029
Author: Hung-Te Lin <hungte@chromium.org>
Date: Thu Jul 13 13:06:22 2017

Project Member

Comment 274 by bugdroid1@chromium.org, Jul 13 2017

Project Member

Comment 275 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/9dfbc8845300d492324404f34fe288cecb525061

commit 9dfbc8845300d492324404f34fe288cecb525061
Author: Simon Glass <sjg@chromium.org>
Date: Thu Aug 10 19:59:34 2017

chromeos-config: Mark stable firmware as deprecated

This feature is being removed in M62. Mark the properties as deprecated so
it is clear that they are no-longer used.

BUG= chromium:705414 
BUG= chromium:754212 
TEST=check with 'retext README.md'
Signed-off-by: Simon Glass <sjg@chromium.org>

Change-Id: Ifa7a5897d45c7eb8ab929c64085d0ff75cdde185
Reviewed-on: https://chromium-review.googlesource.com/609941
Reviewed-by: Jason Clinton <jclinton@chromium.org>
Commit-Queue: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>

[modify] https://crrev.com/9dfbc8845300d492324404f34fe288cecb525061/chromeos-config/README.md

Project Member

Comment 276 by bugdroid1@chromium.org, Oct 12 2017

Status: Archived (was: Fixed)
Showing comments 179 - 278 of 278 Older

Sign in to add a comment