By: Carson (carson.delete@this.example.edu), March 6, 2021 2:35 am
Room: Moderated Discussions
Etienne Lorrain (etienne_lorrain.delete@this.yahoo.fr) on March 5, 2021 6:23 am wrote:
> Nowadays things have changed, the EFI system is a lot more complicated, its whole behaviour/specification
> is under NDA (Non Disclosure Agreement), and secure boot will stop you implementing anything
> which is not approved by the manufacturer - or not supported by Window 10.
> So basically none of your sophisticated idea can be implemented, if ECC has to be supported
> it has to be done by the EFI BIOS (Windows10 do not want to hear about ECC), and you get
> what Linus was complaining about: a machine-check exception with no way to know even the
> processor which triggered the ECC error or the address which caused the problem.
> That is what people call progress: a nice background image telling you how intelligent you
> are by having bought this top of the range brand of PC, during the whole Windows boot time.
Rubbish. The basic technique I described is applicable to traditional BIOS and (U)EFI PC boot ROMs, CoreBoot, u-Boot on ARM, or any other boot system. (The main difference being that it's almost certainly easier to communicate the required information across a less kludgey boot loader interface.)
The basic concept of a chain of boot loaders, each of which uses a limited subset of system resources (including RAM), followed by a "final OS" which tries to use everything, is pretty universal.
The point is that you have a safe-but-slow fallback of initializing all of RAM. Each stage in the boot loader chain verifies that the following stage can handle uninitialized ECC, or falls back if not. (One thing I forgot to include explicitly
Getting all the details right would involve a lot of grovelling through standards (the latest UEFI specification is 2557 pages!), but that's the textbook definition of a Small Matter of Programming: conceptually straightforward but hellishly laborious.
> Nowadays things have changed, the EFI system is a lot more complicated, its whole behaviour/specification
> is under NDA (Non Disclosure Agreement), and secure boot will stop you implementing anything
> which is not approved by the manufacturer - or not supported by Window 10.
> So basically none of your sophisticated idea can be implemented, if ECC has to be supported
> it has to be done by the EFI BIOS (Windows10 do not want to hear about ECC), and you get
> what Linus was complaining about: a machine-check exception with no way to know even the
> processor which triggered the ECC error or the address which caused the problem.
> That is what people call progress: a nice background image telling you how intelligent you
> are by having bought this top of the range brand of PC, during the whole Windows boot time.
Rubbish. The basic technique I described is applicable to traditional BIOS and (U)EFI PC boot ROMs, CoreBoot, u-Boot on ARM, or any other boot system. (The main difference being that it's almost certainly easier to communicate the required information across a less kludgey boot loader interface.)
The basic concept of a chain of boot loaders, each of which uses a limited subset of system resources (including RAM), followed by a "final OS" which tries to use everything, is pretty universal.
The point is that you have a safe-but-slow fallback of initializing all of RAM. Each stage in the boot loader chain verifies that the following stage can handle uninitialized ECC, or falls back if not. (One thing I forgot to include explicitly
Getting all the details right would involve a lot of grovelling through standards (the latest UEFI specification is 2557 pages!), but that's the textbook definition of a Small Matter of Programming: conceptually straightforward but hellishly laborious.
Topic | Posted By | Date |
---|---|---|
CPU & Memory bit flips | Ganon | 2021/03/03 10:05 AM |
Also "Silent Data Corruption" | Adrian | 2021/03/03 11:42 AM |
Thanks for the reference | Ganon | 2021/03/03 12:47 PM |
Implications for linux page cache | anon | 2021/03/03 12:54 PM |
Implications for linux page cache | Linus Torvalds | 2021/03/03 02:54 PM |
memory errors | blaine | 2021/03/03 03:53 PM |
memory errors | anon2 | 2021/03/03 06:30 PM |
memory errors | dmcq | 2021/03/04 06:16 AM |
memory errors | Etienne Lorrain | 2021/03/04 07:26 AM |
memory errors | dmcq | 2021/03/04 07:40 AM |
memory errors | Etienne Lorrain | 2021/03/04 07:58 AM |
memory errors | dmcq | 2021/03/04 08:12 AM |
memory errors | Carson | 2021/03/05 03:31 AM |
memory errors | Etienne Lorrain | 2021/03/05 07:23 AM |
memory errors | rwessel | 2021/03/05 08:48 AM |
memory errors | dmcq | 2021/03/05 01:01 PM |
memory errors | rwessel | 2021/03/05 01:23 PM |
memory errors | dmcq | 2021/03/05 01:51 PM |
memory errors | Brendan | 2021/03/06 12:38 AM |
memory errors | Carson | 2021/03/06 02:35 AM |
memory errors | Carson | 2021/03/06 07:24 AM |
memory errors | David Hess | 2021/03/04 02:44 PM |
memory errors | rwessel | 2021/03/04 06:14 PM |
memory errors | Linus Torvalds | 2021/03/04 09:21 PM |
memory errors | anon2 | 2021/03/04 10:46 PM |
memory errors | Carson | 2021/03/05 03:43 AM |
memory errors | anon2 | 2021/03/05 08:55 AM |
memory errors | gallier2 | 2021/03/05 03:22 AM |
memory errors | dmcq | 2021/03/05 01:59 PM |
memory errors | David Hess | 2021/03/06 05:27 AM |
memory errors | Carson | 2021/03/06 07:44 AM |
memory errors | Gabriele Svelto | 2021/03/06 11:11 AM |
memory errors | David Hess | 2021/03/06 11:28 AM |
memory errors | Michael S | 2021/03/06 03:45 PM |
memory errors | Doug S | 2021/03/04 11:48 AM |
memory errors | Michael S | 2021/03/04 12:36 PM |
memory errors | Jörn Engel | 2021/03/04 04:32 PM |
memory errors | Linus Torvalds | 2021/03/04 09:47 PM |
memory errors | Etienne Lorrain | 2021/03/05 02:09 AM |
memory errors | Michael S | 2021/03/05 05:06 AM |
memory errors | Linus Torvalds | 2021/03/05 12:59 PM |
memory errors | rwessel | 2021/03/05 01:32 PM |
memory errors | rwessel | 2021/03/05 01:37 PM |
memory errors | zArchJon | 2021/03/06 09:39 PM |
memory errors | Gabriele Svelto | 2021/03/06 01:58 PM |
memory errors | Jörn Engel | 2021/03/05 11:12 AM |
Amiga recoverable RAM disk? | Carson | 2021/03/05 04:03 AM |
Thanks - TIL a cool Amiga feature (nt) (NT) | John | 2021/03/05 01:51 PM |
Another cool Amiga feature, datatypes | Charles | 2021/03/06 01:01 AM |
Another cool Amiga feature, datatypes | Jukka Larja | 2021/03/06 02:23 AM |
Another cool Amiga feature, datatypes | Anon | 2021/03/06 01:40 PM |
Another cool Amiga feature, filesystems | Marcus | 2021/03/07 01:28 AM |
CPU & Memory bit flips | zArchJon | 2021/03/04 07:39 AM |
CPU & Memory bit flips | dmcq | 2021/03/04 07:59 AM |
CPU & Memory bit flips | rwessel | 2021/03/04 01:27 PM |
speak of the devil | Robert Williams | 2021/03/05 08:53 AM |
speak of the devil | dmcq | 2021/03/05 12:26 PM |
speak of the devil | Robert Williams | 2021/03/05 04:15 PM |