Patch "drm/msm/a6xx: initialize GMU mutex earlier" has been added to the 6.3-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/msm/a6xx: initialize GMU mutex earlier

to the 6.3-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-msm-a6xx-initialize-gmu-mutex-earlier.patch
and it can be found in the queue-6.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 8cbaa31645e5932852fcadcde276be9158cabcf1
Author: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
Date:   Mon Apr 10 19:59:08 2023 +0300

    drm/msm/a6xx: initialize GMU mutex earlier
    
    [ Upstream commit 12abd735f0300600bfc01b2a3832b966312df205 ]
    
    Move GMU mutex initialization earlier to make sure that it is always
    initialized. a6xx_destroy can be called from ther failure path before
    GMU initialization.
    
    This fixes the following backtrace:
    
    ------------[ cut here ]------------
    DEBUG_LOCKS_WARN_ON(lock->magic != lock)
    WARNING: CPU: 0 PID: 58 at kernel/locking/mutex.c:582 __mutex_lock+0x1ec/0x3d0
    Modules linked in:
    CPU: 0 PID: 58 Comm: kworker/u16:1 Not tainted 6.3.0-rc5-00155-g187c06436519 #565
    Hardware name: Qualcomm Technologies, Inc. SM8350 HDK (DT)
    Workqueue: events_unbound deferred_probe_work_func
    pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : __mutex_lock+0x1ec/0x3d0
    lr : __mutex_lock+0x1ec/0x3d0
    sp : ffff800008993620
    x29: ffff800008993620 x28: 0000000000000002 x27: ffff47b253c52800
    x26: 0000000001000606 x25: ffff47b240bb2810 x24: fffffffffffffff4
    x23: 0000000000000000 x22: ffffc38bba15ac14 x21: 0000000000000002
    x20: ffff800008993690 x19: ffff47b2430cc668 x18: fffffffffffe98f0
    x17: 6f74616c75676572 x16: 20796d6d75642067 x15: 0000000000000038
    x14: 0000000000000000 x13: ffffc38bbba050b8 x12: 0000000000000666
    x11: 0000000000000222 x10: ffffc38bbba603e8 x9 : ffffc38bbba050b8
    x8 : 00000000ffffefff x7 : ffffc38bbba5d0b8 x6 : 0000000000000222
    x5 : 000000000000bff4 x4 : 40000000fffff222 x3 : 0000000000000000
    x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff47b240cb1880
    Call trace:
     __mutex_lock+0x1ec/0x3d0
     mutex_lock_nested+0x2c/0x38
     a6xx_destroy+0xa0/0x138
     a6xx_gpu_init+0x41c/0x618
     adreno_bind+0x188/0x290
     component_bind_all+0x118/0x248
     msm_drm_bind+0x1c0/0x670
     try_to_bring_up_aggregate_device+0x164/0x1d0
     __component_add+0xa8/0x16c
     component_add+0x14/0x20
     dsi_dev_attach+0x20/0x2c
     dsi_host_attach+0x9c/0x144
     devm_mipi_dsi_attach+0x34/0xac
     lt9611uxc_attach_dsi.isra.0+0x84/0xfc
     lt9611uxc_probe+0x5b8/0x67c
     i2c_device_probe+0x1ac/0x358
     really_probe+0x148/0x2ac
     __driver_probe_device+0x78/0xe0
     driver_probe_device+0x3c/0x160
     __device_attach_driver+0xb8/0x138
     bus_for_each_drv+0x84/0xe0
     __device_attach+0x9c/0x188
     device_initial_probe+0x14/0x20
     bus_probe_device+0xac/0xb0
     deferred_probe_work_func+0x8c/0xc8
     process_one_work+0x2bc/0x594
     worker_thread+0x228/0x438
     kthread+0x108/0x10c
     ret_from_fork+0x10/0x20
    irq event stamp: 299345
    hardirqs last  enabled at (299345): [<ffffc38bb9ba61e4>] put_cpu_partial+0x1c8/0x22c
    hardirqs last disabled at (299344): [<ffffc38bb9ba61dc>] put_cpu_partial+0x1c0/0x22c
    softirqs last  enabled at (296752): [<ffffc38bb9890434>] _stext+0x434/0x4e8
    softirqs last disabled at (296741): [<ffffc38bb989669c>] ____do_softirq+0x10/0x1c
    ---[ end trace 0000000000000000 ]---
    
    Fixes: 4cd15a3e8b36 ("drm/msm/a6xx: Make GPU destroy a bit safer")
    Cc: Douglas Anderson <dianders@xxxxxxxxxxxx>
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
    Reviewed-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
    Patchwork: https://patchwork.freedesktop.org/patch/531540/
    Signed-off-by: Rob Clark <robdclark@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index 7f5bc73b20402..611311b65b168 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -1514,8 +1514,6 @@ int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node)
 	if (!pdev)
 		return -ENODEV;
 
-	mutex_init(&gmu->lock);
-
 	gmu->dev = &pdev->dev;
 
 	of_dma_configure(gmu->dev, node, true);
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index 6faea5049f765..2942d2548ce69 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -1998,6 +1998,8 @@ struct msm_gpu *a6xx_gpu_init(struct drm_device *dev)
 	adreno_gpu = &a6xx_gpu->base;
 	gpu = &adreno_gpu->base;
 
+	mutex_init(&a6xx_gpu->gmu.lock);
+
 	adreno_gpu->registers = NULL;
 
 	/*



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux