From 3b145c0d4b03bf736cd8cf184d0415678f6b11da Mon Sep 17 00:00:00 2001 From: "Charles E. Youse" Date: Mon, 30 Sep 2019 13:41:44 -0400 Subject: [PATCH] arch/x86: (Intel64) do not lock interrupts around irq_offload() This is the Wrong Thing(tm) with SMP enabled. Previously this worked because interrupts would be re-enabled in the interrupt entry sequence, but this is no longer the case. Signed-off-by: Charles E. Youse --- arch/x86/core/intel64/irq.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/arch/x86/core/intel64/irq.c b/arch/x86/core/intel64/irq.c index 5847e15ee91..f4293512663 100644 --- a/arch/x86/core/intel64/irq.c +++ b/arch/x86/core/intel64/irq.c @@ -92,15 +92,11 @@ int z_arch_irq_connect_dynamic(unsigned int irq, unsigned int priority, void z_arch_irq_offload(irq_offload_routine_t routine, void *parameter) { - u32_t key; - - key = irq_lock(); x86_irq_funcs[CONFIG_IRQ_OFFLOAD_VECTOR - IV_IRQS] = routine; x86_irq_args[CONFIG_IRQ_OFFLOAD_VECTOR - IV_IRQS] = parameter; __asm__ volatile("int %0" : : "i" (CONFIG_IRQ_OFFLOAD_VECTOR) : "memory"); x86_irq_funcs[CONFIG_IRQ_OFFLOAD_VECTOR - IV_IRQS] = NULL; - irq_unlock(key); } #endif /* CONFIG_IRQ_OFFLOAD */