-
Notifications
You must be signed in to change notification settings - Fork 6.7k
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 interrupts crash on Xtensa architecture #3400
Comments
by Mazen NEIFER: Can you please precise what do you mean by +the first few lines+? {code:none} |
by Andrew Boie: Mazen NEIFER who is your question directed to? |
by Andreas Lenz: There seem to be 10 to 15 critical CPU cycles but it's difficult to narrow down further. It will take some time to find out the precise range. |
by Andreas Lenz: It could not be reproduced after replacing the kernel logging call8 with call4 (two places). |
by Mazen NEIFER: I can understand that call4 may hide the issue, but not fix it. If this issue happen, this means that there are some issue somewhere in the code and that are triggered in special cases. This will soon or late happen ever with a call4. According to is_rm.pdf in the section describing call4 and call8, the only difference between the two is that call8 will save more registers. This is a caller decision and not a callee one, so my code can decide what registers to save depending on the need. I agree that a call8 is not strictly required here, but if it allows to see the issue we shall keep it until we fix that issue. Then later we may optimize and use call4. For now, I need to learn how to reproduce this issue. Can you please tell me which core are you using and which test/code? |
by Andreas Lenz: Mazen NEIFER the issue appeared in our test environment that uses level 2 test interrupts and level 1 timer interrupts. With certain settings, I could reproduce the crash 100%. With call4 it's gone for sure. It might be that it's just hidden but I can't reproduce it. If you need more details or you have any ideas to try out, please contact me in PM. |
by Mazen NEIFER: Thanks Andreas for the analysis you provided by mail. The issue was that the interrupt stack frame only The fix consists on using call4 for calling even t logger function, |
Reported by Andreas Lenz:
Nested interrupts cause crash when the second interrupt happens during the first few lines of "dispatch_c_isr" macro. The high level interrupt is handled fine but returning to the lower level interrupt causes crash.
Nested interrupts otherwise work fine if the second interrupt does not happen during those few lines.
This is the last working point before the crash:
And next thing to happen:
(Imported from Jira ZEP-1955)
The text was updated successfully, but these errors were encountered: