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>
7 lines
105 B
YAML
7 lines
105 B
YAML
tests:
|
|
kernel.smp_abort:
|
|
tags:
|
|
- kernel
|
|
- smp
|
|
filter: (CONFIG_MP_MAX_NUM_CPUS > 1)
|