Loading...
iokit/Kernel/IOInterruptController.cpp xnu-7195.121.3 xnu-6153.41.3
--- xnu/xnu-7195.121.3/iokit/Kernel/IOInterruptController.cpp
+++ xnu/xnu-6153.41.3/iokit/Kernel/IOInterruptController.cpp
@@ -43,9 +43,9 @@
 
 OSDefineMetaClassAndAbstractStructors(IOInterruptController, IOService);
 
-OSMetaClassDefineReservedUsedX86(IOInterruptController, 0);
-OSMetaClassDefineReservedUsedX86(IOInterruptController, 1);
-OSMetaClassDefineReservedUsedX86(IOInterruptController, 2);
+OSMetaClassDefineReservedUnused(IOInterruptController, 0);
+OSMetaClassDefineReservedUnused(IOInterruptController, 1);
+OSMetaClassDefineReservedUnused(IOInterruptController, 2);
 OSMetaClassDefineReservedUnused(IOInterruptController, 3);
 OSMetaClassDefineReservedUnused(IOInterruptController, 4);
 OSMetaClassDefineReservedUnused(IOInterruptController, 5);
@@ -317,15 +317,9 @@
 		}
 		if (vector->interruptDisabledHard) {
 			vector->interruptDisabledHard = 0;
-
-			// A DSB ISH on ARM is needed to make sure the vector data are
-			// properly initialized before the MMIO enabling the interrupts
-			// in hardware. OSMemoryBarrier(), which maps to DMB, is not
-			// sufficient here as the CPUs are not consumers of the device
-			// write. Hence, the DMB does not guarantee the CPUs won't see an
-			// interrupt before it initalizes the vector data properly.
-			OSSynchronizeIO();
-
+#if !defined(__i386__) && !defined(__x86_64__)
+			OSMemoryBarrier();
+#endif
 			enableVector(vectorNumber, vector);
 		}
 	}
@@ -432,21 +426,6 @@
 }
 
 void
-IOInterruptController::setCPUInterruptProperties(IOService */*service*/)
-{
-}
-
-void
-IOInterruptController::sendIPI(unsigned int /*cpu_id*/, bool /*deferred*/)
-{
-}
-
-void
-IOInterruptController::cancelDeferredIPI(unsigned int /*cpu_id*/)
-{
-}
-
-void
 IOInterruptController::timeStampSpuriousInterrupt(void)
 {
 	uint64_t providerID = 0;
@@ -479,17 +458,11 @@
 
 
 	if (isStart) {
-#if INTERRUPT_MASKED_DEBUG
-		ml_irq_debug_start((uintptr_t)vector->handler, (uintptr_t)vector);
-#endif
 		IOTimeStampStartConstant(IODBG_INTC(IOINTC_HANDLER), (uintptr_t)vectorNumber, (uintptr_t)unslidHandler,
 		    (uintptr_t)unslidTarget, (uintptr_t)providerID);
 	} else {
 		IOTimeStampEndConstant(IODBG_INTC(IOINTC_HANDLER), (uintptr_t)vectorNumber, (uintptr_t)unslidHandler,
 		    (uintptr_t)unslidTarget, (uintptr_t)providerID);
-#if INTERRUPT_MASKED_DEBUG
-		ml_irq_debug_end();
-#endif
 	}
 }