Denis Carikli (GNUtoo@no-log.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1945
-gerrit
commit bb8620bf4279503a53cde60aefccfa4974e5c422 Author: Denis 'GNUtoo' Carikli GNUtoo@no-log.org Date: Thu Nov 29 22:25:35 2012 +0100
Add AMD microcode updating filter.
The microcode updating filter can be used this way:
In your mainboard file add something like that: fake_microcode_value = 0x010000b7
function do_mainboard_setup() [...] enable_hook(cpumsr_hooks, filter_amd_microcode) end
0x010000b7 is what corresponds to the microcode patch level.
Change-Id: If6d72bfdbd9b9f78cd5774db82c401b638f35046 Signed-off-by: Denis 'GNUtoo' Carikli GNUtoo@no-log.org --- SerialICE/simba/cpu.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/SerialICE/simba/cpu.lua b/SerialICE/simba/cpu.lua index be04825..43a1e42 100644 --- a/SerialICE/simba/cpu.lua +++ b/SerialICE/simba/cpu.lua @@ -129,3 +129,31 @@ filter_intel_microcode = { pre = intel_microcode_pre, post = intel_microcode_post, } + +-- AMD CPU microcode update +function amd_microcode_pre(f, action) + if action.rin.ecx == 0xc0010020 then + --action.dropped = true + --action.rout.edx = 0 + --action.rout.eax = 0xffff0000 + return drop_action(f, action) + end + return skip_filter(f, action) +end + +-- AMD CPU microcode revision check +-- Fakes microcode revision. +function amd_microcode_post(f, action) + if action.rin.ecx == 0x8b then + action.rout.eax = fake_microcode_value + return fake_action(f, action, 0) + end + return skip_filter(f, action) +end + +filter_amd_microcode = { + id = -1, + name = "Microcode Update", + pre = amd_microcode_pre, + post = amd_microcode_post, +}