Denis Carikli (GNUtoo@no-log.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1948
-gerrit
commit 757751745141a9d906cb3c669bdcde7e67745a41 Author: Denis 'GNUtoo' Carikli GNUtoo@no-log.org Date: Fri Nov 30 12:35:51 2012 +0100
Make the CPU microcode filter generic (not CPU model specific).
The microcode updating filter can be used this way:
For AMD: -------- In your mainboard file add something like that: microcode_patchlevel_eax = 0x010000b7
function do_mainboard_setup() [...] enable_hook(cpumsr_hooks, filter_amd_microcode) end
0x010000b7 is what corresponds to the microcode patch level.
For Intel: ---------- In your mainboard file add something like that: microcode_patchlevel_edx = 0xc7
function do_mainboard_setup() [...] enable_hook(cpumsr_hooks, filter_intel_microcode) end
Change-Id: I370b80a341820ab070f97cc578eb43d5aca192ad Signed-off-by: Denis 'GNUtoo' Carikli GNUtoo@no-log.org --- SerialICE/simba/cpu.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/SerialICE/simba/cpu.lua b/SerialICE/simba/cpu.lua index c440b4b..9c2c72b 100644 --- a/SerialICE/simba/cpu.lua +++ b/SerialICE/simba/cpu.lua @@ -57,6 +57,9 @@ filter_cpumsr_fallback = { -- ********************************************************** -- CPUID filters
+microcode_patchlevel_eax = 0 +microcode_patchlevel_edx = 0 + function cpuid_pre(f, action) return handle_action(f, action) end @@ -116,8 +119,8 @@ end -- Fakes microcode revision of my 0x6f6 Core 2 Duo Mobile function intel_microcode_post(f, action) if action.rin.ecx == 0x8b then - action.rout.edx = 0xc7 - action.rout.eax = 0 + action.rout.edx = microcode_patchlevel_edx + action.rout.eax = microcode_patchlevel_eax return fake_action(f, action, 0) end return skip_filter(f, action) @@ -145,7 +148,8 @@ end -- Fakes microcode revision. function amd_microcode_post(f, action) if action.rin.ecx == 0x8b then - action.rout.eax = 0x010000b7 + action.rout.eax = microcode_patchlevel_eax + action.rout.edx = microcode_patchlevel_edx return fake_action(f, action, 0) end return skip_filter(f, action)