]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - arch/x86/include/asm/apic.h
Merge branches 'pm-core', 'pm-qos', 'pm-domains' and 'pm-opp'
[linux.git] / arch / x86 / include / asm / apic.h
index 124357773ffade4a78766e3cd021d928fa4f5866..eff8e36aaf72083f9e7a3b53ca6783eebaa6276e 100644 (file)
@@ -11,7 +11,6 @@
 #include <asm/fixmap.h>
 #include <asm/mpspec.h>
 #include <asm/msr.h>
-#include <asm/idle.h>
 
 #define ARCH_APICTIMER_STOPS_ON_C3     1
 
@@ -196,7 +195,7 @@ static inline void native_apic_msr_write(u32 reg, u32 v)
 
 static inline void native_apic_msr_eoi_write(u32 reg, u32 v)
 {
-       wrmsr(APIC_BASE_MSR + (APIC_EOI >> 4), APIC_EOI_ACK, 0);
+       __wrmsr(APIC_BASE_MSR + (APIC_EOI >> 4), APIC_EOI_ACK, 0);
 }
 
 static inline u32 native_apic_msr_read(u32 reg)
@@ -332,6 +331,7 @@ struct apic {
         * on write for EOI.
         */
        void (*eoi_write)(u32 reg, u32 v);
+       void (*native_eoi_write)(u32 reg, u32 v);
        u64 (*icr_read)(void);
        void (*icr_write)(u32 low, u32 high);
        void (*wait_icr_idle)(void);
@@ -639,7 +639,6 @@ extern void irq_exit(void);
 static inline void entering_irq(void)
 {
        irq_enter();
-       exit_idle();
 }
 
 static inline void entering_ack_irq(void)
@@ -650,8 +649,8 @@ static inline void entering_ack_irq(void)
 
 static inline void ipi_entering_ack_irq(void)
 {
-       ack_APIC_irq();
        irq_enter();
+       ack_APIC_irq();
 }
 
 static inline void exiting_irq(void)
@@ -661,9 +660,8 @@ static inline void exiting_irq(void)
 
 static inline void exiting_ack_irq(void)
 {
-       irq_exit();
-       /* Ack only at the end to avoid potential reentry */
        ack_APIC_irq();
+       irq_exit();
 }
 
 extern void ioapic_zap_locks(void);