Closed raphaelcohn closed 5 years ago
It is possible to parse microcode files themselves (with a tool like [1], for example) in order to obtain signatures and Platform ID masks of each microcode.
Yes, it is. It's just a lot more work and more dependencies for a build system.
I'll write my own parser and embed it into a Rust build.rs
build script.
It's better to rely on microcode files themselves anyway, considering 1dd14da6d1ea5cfbd95923653f31c04aac3aa655.
Regarding dependencies, it can be done with programs from coreutils only, like [1] (strictly speaking, hexdump has to be replaced with multiple calls to od in order to depend only on coreutils).
[1] https://git.centos.org/rpms/microcode_ctl/blob/c7/f/SOURCES/gen_provides.sh#_30
Ta. Wrote my own parser and put into my own build script. Interesting the platform id mask isn't correctly documented - apparently it can be zero for some very old microcode files...
Obnote: I am not affiliated with Intel.
@raphaelcohn: Platform masks being zero on ancient processors was very much a well documented fact. It used to be documented properly somewhere in The Intel 64 and IA‐32 Architectures Software Developer's Manual, Volume 3A: System Programming Guide, Part 1 (order number 253668), section 9.11..
There are other caveats, the rarely used extended signature table being one.
(edit: could not find this information in the SDM anymore, maybe it is still there, but in a quick re-read I could not locate it).
Yep - not in my edition from Jan 2019 as well.
Whilst
releasenote
could be parsed to obtain a mapping of platform identifiers to file names, it's hardly elegant and would be very brittle.It would be much more useful to have a machine readable TSV (or the like) file, with details such as
\* eg 6-37-8 has 02 and 0C
.