-
Notifications
You must be signed in to change notification settings - Fork 678
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
Cannot boot linux with RocketChip+Vector Config #2103
Comments
I think, the new load/store mechanic after adding vector causes this problem. |
I will investigate. This worked on a FPGA prototype, but likely firesim exposed some other bug |
I struggle to see how the kernel panic report would indicate any problem due to vectors... it reports a fetch page fault, and the vector support made no modifications to the frontend. I will attempt to reproduce |
Yes, it is strange.I also know there is no vector code in the kernal by default. |
HI, |
But when I try to add another recipe as follow: `running /etc/init.d/S10mdev Welcome to Buildroot cat /proc/cpuinfoprocessor : 0 ` |
Thanks for investigating. This points at a bug in the multi-clock handling (The difference between TestChipConfigTweaks and ConfigTweaks is that the "test chip" variant adds CDCs and simulates multi-clock in firesim). I suspect just a base Rocket with multi-clock will also fail. I can investigate this specifically. |
It looks like the default rational crossing direction for Rocket's Rational CDCs did not match the clocking configuration in TestChipConfigTweaks. This PR changes the default Rocket RationalCrossing to support both fast-to-slow and slow-to-fast directions: chipsalliance/rocket-chip#3693 Alternatively, you can change WithTestChipConfigTweaks to add async CDCs to the RocketTiles. |
Ok , I will try it. |
Yes. Everything works fine. poweroffStopping network: OKStopping mdev: stopped process in pidfile '/var/run/mdev.pid' (pid 80) I just replace "WithRationalCDCs" with "WithAsynchronousCDCs(depth=8, sync=3)" But anyway , by now we have workable version with Rocket+Vector and Clock Crossing(Rational) . I think , clock crossing in ASIC design version is a must-be, although in firesim ,all clock input are connected to one host clock. |
@jerryz123, yes I tried on VCU118 and it works : Bitstream generated + Linux booted. |
Background Work
Chipyard Version and Hash
Release: 1.13.0
Hash: 86ec78
OS Setup
Ex: Output of
uname -a
+lsb_release -a
+printenv
+conda list
Linux i7700 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
LSB Version: core-11.1.0ubuntu2-noarch:printing-11.1.0ubuntu2-noarch:security-11.1.0ubuntu2-noarch
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
Other Setup
Ex: Prior steps taken / Documentation Followed / etc...
Current Behavior
I added "new saturn.rocket.WithRocketVectorUnit(256, 64, VectorParams.refParams) ++" in FireSimRocketConfig and build bit stream and linux(Firemarshal comes with this Chipyard version) follwing guide from firesim.When I try to boot Linux kernal,It pacnic.
When I reverse FireSimRocketConfig back , and everything works fine with the same Linux kernal.
Expected Behavior
Boot Linux correctly with rocket vector added.
Other Information
`
[ 26.138205] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[ 26.159213] Oops [#1]
[ 26.164645] Modules linked in:
[ 26.171809] CPU: 0 PID: 20 Comm: kworker/u2:1 Not tainted 6.6.0-00004-g67bc4513761f-dirty #32
[ 26.190212] Hardware name: ucb-bar,chipyard (DT)
[ 26.200331] Workqueue: events_unbound async_run_entry_fn
[ 26.212504] epc : 0x0
[ 26.217911] ra : __vm_enough_memory+0x2e/0x136
[ 26.228327] epc : 0000000000000000 ra : ffffffff801512b6 sp : ffffffc8001a38e0
[ 26.243939] gp : ffffffff852f26f8 tp : ffffffd880186c00 t0 : ffffffff84d6cd48
[ 26.259554] t1 : 0000000000000001 t2 : 0000000000000000 s0 : ffffffc8001a3920
[ 26.275144] s1 : 0000000000000001 a0 : ffffffff8532ac40 a1 : 0000000000000001
[ 26.290730] a2 : 000000000007b39f a3 : ffffffff85212b70 a4 : 8000000000000000
[ 26.306341] a5 : ffffffff85212b70 a6 : 0000000000000000 a7 : ffffffff85290c78
[ 26.321937] s2 : 0000000000000000 s3 : 0000000000000001 s4 : 0000000000000000
[ 26.337521] s5 : ffffffff852f22bc s6 : 0000000000000000 s7 : 0000000000000000
[ 26.353104] s8 : ffffffffffffffff s9 : 0000000000000003 s10: 0000000000000000
[ 26.368667] s11: 0000000000000fff t3 : ffffffffffffffff t4 : ffffffffffffffff
[ 26.384284] t5 : ffffffffffffffff t6 : 000000000000ffff
[ 26.395815] status: 0000000200000120 badaddr: 0000000000000000 cause: 000000000000000c
[ 26.412959] Code: Unable to access instruction at 0xffffffffffffffec.
[ 26.428124] ---[ end trace 0000000000000000 ]---
`
The text was updated successfully, but these errors were encountered: