I'm looking for a Risc-V Linux that supports SMP and at least successfully boots to ash (busybox). I'm aware that the Risc-V Linux Port is currently in the process of being upstreamed (see Palmer Dabbelt - RISC-V Linux Port v9). Reading the change highlights, SMP and atomics have undergone significant changes (multiple defect fixes).
I'm targeting the following versions of rocket chip. Ultimately,
the goal is to have a multicore Rocket and a multicore Boom
deployed to FPGA (Xilinx Zc706).
freechipsproject/rocket-chip@master (privileged specification 1.10)
ucb-bar/fpga-zynq@7581d21 -> rocket-chip@cf75c20 (privileged
specification 1.10?)
https://github.com/donggyukim/fpga-zynq/tree/boom ->
rocket-chip@d8379e2 (privileged specification 1.09?)
On rocket-chip@cf75c20 I have riscv/riscv...@riscv-4.12-v7
running without SMP on the FPGA (quadcore rocket). It works.
Compiling with SMP option and using spike -p4 also boots
successfully. Unfortunately, the kernel hangs on the fpga when
initializing the other CPUs:
[ 0.000000] Mount-cache hash table entries: 512 (order: 0, 4096
bytes)
[ 0.000000] Mountpoint-cache hash table entries: 512 (order: 0,
4096 bytes)
[ 0.000000] smp: Bringing up secondary CPUs ...
Then I tried riscv/riscv-linux@riscv-for-submission-v9 with spike -p4. Despite configuring initramfs.txt, no shell or error ever appears?! It looks like some parts are missing, i.e., its very bare bones?
Beyond, I've recently come across sifive/freedom-u-sdk@new and riscv/riscv...@priv-1.10. I have yet to test these.
Thus, any suggestions for a working Risc-V Linux with SMP for
Rocket? Thanks in advance!
--
You received this message because you are subscribed to the Google Groups "RISC-V SW Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sw-dev+unsubscribe@groups.riscv.org.
To post to this group, send email to sw-...@groups.riscv.org.
Visit this group at https://groups.google.com/a/groups.riscv.org/group/sw-dev/.
To view this discussion on the web visit https://groups.google.com/a/groups.riscv.org/d/msgid/sw-dev/de49c2c6-3908-473e-bb6b-3c5ac9ec86b8%40groups.riscv.org.
I've now tested RISC-V Poky. I integrated your pull request, as seemed appropriate John, for priv 1.10.
Specifically, I tested
riscv/riscv...@priv-1.10 with CONFIG_SMP=y and
CONFIG_NR_CPUS=8. This leads to a successful SMP boot on spike (SPIKE_ARGS=-p4 runspike riscv64, check attachment 'spike').
Sadly, the FPGA begs to differ (rocket-chip@cf75c20, see attachment 'FPGA'). Ultimately, it yet again stops at "[ 0.000000] smp: Bringing up secondary CPUs ...".
Maybe rocket-chip@cf75c20 is priv-1.09 and I'm mistaken in it being 1.10? I'll try the priv-1.09 branch and report back...
riscv/riscv-poky @ master / priv-1.09 both do not build? I assume maintenance has shifted towards priv-1.10.
Obviously, SMP is working for Spike. Yet, it isn't working for my deployment of RocketChip(@cf75c20) on Fpga. So either a) I'm being impacted by the SMP defects discussed in the upstreaming process during v3/v4/v5 (likely, these are probably missing in the above versions) or b) a privileged specification mismatch between software and hardware or c) my rocket configuration is incorrect?