applied to drm-misc-next
On Tue, Jun 2, 2026 at 3:16 PM Qiang Yu <[email protected]> wrote: > > On Mon, Jun 1, 2026 at 8:04 PM Henrik Grimler <[email protected]> wrote: > > > > lima_vm_create() is currently run before va_start and va_end are set up, > > meaning they are both 0. lima_vm_create() runs drm_mm_init() with them > > as arguments for the allocator, and if DRM_DEBUG_MM is enabled the > > DRM_MM_BUG_ON check in drm_mm_init then fires, as seen here on > > exynos4412-odroid-u2: > > > > [ 1.736297] ------------[ cut here ]------------ > > [ 1.740370] kernel BUG at drivers/gpu/drm/drm_mm.c:931! > > [ 1.745574] Internal error: Oops - BUG: 0 [#1] SMP ARM > > [ 1.750697] Modules linked in: > > [ 1.753734] CPU: 0 UID: 0 PID: 41 Comm: kworker/u16:1 Not tainted > > 7.0.10-postmarketos-exynos4 #11 PREEMPT > > [ 1.763372] Hardware name: Samsung Exynos (Flattened Device Tree) > > [ 1.769446] Workqueue: events_unbound deferred_probe_work_func > > [ 1.775261] PC is at drm_mm_init+0x9c/0xa4 > > [ 1.779339] LR is at lima_vm_create+0x144/0x17c > > [ ... ] > > > > Fix the issue by moving the lima_vm_create() call after va_start and > > va_end are set up. > > > > Fixes: a1d2a6339961 ("drm/lima: driver for ARM Mali4xx GPUs") > > Signed-off-by: Henrik Grimler <[email protected]> > > --- > > This is a low priority fix and can wait for v7.2, it does not cause > > any real issues as far as I have seen: drm_mm_init() is re-run some > > seconds after first run with correct parameters. > > Reviewed-by: Qiang Yu <[email protected]> > > drm mm in the empty_vm is not used at all, so no issue caused by it. > drm mm of a real per app vm matters but they are initialized properly > after va_start/end set. In fact only the PDE page matters in empty_vm, > I should only create it instead of the full lima_vm. > > > --- > > drivers/gpu/drm/lima/lima_device.c | 12 ++++++------ > > 1 file changed, 6 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/gpu/drm/lima/lima_device.c > > b/drivers/gpu/drm/lima/lima_device.c > > index 0bf7105c8748..7c873e62c16d 100644 > > --- a/drivers/gpu/drm/lima/lima_device.c > > +++ b/drivers/gpu/drm/lima/lima_device.c > > @@ -368,12 +368,6 @@ int lima_device_init(struct lima_device *ldev) > > if (err) > > goto err_out0; > > > > - ldev->empty_vm = lima_vm_create(ldev); > > - if (!ldev->empty_vm) { > > - err = -ENOMEM; > > - goto err_out1; > > - } > > - > > ldev->va_start = 0; > > if (ldev->id == lima_gpu_mali450) { > > ldev->va_end = LIMA_VA_RESERVE_START; > > @@ -387,6 +381,12 @@ int lima_device_init(struct lima_device *ldev) > > } else > > ldev->va_end = LIMA_VA_RESERVE_END; > > > > + ldev->empty_vm = lima_vm_create(ldev); > > + if (!ldev->empty_vm) { > > + err = -ENOMEM; > > + goto err_out1; > > + } > > + > > ldev->iomem = devm_platform_ioremap_resource(pdev, 0); > > if (IS_ERR(ldev->iomem)) { > > dev_err(ldev->dev, "fail to ioremap iomem\n"); > > > > --- > > base-commit: c453c60fdba437f69209e027b418c4a24143605a > > change-id: 20260529-lima-alloc-fix-2cd5408f6493 > > > > Best regards, > > -- > > Henrik Grimler <[email protected]> > >
