]>
Commit | Line | Data |
---|---|---|
00e5a55c BS |
1 | From: Yinghai Lu <yhlu.kernel@gmail.com> |
2 | Subject: x2apic: fix reserved APIC register accesses in print_local_APIC() | |
3 | References: fate #303948 and fate #303984 | |
4 | Patch-Mainline: queued for .28 | |
5 | Commit-ID: 2c72d93f6593f386f5760ca8e7ac7026948c31d7 | |
6 | ||
7 | Signed-off-by: Thomas Renninger <trenn@suse.de> | |
8 | ||
9 | APIC_ARBPRI is a reserved register for XAPIC and beyond. | |
10 | APIC_RRR is a reserved register except for 82489DX, APIC for Pentium processors. | |
11 | APIC_EOI is a write only register. | |
12 | APIC_DFR is reserved in x2apic mode. | |
13 | ||
14 | Access to these registers in x2apic will result in #GP fault. Fix these | |
15 | apic register accesses. | |
16 | ||
17 | Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> | |
18 | Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> | |
19 | Cc: Maciej W. Rozycki <macro@linux-mips.org> | |
20 | Signed-off-by: Ingo Molnar <mingo@elte.hu> | |
21 | ||
22 | --- | |
23 | arch/x86/kernel/io_apic_32.c | 8 +++++--- | |
24 | 1 file changed, 5 insertions(+), 3 deletions(-) | |
25 | ||
26 | Index: linux-2.6.26/arch/x86/kernel/io_apic_32.c | |
27 | =================================================================== | |
28 | --- linux-2.6.26.orig/arch/x86/kernel/io_apic_32.c | |
29 | +++ linux-2.6.26/arch/x86/kernel/io_apic_32.c | |
30 | @@ -1500,9 +1500,11 @@ void /*__init*/ print_local_APIC(void *d | |
31 | printk(KERN_DEBUG "... APIC TASKPRI: %08x (%02x)\n", v, v & APIC_TPRI_MASK); | |
32 | ||
33 | if (APIC_INTEGRATED(ver)) { /* !82489DX */ | |
34 | - v = apic_read(APIC_ARBPRI); | |
35 | - printk(KERN_DEBUG "... APIC ARBPRI: %08x (%02x)\n", v, | |
36 | - v & APIC_ARBPRI_MASK); | |
37 | + if (!APIC_XAPIC(ver)) { | |
38 | + v = apic_read(APIC_ARBPRI); | |
39 | + printk(KERN_DEBUG "... APIC ARBPRI: %08x (%02x)\n", v, | |
40 | + v & APIC_ARBPRI_MASK); | |
41 | + } | |
42 | v = apic_read(APIC_PROCPRI); | |
43 | printk(KERN_DEBUG "... APIC PROCPRI: %08x\n", v); | |
44 | } |