[SerialICE] New patch to review for serialice: 562525e Add APIC memory spaces
Kyösti Mälkki (kyosti.malkki@gmail.com)
gerrit at coreboot.org
Sun Oct 28 21:09:08 CET 2012
Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1648
-gerrit
commit 562525ed1cfe0bab64520605d057fc4448a39d68
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date: Sun Oct 28 11:54:51 2012 +0200
Add APIC memory spaces
To be precise, the base addresses of APICs are actually configurable
in either PCI config space or an MSR. For now, this decodes at
the commonly used and fixed base address for both IOAPIC and LAPIC.
For LAPIC, Startup-IPI is replaced with INIT IPI to prevent AP CPUs
from attempting to execute code from Flash.
Change-Id: Icdbb8cd460bba440b466860f7e92f8a83cdb9d00
Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
SerialICE/simba/mmio.lua | 40 ++++++++++++++++++++++++++++++++++++++++
SerialICE/simba/serialice.lua | 3 +++
2 files changed, 43 insertions(+)
diff --git a/SerialICE/simba/mmio.lua b/SerialICE/simba/mmio.lua
new file mode 100644
index 0000000..695315f
--- /dev/null
+++ b/SerialICE/simba/mmio.lua
@@ -0,0 +1,40 @@
+
+-- **********************************************************
+--
+-- Vendor independent X86 memory mapped IO
+
+-- Local APIC
+-- We should avoid that someone wakes up cores
+-- on the target system that go wild.
+function mem_lapic(f, action)
+ if bit32.band(action.addr, f.size-1) == 0x300 then
+ -- replace Start-Up IPI with Init IPI
+ if action.write and bit32.band(action.data, 0xf0f00) == 0xc0600 then
+ return fake_action(f, action, 0xc0500)
+ end
+ end
+ return handle_action(f, action)
+end
+
+filter_lapic = {
+ id = -1,
+ name = "LAPIC",
+ pre = mem_lapic,
+ post = mem_base_post,
+ hide = true,
+ base = 0xfee00000,
+ size = 0x00010000,
+}
+
+-- IOAPIC
+filter_ioapic = {
+ id = -1,
+ name = "IOAPIC",
+ pre = mem_target_only,
+ post = mem_base_post,
+ hide = true,
+ base = 0xfec00000,
+ size = 0x00010000,
+}
+
+
diff --git a/SerialICE/simba/serialice.lua b/SerialICE/simba/serialice.lua
index 3700589..08625d6 100644
--- a/SerialICE/simba/serialice.lua
+++ b/SerialICE/simba/serialice.lua
@@ -64,6 +64,7 @@ dofile("cpu.lua")
dofile("pci_cfg.lua")
dofile("pc80.lua")
dofile("superio.lua")
+dofile("mmio.lua")
function do_minimal_setup()
enable_hook(io_hooks, filter_io_fallback)
@@ -76,6 +77,8 @@ end
function do_default_setup()
enable_ram()
+ enable_hook(mem_hooks, filter_lapic)
+ enable_hook(mem_hooks, filter_ioapic)
enable_hook(io_hooks, filter_pci_io_cfg)
enable_hook_pc80()
enable_hook_superio(0x2e, DEFAULT_SUPERIO_LDN_REGISTER)
More information about the SerialICE
mailing list