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