FreeBSD Foundation Development Projects Update July 2018

Mark Johnston provides up an update on development projects sponsored by the FreeBSD Foundation. One he is working on in particular is in-kernel microcode loading. Currently, the patch is in its early stage and feedback is requested. Johnston notes that new functionality will be coming to FreeBSD 12, as well as 11-STABLE and 11.3.

Improved CPU Microcode Loading

Modern CPUs rely on microcode to control many aspects of their behavior, and microcode updates may be provided by system firmware (BIOS) or the operating system to correct or address issues in CPU operation discovered while in production.

FreeBSD has long supported run-time microcode loading, although in a somewhat cumbersome fashion. Currently a userland tool makes use of a special kernel interface to inject new microcode, which has a couple of downsides. First, microcode is not loaded until well after the kernel has booted, which means that any security or stability improvements provided by a microcode update are not available until late in the boot process. Second, the microcode may revert to that provided by the system after suspend and resume, which is particularly problematic if the new microcode implements new features or control registers (because the registers will “disappear” after resume). ….