aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/apic.h
diff options
context:
space:
mode:
authorWeidong Han <weidong.han@intel.com>2009-04-17 04:42:14 -0400
committerIngo Molnar <mingo@elte.hu>2009-04-19 04:21:43 -0400
commit937582382c71b75b29fbb92615629494e1a05ac0 (patch)
treee73af8d10d388fcc78d19534611db66233907a9e /arch/x86/include/asm/apic.h
parent5d0ae2db6deac4f15dac4f42f23bc56448fc8d4d (diff)
x86, intr-remap: enable interrupt remapping early
Currently, when x2apic is not enabled, interrupt remapping will be enabled in init_dmars(), where it is too late to remap ioapic interrupts, that is, ioapic interrupts are really in compatibility mode, not remappable mode. This patch always enables interrupt remapping before ioapic setup, it guarantees all interrupts will be remapped when interrupt remapping is enabled. Thus it doesn't need to set the compatibility interrupt bit. [ Impact: refactor intr-remap init sequence, enable fuller remap mode ] Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: Weidong Han <weidong.han@intel.com> Acked-by: David Woodhouse <David.Woodhouse@intel.com> Cc: iommu@lists.linux-foundation.org Cc: allen.m.kay@intel.com Cc: fenghua.yu@intel.com LKML-Reference: <1239957736-6161-4-git-send-email-weidong.han@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/apic.h')
-rw-r--r--arch/x86/include/asm/apic.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index d4cb7e590c06..fbdd65446c7a 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -169,7 +169,6 @@ static inline u64 native_x2apic_icr_read(void)
169extern int x2apic, x2apic_phys; 169extern int x2apic, x2apic_phys;
170extern void check_x2apic(void); 170extern void check_x2apic(void);
171extern void enable_x2apic(void); 171extern void enable_x2apic(void);
172extern void enable_IR_x2apic(void);
173extern void x2apic_icr_write(u32 low, u32 id); 172extern void x2apic_icr_write(u32 low, u32 id);
174static inline int x2apic_enabled(void) 173static inline int x2apic_enabled(void)
175{ 174{
@@ -190,18 +189,18 @@ static inline void check_x2apic(void)
190static inline void enable_x2apic(void) 189static inline void enable_x2apic(void)
191{ 190{
192} 191}
193static inline void enable_IR_x2apic(void)
194{
195}
196static inline int x2apic_enabled(void) 192static inline int x2apic_enabled(void)
197{ 193{
198 return 0; 194 return 0;
199} 195}
200 196
201#define x2apic 0 197#define x2apic 0
198#define x2apic_preenabled 0
202 199
203#endif 200#endif
204 201
202extern void enable_IR_x2apic(void);
203
205extern int get_physical_broadcast(void); 204extern int get_physical_broadcast(void);
206 205
207extern void apic_disable(void); 206extern void apic_disable(void);