Validating license landesk management suite
Microcode Update Procedure: The update procedure expects the 64-bit virtual address of the update data, including the 64 byte header, to be in edx:eax: edx = high 32 bits of 64-bit virtual address eax = low 32 bits of 64-bit virtual address ecx = 0xc0010020 (MSR to trigger update) Execute wrmsr with these register values.
Essentially the processor can reconfigure parts of its own hardware to fix bugs (‘errata’) in the silicon that would normally require a recall.
The update generally takes around 5500 clock cycles. It was not tested on any other K8 cores, although the driver source code includes updates for CPUIDs 0x0F4A and 0x0F50.
Microcode Block Format: The microcode block consists of a 64-byte header and an 896-byte data area.
It also gives background information on the K8 microcode design and provides information on altering the microcode and loading the altered update for those who are interested in microcode hacking.
Source code is included for a simple Linux microcode update driver for those who want to update their K8’s microcode without waiting for the motherboard vendor to add it to the BIOS.Adding useful new instructions to the ISA is therefore unlikely; at best we could enable a previously undefined opcode to execute a few lines of uops and return.