[PATCH 01/12] Read APIC version from APIC instead of using a hard-coded value.

Magnus Christensson mch at virtutech.com
Mon Nov 23 14:01:19 CET 2009


Signed-off-by: Magnus Christensson <mch at virtutech.com>
---
 src/mptable.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/mptable.c b/src/mptable.c
index f65bbeb..5357c03 100644
--- a/src/mptable.c
+++ b/src/mptable.c
@@ -36,6 +36,7 @@ mptable_init(void)
     // Detect cpu info
     u32 cpuid_signature, ebx, ecx, cpuid_features;
     cpuid(1, &cpuid_signature, &ebx, &ecx, &cpuid_features);
+    u8 apic_version = readl((u8*)BUILD_APIC_ADDR + 0x30) & 0xff;
     int pkgcpus = 1;
     if (cpuid_features & (1 << 28)) {
         /* Only populate the MPS tables with the first logical CPU in
@@ -51,7 +52,7 @@ mptable_init(void)
         memset(cpu, 0, sizeof(*cpu));
         cpu->type = MPT_TYPE_CPU;
         cpu->apicid = i;
-        cpu->apicver = 0x11;
+        cpu->apicver = apic_version;
         /* cpu flags: enabled, bootstrap cpu */
         cpu->cpuflag = (i < CountCPUs) | ((i == 0) << 1);
         if (cpuid_signature) {
-- 
1.6.2.5


--------------020907050102080101050605--



More information about the SeaBIOS mailing list