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 <tomasz.bursztyka@linux.intel.com>
This commit is contained in:
Tomasz Bursztyka 2021-03-18 14:29:40 +01:00 committed by Carles Cufí
commit c76651b9ab
3 changed files with 6 additions and 5 deletions

View file

@ -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);

View file

@ -16,6 +16,7 @@
#include <kernel_arch_func.h>
#include <device.h>
#include <drivers/pcie/msi.h>
#include <drivers/interrupt_controller/sysapic.h>
#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;
}

View file

@ -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 */