arch/x86: Implementing ARCH_PCIE_IRQ_CONNECT for ia32 and intel64
While this does not change anything for ia32, this is fixing the chicken & egg issue on intel64 if (and only if) interrupt remapping is enabled so pcie_connect_dynamic_irq() is to be called properly. Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
This commit is contained in:
parent
b5ad9739df
commit
5b3d94510c
2 changed files with 19 additions and 0 deletions
|
@ -225,6 +225,14 @@ typedef struct s_isrList {
|
||||||
(flags_p)); \
|
(flags_p)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PCIE
|
||||||
|
|
||||||
|
#define ARCH_PCIE_IRQ_CONNECT(bdf_p, irq_p, priority_p, \
|
||||||
|
isr_p, isr_param_p, flags_p) \
|
||||||
|
ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p)
|
||||||
|
|
||||||
|
#endif /* CONFIG_PCIE */
|
||||||
|
|
||||||
/* Direct interrupts won't work as expected with KPTI turned on, because
|
/* Direct interrupts won't work as expected with KPTI turned on, because
|
||||||
* all non-user accessible pages in the page table are marked non-present.
|
* all non-user accessible pages in the page table are marked non-present.
|
||||||
* It's likely possible to add logic to ARCH_ISR_DIRECT_HEADER/FOOTER to do
|
* It's likely possible to add logic to ARCH_ISR_DIRECT_HEADER/FOOTER to do
|
||||||
|
|
|
@ -133,6 +133,17 @@ struct x86_ssf {
|
||||||
(void (*)(const void *))isr_p, \
|
(void (*)(const void *))isr_p, \
|
||||||
isr_param_p, flags_p)
|
isr_param_p, flags_p)
|
||||||
|
|
||||||
|
#ifdef CONFIG_PCIE
|
||||||
|
|
||||||
|
#define ARCH_PCIE_IRQ_CONNECT(bdf_p, irq_p, priority_p, \
|
||||||
|
isr_p, isr_param_p, flags_p) \
|
||||||
|
X86_RESERVE_IRQ(irq_p, _CONCAT(_irq_alloc_fixed, __COUNTER__)); \
|
||||||
|
pcie_connect_dynamic_irq(bdf_p, irq_p, priority_p, \
|
||||||
|
(void (*)(const void *))isr_p, \
|
||||||
|
isr_param_p, flags_p)
|
||||||
|
|
||||||
|
#endif /* CONFIG_PCIE */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Thread object needs to be 16-byte aligned.
|
* Thread object needs to be 16-byte aligned.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue