use circular ring for IPI messages#293
Conversation
|
Hello @giacomogroppi, thanks for this PR! I will be reviewing it in the coming weeks. We have been thinking about refactoring this code for a while, so the first thing I am thinking is to fully replacing the list-based message implementation with your circular queue, rather than keeping it as a compile-time option. That said, we need to weigh the pros and cons carefully before making a decision. |
6723e8a to
1cfef1f
Compare
|
I modified the implementation by removing the version that uses the list. As for the pros and cons of this implementation, I’ve just finished my master’s thesis and I only have an RPi 3B+ available; if there’s anything I can do to help you, let me know! |
|
Greetings @giacomogroppi Taking a closer look at this, I'm getting a few errors when trying to compile for qemu-aarch64-virt using Arm GNU Toolchain 14.2.Rel1. Please let me know your setup for successful compilation. Thanks! |
|
I build it using export CROSS_COMPILE=aarch64-none-elf-
make PLATFORM=qemu-aarch64-virt DEMO=baremetal runRight now I'm using Can I ask what setup you're using? |
|
My setup is based on the bao-demos, and I'm using If you can rebase this with main I believe I can run the CI build tests on this PR |
|
There you go. Sorry to keep you waiting. |
a41fca4 to
9d8e94b
Compare
|
Greetings @giacomogroppi! Thank you for the update, but the build is still failing and unfortunately we don't have the bandwidth to dig into this right now. |
|
Hi, I think I've managed to fix the build. I'm not too keen on having to pass a pointer to the macro just to check whether the operation was successful or not, so if you have any other ideas, let me know. |
|
Looks like the builds are fixed! Great!
Instead of macros it's better to use |
|
ok, i'll update the code in the next days, thank you |
|
Hi! I've made the changes we discussed by converting some macros into static functions. I look forward to hearing back from you. |
Static allocation of messages via a circular queue still allows message delivery in FIFO order and reduces latency, since it does not use dynamic memory.
To enable this functionality, you need to set the
IPI_STATIC_MEMdefine