Skip to content

RISCV32 smp support is broken #62

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

Open
d3zd3z opened this issue Feb 26, 2025 · 1 comment
Open

RISCV32 smp support is broken #62

d3zd3z opened this issue Feb 26, 2025 · 1 comment
Labels
bug Something isn't working

Comments

@d3zd3z
Copy link
Collaborator

d3zd3z commented Feb 26, 2025

CI tests on RISCV32 smp targest suggests synchronization/locking issues. The two issues seen are:

  • A deadlock on the first call to printk, suggesting an incompatibility with with the critical section on the rust side, and the spin locks on the Zephyr side. This is a little surprising, since the critical section should be using spin locks directly.
  • Multi-thread tests have failures that suggest conflicting access to shared data, which also suggests that the critical section implementation (or the SpinMutex implementation) isn't working.
@d3zd3z d3zd3z added the bug Something isn't working label Feb 26, 2025
@d3zd3z
Copy link
Collaborator Author

d3zd3z commented Mar 14, 2025

I have fixed the use of spinlocks for critical sections, and switched to irq_lock()/irq_unlock(). However, I still seem to be seeing failures on this. I'm actually getting now what appears to be a corruption that is happening the first time k_thread_resume is being called from Rust. There are various interactions between spinlocks and the irq_lock, so something is probably happening there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant