mirror of
https://github.com/torvalds/linux.git
synced 2026-09-20 09:40:02 +02:00
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:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| lima_bcast.c | ||
| lima_bcast.h | ||
| lima_ctx.c | ||
| lima_ctx.h | ||
| lima_devfreq.c | ||
| lima_devfreq.h | ||
| lima_device.c | ||
| lima_device.h | ||
| lima_dlbu.c | ||
| lima_dlbu.h | ||
| lima_drv.c | ||
| lima_drv.h | ||
| lima_dump.h | ||
| lima_gem.c | ||
| lima_gem.h | ||
| lima_gp.c | ||
| lima_gp.h | ||
| lima_l2_cache.c | ||
| lima_l2_cache.h | ||
| lima_mmu.c | ||
| lima_mmu.h | ||
| lima_pmu.c | ||
| lima_pmu.h | ||
| lima_pp.c | ||
| lima_pp.h | ||
| lima_regs.h | ||
| lima_sched.c | ||
| lima_sched.h | ||
| lima_trace.c | ||
| lima_trace.h | ||
| lima_vm.c | ||
| lima_vm.h | ||
| Makefile | ||