arch/x86: Make irq_offload SMP-safe on x86_64
The irq_offload mechanism was using the same entry of the IDT vector for all CPUs on SMP systems. This caused race conditions when two CPUs were doing irq_offload() calls. This patch addresses that by adding one indirection layer: the irq_offload() now sets a per CPU entry with the routine and parameter to be run. Then a software interrupt is generated, and a default handler will do the appropriate dispatching. Finally, test "kernel/smp_abort" is enabled for x86 as it should work now. Fixes #72172. Signed-off-by: Ederson de Souza <ederson.desouza@intel.com>
This commit is contained in:
parent
af63e488f0
commit
7f0b5edd8c
2 changed files with 29 additions and 4 deletions
|
@ -1,6 +1,5 @@
|
|||
tests:
|
||||
kernel.smp_abort:
|
||||
arch_exclude: x86 # Buggy irq_offload(), see #71172
|
||||
tags:
|
||||
- kernel
|
||||
- smp
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue