Hi,
I have looked into the CMA setting issue a bit. This is what I have found
so far.
The rpi4 needs CMA to be in ZONE_DMA (lower 1GB of memory) as this is the
only area that the peripherals on the rpi4 can address.
The DT sets the allowed range to allocate the CMA from (
arch/arm/boot/dts/bcm2711.dtsi#L869
<
https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/bcm2711.d...>),
but it seems to not work here. What does work is instead to set the offset
manually. I replaced "cma=256MB" with "cma=256M@704M" and then it
boots.
Note that it has to be 256M instead of 256MB.
Removing the cma option on the command line was known as a workaround.
Without that we would fall back to the build config of 64MB cma which was
located at offset 0x38000000. This left 64MB at the end of ZONE_DMA, and I
chose offset 704M so that those 64MB would still be free. Not sure if that
is needed or not. The crashkernel needs to be in ZONE_DMA as well but it
seems to be set to 0 size.
I have tested on 5.7 rc2 from rawhide.
This probably belongs in a bug report. What would be the correct place to
file that? From what I can tell upstream has been tested with cma settings
without problems (as long as the requested CMA size can fit in ZONE_DMA).
From that it seems like fedora-specific issue. Not sure though.
Cheers,
Thomas