[Pkg-raspi-maintainers] Bug#1010317: raspi-firmware: broken support for CM3 and CM4 devices

Cyril Brulebois cyril at debamax.com
Thu May 19 09:35:15 BST 2022


Control: submitter -1 !

Cyril Brulebois <kibi at debian.org> (2022-04-28):
> I'll be working on a patch for my proposed approach (duplicating two
> DTB files), combining it with a fix for #996937, and opening up a p-u
> request once everything has been tested (in unstable for #996937, and
> in bullseye for this issue and #996937).

Checking the unstable upload (#996937) led me to spend some time
discovering, debugging, and trying to get a boot failure on CM4
fixed[1,2].

 1. https://bugzilla.kernel.org/show_bug.cgi?id=215925
 2. https://bugs.debian.org/1010365

In the meantime, I finally realized that the cm3/cm4 sections aren't
actually working as I thought they did. The model filters section[3]
of the upstream doc seemed to be lacking the [cm3] entry, but that's
actually… really not supported by the bootloader!

 3. https://www.raspberrypi.com/documentation/computers/config_txt.html#model-filters

Given this configuration:

    [cm3]
    device_tree=bcm2837-rpi-cm3-io3.dtb

    [cm4]
    device_tree=bcm2711-rpi-cm4-io.dtb

further testing seems to indicate that:
 1. the [cm3] line is invalid and ignored;
 2. a regular Pi 3 would get device_tree=bcm2837-rpi-cm3-io3.dtb which
    isn't made conditional by a (valid) filter;
 3. a CM 3 would get device_tree=bcm2837-rpi-cm3-io3.dtb which isn't
    made conditional by a (valid) filter;
 4. a CM 4 would get device_tree=bcm2711-rpi-cm4-io.dtb via the (valid)
    [cm4] filter.

I hadn't spotted this before because a Pi 3, given a CM3 DTB, would boot
fine! And this is very different from the other way around, i.e. a CM3
wouldn't boot given a Pi 3 DTB (which is the initial state, without any
configuration).

For completeness, board-type filters[4] could be used instead. Here's a
valid configuration to support CM3, CM3+, and CM4 respectively:

    [board-type=0x0A]
    device_tree=bcm2837-rpi-cm3-io3.dtb
     
    [board-type=0x10]
    device_tree=bcm2837-rpi-cm3-io3.dtb
    
    [board-type=0x14]
    device_tree=bcm2711-rpi-cm4-io.dtb

 4. https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#new-style-revision-codes

This is using board-type everywhere for consistency, but the last entry
could also be written with the supported [cm4] filter.


In any case, instead of fiddling with configuration, I still think it
makes sense to duplicate two DTBs under their Raspberry Pi names, and
I've extensively tested the package for proposed-updates during my
repeated debugging sessions for #1010365, so I'm quite confident this
should be fine.


Cheers,
-- 
Cyril Brulebois -- Debian Consultant @ DEBAMAX -- https://debamax.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-raspi-maintainers/attachments/20220519/12f18000/attachment.sig>


More information about the Pkg-raspi-maintainers mailing list