I have found an issue with the booting via the DTB, for some reason /dev/vcio is not created. I compared the devices in /dev and it is the only missing device. It is the vc4 mailbox and I noticed it when my argononed failed to read the CPU temp. Not sure what else it effects.
@Darksky On the next RC kernel build, would you consider trying CONFIG_BCM_VCIO=m
? Maybe it will load once the system is up, it is a userspace device. The kernel code looks to do checks on the existence of raspberry firmware, I am concerned it is something uniquely setup with start4.elf.
Edit: I don’t want to wait that long, I’ll build it.
Edit 2: I have not been able to resolve the /dev/vcio yet. As a work-around for my fan, I reverted to using the normal argonone package that uses python, the fan works.
Edit 3: I modified the source to print some messages. There were exit points without messages and I wanted to see where this is failing. Interestingly, this is very similar to the missing /dev/gpiomem issue. It turns out, the code for both are in the same directory and are linked back to back. They load back to back, as seen below:
[ 0.559886] vc-mem: phys_addr:0x00000000 mem_base=0x00000000 mem_size:0x00000000(0 MiB)
[ 0.560016] vcio: failed entered vcio_init
[ 0.560317] gpiomem-bcm2835 fe200000.gpiomem: Initialised: Registers at 0xfe200000
That is my nonsensical error message for the vcio, as it entered the device init function in vcio.c. Notice no other error messages, as if it runs through the device init function but does not generate an error or the device. Notice the vc_mem and the gpiomem, both of those I investigated due to the gpiomem issue. Coincidence? Or maybe a bug in device generation or a linker issue?
Edit 4: This is where the device creation fails in vcio.c:
vcio.fw = rpi_firmware_get(np);
if (!vcio.fw)
return -ENODEV;
It is also possible that the previous function call:
np = of_find_compatible_node(NULL, NULL,
"raspberrypi,bcm2835-firmware");
returns an invalid/incorrect struct.
Edit 5: I found this patch, seems they are making related changes.
Edit 6: I tried booting with start4.elf (both manjaro and uefi) with device_tree set to be my custom DTB in config.txt, and it does not boot, hangs after the rainbow. Interesting.
Edit 7: I can not find any mention of vcio in the DTB, that is unexpected. Even on a system which successfully creates /dev/vcio. However, it may be called mailbox
in the DTB.