-
Notifications
You must be signed in to change notification settings - Fork 6.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nested interrupt test is broken for RISC-V #23593
Comments
I did a quick analysis on this and the following is what I found:
|
It seems the RISC-V arch port (in particular, After experimenting with the Machine Timer Interrupt (MTI) and Machine Software Interrupt (MSI) -- triggering MSI from the MTI ISR, I can confirm that preemption is not happening. At this point, this is not simply that the test is broken; interrupt nesting is simply not supported on the current RISC-V arch port. Could RISC-V arch maintainers confirm/comment? (cc @npitre @kgugala @pgielda @nategraff-sifive) |
This commit disables the nested interrupt test for the RISC-V platform, as interrupt nesting is not supported on the current RISV-C architecture port. Furthermore, the current `trigger_irq` implementation for RISC-V is mostly incorrect and cannot be used, so there is no point in leaving that in the codebase (see zephyrproject-rtos#23593). Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This commit disables the nested interrupt test for the RISC-V platform, as interrupt nesting is not supported on the current RISV-C architecture port. Furthermore, the current `trigger_irq` implementation for RISC-V is mostly incorrect and cannot be used, so there is no point in leaving that in the codebase (see #23593). Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
Is just disabling the test the resolution? Does the RISC-V port not support interrupt nesting at all or might weird things happen if an interrupt happens during an interrupt? |
@karstenkoenig #23593 (comment) As far as I can see, the RISC-V arch port does not support interrupt nesting and, even if it does, there is currently no viable way of testing it in software because CLINT does not support priority-based nested interrupts and PLIC does not support generating interrupts from software (and that is pretty much all we have in terms of interrupt handling in |
Ok, thanks for clearing it up for me! |
This commit disables the nested interrupt test for the RISC-V platform, as interrupt nesting is not supported on the current RISV-C architecture port. Furthermore, the current `trigger_irq` implementation for RISC-V is mostly incorrect and cannot be used, so there is no point in leaving that in the codebase (see zephyrproject-rtos#23593). Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
Describe the bug
The
test_nested_isr
test intests/kernel/interrupt
does not execute the designated interrupt service routine onqemu_riscv32
andqemu_risv64
.To Reproduce
Run the aforementioned test on
qemu_riscv32
orqemu_riscv64
Expected behavior
We should see the messages printed by the ISRs, like below (from
qemu_cortex_m3
):Screenshots or console output
The following output from
qemu_riscv32
suggests that the designated ISRs are not being executed at all.Environment (please complete the following information):
Additional context
The test should not succeed, but it does due to a bad design; I am planning to rework this test.
The text was updated successfully, but these errors were encountered: