[coreboot] cmos.layout upgradability
Peter Stuge
peter at stuge.se
Sun Jan 26 02:11:40 CET 2014
Vladimir 'φ-coder/phcoder' Serbinenko wrote:
> I feel like we should have a way to update options safely.
Thanks for starting the thread. I hope we'll hear comments on this
from all parts of the community.
It's a fairly important topic, since it impacts every single board.
Even if individual boards using coreboot in production typically do
not have new NVRAM settings added, there may be tree-wide options
added, and it's important that everything in the field continues to
work if a newer version of coreboot is deployed.
There is also previous work on the topic:
http://www.coreboot.org/Infrastructure_Projects#CMOS_handling
in particular:
http://www.coreboot.org/Infrastructure_Projects#Provide_update_paths_and_avoid_conflicts_in_addressing
(which mentions another solution to the problem)
> 2) Have some version field to check and if it mismatches reset CMOS
> to default. To avoid having to maintain version manually I propose to
> checksum option table and write 16-bit result to CMOS.
This does seem like a reasonable approach, but...
> 2a) instead of having separate field we could make XOR layout checksum
> into CMOS checksum. This would save 2 bytes but will break any existing
> users if they check checksum.
(IIRC we already have problems with the Linux nvram driver which does
checksumming somehow differently. Or maybe that was fixed already.)
Vladimir 'φ-coder/phcoder' Serbinenko wrote:
> > And why would you need to reset CMOS if trackpad is disabled?
> >
> > # nvramtool -a
> > # nvramtool -w trackpad_enable=Enable
>
> You could do it in this particular case but user isn't required to know
> this. And settings may be something more drammatic. It may happen that
> the system doesn't boot with garbage settings at all. The fact that you
> have to handle garbage in saved option indicates that something is wrong.
...but the above reminded me that it is ultimately a responsibility
of our source code and our design to never let booting fail simply
due to some garbage in NVRAM.
Code and design really must ensure a working state.
Until there exists an update path it's obviously not future proof to
add new options to any mainboard.
//Peter
More information about the coreboot
mailing list