The system is connected to a WIFI network. I’m not using HDMI output or any USB peripherals – it’s powered by USB and that’s it. I have not made any changes to /boot/uEnv.txt. I have installed libmraa.
When I check with htop, I can see one core always at 20-30% utilization, but no processes with significant CPU usage (at the top is htop itself with ~2%).
Any tips on how to investigate what’s causing the above-1 load average? Thanks in advance!
Thanks. It’s not burning CPU, and the performance is fine, so yeah, I’ll just leave it at that.
PS I experimented with removing a bunch of kernel modules (video, bluetooth, …), but no change. One extra thing I suppose I could still try is to disable WIFI and then check the load average via serial console.
I think I found the cause: this commit adds support to a usb-c controller connected via i2c to the SoC.
In top I kept seeing a load of at least 1 with nothing running, and the process using the most cpu (3%) was kworker/0:3+events, and it had status D. Following advice from here I ran multiple times
and most of the time that was the output I got.
I cloned the kernel repo, edited the dts and removed lines (referring to the diff of the commit) 71-78 and changed line 347 to status = "disabled"; (found by sheer luck here), compiled only the dtbs (with make radxa_zero_defconfig and then make dtbs) and rebooted.
Load is now 0:
Now, clearly this is not a solution, this disables …something… that is on the board and is needed for usb-c features.
These results are on a Radxa Zero v1.5 board with Arch Linux ARM and kernel
Linux alarm 5.18.1-1-aarch64-ARCH #1 SMP PREEMPT Wed Jun 1 19:34:45 MDT 2022 aarch64 GNU/Linux
I do not know what can be done at this point, mine was just an experiment. I noticed in linux upstream docs for fusb302 bindings that it is required to have a connector sub-node, and it is missing currently in raxda device tree.
As a workaround, changing line 347 to status = "disabled"; of the current dts file is enough. I’m sure this can be done a lot quicker by decompiling, searching for the block fusb302@22, changing the status value and recompiling the right dtb file in /boot.
@RadxaYuntian I have to ask: when will this be sent to linux upstream? The dts available in linux at this point is missing quite a few things.
I’m asking because I’ve spent (a bit too much) time thinkering with u-boot (upstream), I’ve managed to add led support to it (via dts for radxa zero rev 1.5). I don’t think u-boot will accept a patch that just changes the radxa zero dts file, since they pull dts from linux upstream (where currently there is no green-led defined, see meson-g12a-radxa-zero.dts). Newer u-boot supports fdtoverlays keyword in extlinux, it can now boot this board with console on uart without a boot.scr file!
This is what we are moving to right now. 5B image made with debos-radxa uses extlinux, and rbuild uses extlinux exclusively.
I also checked the efi boot support again recently. Some kernel hooks are now shipped in systemd-boot package, but installing the backport package breaks the current image generation code. Hopefully we can add this with bookworm.