vc4_bo_create: Failed to allocate from CMA

Stefan Wahren stefan.wahren at i2se.com
Sat Jun 12 15:17:52 UTC 2021


Hi,

while testing the mainline kernel (arm64, defconfig) on Raspberry Pi 3 B
Plus with Raspberry Pi OS - 64 bit, sometimes X doesn't start into
desktop properly (unexpected and unusable login screen instead of auto
login or mouse pointer is show shorty and than switch back to black
screen in a loop). In that case dmesg shows the following:

[   74.737106] [drm:vc4_bo_create [vc4]] *ERROR* Failed to allocate from
CMA:
[   74.737558] vc4-drm soc:gpu: [drm]                            V3D: 
28976kb BOs (10)
[   74.737602] vc4-drm soc:gpu: [drm]                     V3D
shader:     44kb BOs (11)
[   74.737632] vc4-drm soc:gpu: [drm]                           dumb:  
4564kb BOs (5)
[   74.737664] vc4-drm soc:gpu: [drm]                         binner: 
16384kb BOs (1)
[   74.737697] vc4-drm soc:gpu: [drm]                total purged
BO:      4kb BOs (1)
[   74.739039] [drm:vc4_bo_create [vc4]] *ERROR* Failed to allocate from
CMA:
[   74.739466] vc4-drm soc:gpu: [drm]                            V3D: 
28972kb BOs (9)
[   74.739512] vc4-drm soc:gpu: [drm]                     V3D
shader:     44kb BOs (11)
[   74.739541] vc4-drm soc:gpu: [drm]                           dumb:  
4564kb BOs (5)
[   74.739570] vc4-drm soc:gpu: [drm]                         binner: 
16384kb BOs (1)
[   74.739602] vc4-drm soc:gpu: [drm]                total purged
BO:      4kb BOs (1)
[   74.740718] [drm:vc4_bo_create [vc4]] *ERROR* Failed to allocate from
CMA:
[   74.741138] vc4-drm soc:gpu: [drm]                            V3D: 
28972kb BOs (9)
[   74.741171] vc4-drm soc:gpu: [drm]                     V3D
shader:     44kb BOs (11)
[   74.741202] vc4-drm soc:gpu: [drm]                           dumb:  
4564kb BOs (5)
[   74.741231] vc4-drm soc:gpu: [drm]                         binner: 
16384kb BOs (1)
[   74.741263] vc4-drm soc:gpu: [drm]                total purged
BO:      4kb BOs (1)
...

I have only seen this issue on arm64 with latest mainline kernel
(5.13.0-rc5-00130-gf21b807c3cf8), but also with older kernel versions.
So it's not a regression. It seems 64 bit needs more CMA.

In case X started properly i was also able to reproduce these errors
above by dis- and reconneting HDMI.

So i increased CMA in bcm283x.dtsi and the problem disappeared:

iff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index b83a864..d1304cb 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -37,7 +37,7 @@
 
         cma: linux,cma {
             compatible = "shared-dma-pool";
-            size = <0x4000000>; /* 64MB */
+            size = <0x6000000>; /* 96MB */
             reusable;
             linux,cma-default;
         };

The questions are:

Is this the right way (tm) to fix this problem?

And what is a sensible value (don't have a 4K display to test)?

Best regards
Stefan



More information about the dri-devel mailing list