From c76651b9ab496e6b5b76e1caaa401901ffdc14f0 Mon Sep 17 00:00:00 2001 From: Tomasz Bursztyka Date: Thu, 18 Mar 2021 14:29:40 +0100 Subject: [PATCH] arch/x86: Do not call irq controller on dedicated irq/vector function MSI/MSI-x interrupt do not need any interrupt controller handling (ioapic/loapic). Signed-off-by: Tomasz Bursztyka --- arch/x86/core/intel64/irq.c | 6 +++--- arch/x86/core/pcie.c | 3 ++- arch/x86/include/kernel_arch_func.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/arch/x86/core/intel64/irq.c b/arch/x86/core/intel64/irq.c index 2c8c86a4380..e3df9194029 100644 --- a/arch/x86/core/intel64/irq.c +++ b/arch/x86/core/intel64/irq.c @@ -83,10 +83,9 @@ int z_x86_allocate_vector(unsigned int priority, int prev_vector) void z_x86_irq_connect_on_vector(unsigned int irq, uint8_t vector, void (*func)(const void *arg), - const void *arg, uint32_t flags) + const void *arg) { _irq_to_interrupt_vector[irq] = vector; - z_irq_controller_irq_config(vector, irq, flags); x86_irq_funcs[vector - IV_IRQS] = func; x86_irq_args[vector - IV_IRQS] = arg; } @@ -110,7 +109,8 @@ int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority, vector = z_x86_allocate_vector(priority, -1); if (vector >= 0) { - z_x86_irq_connect_on_vector(irq, vector, func, arg, flags); + z_irq_controller_irq_config(vector, irq, flags); + z_x86_irq_connect_on_vector(irq, vector, func, arg); } irq_unlock(key); diff --git a/arch/x86/core/pcie.c b/arch/x86/core/pcie.c index e965bb2abb4..5dde03286a5 100644 --- a/arch/x86/core/pcie.c +++ b/arch/x86/core/pcie.c @@ -16,6 +16,7 @@ #include #include #include +#include #endif /* PCI Express Extended Configuration Mechanism (MMIO) */ @@ -309,7 +310,7 @@ bool arch_pcie_msi_vector_connect(msi_vector_t *vector, #endif /* CONFIG_INTEL_VTD_ICTL */ z_x86_irq_connect_on_vector(vector->arch.irq, vector->arch.vector, - routine, parameter, flags); + routine, parameter); return true; } diff --git a/arch/x86/include/kernel_arch_func.h b/arch/x86/include/kernel_arch_func.h index a0919e61e3e..423ef4d61fa 100644 --- a/arch/x86/include/kernel_arch_func.h +++ b/arch/x86/include/kernel_arch_func.h @@ -106,7 +106,7 @@ int z_x86_allocate_vector(unsigned int priority, int prev_vector); void z_x86_irq_connect_on_vector(unsigned int irq, uint8_t vector, void (*func)(const void *arg), - const void *arg, uint32_t flags); + const void *arg); #endif /* !_ASMLANGUAGE */