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:
parent
dacae94761
commit
c76651b9ab
3 changed files with 6 additions and 5 deletions
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue