Firemarshal: Booting linux w/o FPU

214 views
Skip to first unread message

Brendon Chetwynd

unread,
Jul 22, 2022, 2:46:33 PM7/22/22
to Chipyard
I have a chipyard build running on the Arty100T w/o an FPU.   Bare metal code works fine, but I am trying create a firemarshal busybox distro that will boot correctly.

I have made the following changes to firemarshal config:
- Modify `<REPO_ROOT/software/firemarshal/boards/prototype/base-workloads/br-base/linux-config` and add `CONFIG_FPU=n`
-  Modify `<REPO_ROOT>/software/firemarshal/boards/prototype/base-workloads/br-base/buildroot-config` and add `BR2_RISCV_ISA_RVF=n`

I think the kernel is fine, but busybox is not... and thus causes a kernel panic when init is run.

Partial log follows:

[   14.165181] 9pnet: Installing 9P2000 support
[   14.171350] Key type dns_resolver registered
[   14.511145] Freeing unused kernel memory: 6352K
[   14.517356] Run /init as init process
[   14.591540] init[1]: unhandled signal 4 code 0x1 at 0x0000003ff0bf1a9c in ld-2.29.so[3ff0be1000+17000]
[   14.602938] CPU: 0 PID: 1 Comm: init Not tainted 5.7.0-rc3-58539-g5f5fd87b36e2 #3
[   14.611056] epc: 0000003ff0bf1a9c ra : 0000003ff0bf0be2 sp : 0000003fffa0f480
[   14.618586]  gp : 0000000000000000 tp : 0000000000000000 t0 : 0000000000000003
[   14.626179]  t1 : 0000003ff0be1e6c t2 : 000000006fffffff s0 : 0000000000000000
[   14.633761]  s1 : 0000003fffa0f620 a0 : 0000003fffa0f4b8 a1 : 0000000000000000
[   14.641320]  a2 : 0000003fffa0f6c8 a3 : 0000003fffa0f6b0 a4 : 0000003fffa0f4a8
[   14.648856]  a5 : 0000003ff0bfa0e0 a6 : 7efefefefefefeff a7 : 24160a4b570a5248
[   14.656749]  s2 : 00000000000138a9 s3 : 00000000000e6e10 s4 : 0000000000000000
[   14.664649]  s5 : 0000003ff0bfa160 s6 : 0000000000000000 s7 : 0000003ff0bfa160
[   14.672515]  s8 : 0000000000000000 s9 : 00000000000138a8 s10: 0000003fffa0f6b0
[   14.680574]  s11: 0000003fffa0f6c8 t3 : 0000003ff0bf0bb4 t4 : 0000000000000004
[   14.688584]  t5 : 0000000000000004 t6 : 0000000000000004
[   14.694185] status: 0000000200000020 badaddr: 000000000000b920 cause: 0000000000000002
[   14.719250] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
[   14.726736] CPU: 0 PID: 1 Comm: init Not tainted 5.7.0-rc3-58539-g5f5fd87b36e2 #3
[   14.734155] Call Trace:
[   14.736869] [<ffffffe000801ffc>] walk_stackframe+0x0/0xaa
[   14.742275] [<ffffffe0008021e8>] show_stack+0x2a/0x34
[   14.747504] [<ffffffe000a7e6cc>] dump_stack+0x6e/0x88
[   14.752613] [<ffffffe000807bd2>] panic+0xf2/0x278
[   14.757307] [<ffffffe000809e1e>] do_exit+0x7a0/0x7b2
[   14.762353] [<ffffffe00080a9f4>] do_group_exit+0x2a/0x7e
[   14.767758] [<ffffffe000812b54>] get_signal+0xbc/0x54c
[   14.773066] [<ffffffe000801920>] do_notify_resume+0x54/0x2a4
[   14.778763] [<ffffffe000801196>] ret_from_exception+0x0/0xc
[   14.784489] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 ]---

Any advice would be most welcome on how to get busybox to not rely on the FPU.

nat...@berkeley.edu

unread,
Jul 25, 2022, 1:58:47 PM7/25/22
to Chipyard
I'm not too familiar with BusyBox and FPU. There are two places busybox may be built: inside buildroot, and as part of init from FireMarshal. The latter seems most likely given your error (assuming busybox is the source of the problem). You can look at firemarshal/wlutil/busybox-config to mess with its configuration there.

One warning: marshal wasn't tracking busybox-config as a dependency for rebuilding workloads. I fixed that in PR 244. You'll probably want to pick that up (or master after it gets merged).

Brendon Chetwynd

unread,
Jul 25, 2022, 2:59:54 PM7/25/22
to Chipyard
Thanks for the response.  At a cursory glance, these is nothing in busybox-config that would support complication without a floating point unit.  I'll continue to dig around. 

Brendon Chetwynd

unread,
Jul 25, 2022, 3:50:19 PM7/25/22
to Chipyard
Perhaps you could point me to where in the firemarshal build it actually compiles busybox?

Per https://github.com/riscv-software-src/riscv-pk/issues/166, I might be able to provide it compiler switches that indicates a FPU is not present:

"-march=rv64imac -mabi=lp64"
Reply all
Reply to author
Forward
0 new messages