|
@@ -6,6 +6,7 @@
|
|
#include <asm/processor.h>
|
|
#include <asm/processor.h>
|
|
#include <asm/apic.h>
|
|
#include <asm/apic.h>
|
|
#include <asm/cpu.h>
|
|
#include <asm/cpu.h>
|
|
|
|
+#include <asm/pci-direct.h>
|
|
|
|
|
|
#ifdef CONFIG_X86_64
|
|
#ifdef CONFIG_X86_64
|
|
# include <asm/numa_64.h>
|
|
# include <asm/numa_64.h>
|
|
@@ -351,6 +352,15 @@ static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
|
|
(c->x86_model == 8 && c->x86_mask >= 8))
|
|
(c->x86_model == 8 && c->x86_mask >= 8))
|
|
set_cpu_cap(c, X86_FEATURE_K6_MTRR);
|
|
set_cpu_cap(c, X86_FEATURE_K6_MTRR);
|
|
#endif
|
|
#endif
|
|
|
|
+#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_PCI)
|
|
|
|
+ /* check CPU config space for extended APIC ID */
|
|
|
|
+ if (c->x86 >= 0xf) {
|
|
|
|
+ unsigned int val;
|
|
|
|
+ val = read_pci_config(0, 24, 0, 0x68);
|
|
|
|
+ if ((val & ((1 << 17) | (1 << 18))) == ((1 << 17) | (1 << 18)))
|
|
|
|
+ set_cpu_cap(c, X86_FEATURE_EXTD_APICID);
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
static void __cpuinit init_amd(struct cpuinfo_x86 *c)
|
|
static void __cpuinit init_amd(struct cpuinfo_x86 *c)
|