Processor Microcode

Last modified : 23 July, 2017

The wikipedia entry for Microcode was helpful to me in understanding what it is. I was curious whether I had to do anything to update the microcode version on my machines. This wiki from ArchLinux suggests that for AMD processors, we don’t really. To check what version of microcode your processor is running : dmesg | grep microcode

So where in the kernel is this magical update being orchestrated?

What are these GenuineIntel.bin and AuthenticAMD.bin files? Are these binary blobs that the Linux community gets from the companies?

I found another page LinuxFromScratch which points me to the Intel Download Center which has the microcode update file for Linux for specific processors. I downloaded the .tgz file and sure enough, seems to be an opaque binary blob:

$ tree
├── intel-ucode
│   ├── 06-03-02
│   ├── 06-05-00
│   ├── 06-05-01
│   ├── 06-05-02
│   ├── 06-05-03
│   ├── 06-08-03
│   ├── 06-08-06
│   ├── 06-08-0a
│   ├── 06-09-05
│   ├── 06-0a-00
│   ├── 0f-06-05
│   └── 0f-06-08
├── microcode.dat
└── releasenote

$ tail microcode.dat 
0x3b9e9a52,	0x8265f31c,	0xe7c1263b,	0x518a8645,
0xc51aaa18,	0xfd042e3f,	0x8a3b1416,	0x931408ac,
0x593ef181,	0x82f03021,	0x86cce5e9,	0xc5c32c4f,
0xedabd0a0,	0x5807f1c6,	0xac47bb24,	0x966bf237,
0x5efb5e69,	0x847cd488,	0x51b473c5,	0xaf99fea3,
0xf1027283,	0xcc5465b6,	0x1d33038a,	0xef81dcdb,
0x44acb2cc,	0x4d30da4b,	0x24e7f92d,	0x36f7f036,
0x463202cd,	0xfe25cce9,	0x2d44dc29,	0xcec1cd87,
0x817b5ddd,	0x4a951c87,	0x273d11ca,	0xf1e91098,
0x5dedd6c7,	0x6648668d,	0x18229090,	0x84dce17e,

$ file intel-ucode/0f-00-0a
intel-ucode/0f-00-0a: data

The LinuxFromScratch page also has a binary blob for AMD.

Another interesting thing that the LinuxFromScratch page tells me is that this microcode update has to happen every time we boot. Isn’t it completely mind blowing that every time we boot, the processor is re-programmed?

All content on this website is licensed as Creative Commons-Attribution-ShareAlike 4.0 License. Opinions expressed are solely my own.