diff options
author | Weidong Han <weidong.han@intel.com> | 2009-04-17 04:42:14 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-19 04:21:43 -0400 |
commit | 937582382c71b75b29fbb92615629494e1a05ac0 (patch) | |
tree | e73af8d10d388fcc78d19534611db66233907a9e /arch/x86/include/asm/apic.h | |
parent | 5d0ae2db6deac4f15dac4f42f23bc56448fc8d4d (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.h | 7 |
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) | |||
169 | extern int x2apic, x2apic_phys; | 169 | extern int x2apic, x2apic_phys; |
170 | extern void check_x2apic(void); | 170 | extern void check_x2apic(void); |
171 | extern void enable_x2apic(void); | 171 | extern void enable_x2apic(void); |
172 | extern void enable_IR_x2apic(void); | ||
173 | extern void x2apic_icr_write(u32 low, u32 id); | 172 | extern void x2apic_icr_write(u32 low, u32 id); |
174 | static inline int x2apic_enabled(void) | 173 | static inline int x2apic_enabled(void) |
175 | { | 174 | { |
@@ -190,18 +189,18 @@ static inline void check_x2apic(void) | |||
190 | static inline void enable_x2apic(void) | 189 | static inline void enable_x2apic(void) |
191 | { | 190 | { |
192 | } | 191 | } |
193 | static inline void enable_IR_x2apic(void) | ||
194 | { | ||
195 | } | ||
196 | static inline int x2apic_enabled(void) | 192 | static 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 | ||
202 | extern void enable_IR_x2apic(void); | ||
203 | |||
205 | extern int get_physical_broadcast(void); | 204 | extern int get_physical_broadcast(void); |
206 | 205 | ||
207 | extern void apic_disable(void); | 206 | extern void apic_disable(void); |