]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/x86/kernel/apic/apic.c
apic: add apic_set_eoi_write for PV use
[karo-tx-linux.git] / arch / x86 / kernel / apic / apic.c
index 39a222e094af0b1ac3c0904a9c977be9b2a95795..c7520b6184efbbe3f09d60cfa95e552d1969da43 100644 (file)
@@ -2123,6 +2123,23 @@ void default_init_apic_ldr(void)
        apic_write(APIC_LDR, val);
 }
 
+/*
+ * Override the generic EOI implementation with an optimized version.
+ * Only called during early boot when only one CPU is active and with
+ * interrupts disabled, so we know this does not race with actual APIC driver
+ * use.
+ */
+void __init apic_set_eoi_write(void (*eoi_write)(u32 reg, u32 v))
+{
+       struct apic **drv;
+
+       for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) {
+               /* Should happen once for each apic */
+               WARN_ON((*drv)->eoi_write == eoi_write);
+               (*drv)->eoi_write = eoi_write;
+       }
+}
+
 /*
  * Power management
  */