Re: How to make FreeBSD's kernel boot a RPi4B with modern RPi* firmware
Date: Sun, 08 Jan 2023 00:59:41 UTC
On Jan 7, 2023, at 10:58, Klaus Küchemann <maciphone2@googlemail.com> wrote: > >> Am 07.01.2023 um 11:18 schrieb Mark Millard <marklmi@yahoo.com>: >> >> >> ……………………... >>>> >>>> >>>> stable/13's source code changes are ( similarly for >>>> releng/13.1 ): >>>> >>>> # git -C /usr/13S-src/ diff sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> diff --git a/sys/arm/broadcom/bcm2835/bcm2835_dma.c b/sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> index cab8639bb607..6d521d6dcace 100644 >>>> --- a/sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> +++ b/sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> @@ -766,5 +766,6 @@ static driver_t bcm_dma_driver = { >>>> >>>> static devclass_t bcm_dma_devclass; >>>> >>>> -DRIVER_MODULE(bcm_dma, simplebus, bcm_dma_driver, bcm_dma_devclass, 0, 0); >>>> +EARLY_DRIVER_MODULE(bcm_dma, simplebus, bcm_dma_driver, bcm_dma_devclass, >>>> + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); >>>> MODULE_VERSION(bcm_dma, 1); >>>> >>>> >>>> main's [so: 14's] source code changes are: >>>> >>>> # git -C /usr/main-src/ diff sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> diff --git a/sys/arm/broadcom/bcm2835/bcm2835_dma.c b/sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> index 5f9ecb0b7981..d901447df1e9 100644 >>>> --- a/sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> +++ b/sys/arm/broadcom/bcm2835/bcm2835_dma.c >>>> @@ -764,5 +764,6 @@ static driver_t bcm_dma_driver = { >>>> sizeof(struct bcm_dma_softc), >>>> }; >>>> >>>> -DRIVER_MODULE(bcm_dma, simplebus, bcm_dma_driver, 0, 0); >>>> +EARLY_DRIVER_MODULE(bcm_dma, simplebus, bcm_dma_driver, 0, 0, >>>> + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); >>>> MODULE_VERSION(bcm_dma, 1); >>>> >> >> >> === >> Mark Millard >> marklmi at yahoo.com >> > > > …….on the other hand : if your EARLY_DRIVER_MODULE(bcm_dma… doesn’t do anything wrong, > you could give it in phabricator review, why not?!.. Yep, once I've better evidence from the RPi*'s that I have access to. I'll note that no vintages of the following .dtb files are in the current sysutils/rpi-firmware port: bcm2709-rpi-cm2.dtb bcm2710-rpi-zero-2-w.dtb bcm2710-rpi-zero-2.dtb bcm2711-rpi-cm4s.dtb I've no direct evidence of if any vintage of any of these would end up hitting the bcm_dma issue or not. But I expect that the EARLY_DRIVER_MODULE related patching would avoid (just!) that specific crash problem if it would otherwise would occur. There is: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261147 reporting the absence of bcm2710-rpi-zero-2-w.dtb . So someone might want to experiment with more recent RPi* firmware, possibly even to develop some level of support for bcm2710-rpi-zero-2-w.dtb (live Device Tree possibly adjusted by the RPi* firmware) --if changes are needed. The .dtb vintage and the RPi* start*.efi and the like vintages are not necessarily fully independent. Mixing and matching could be a problem, independent of any additional FreeBSD kernel-related issues. (It is another example of the poor level of documentation for the RPi* context.) === Mark Millard marklmi at yahoo.com