• Dmitry Baryshkov's avatar
    dma: gpi: remove spurious unlock in gpi_ch_init · 91d6a468
    Dmitry Baryshkov authored
    gpi_ch_init() doesn't lock the ctrl_lock mutex, so there is no need to
    unlock it too. Instead the mutex is handled by the function
    gpi_alloc_chan_resources(), which properly locks and unlocks the mutex.
    
    =====================================
    WARNING: bad unlock balance detected!
    6.3.0-rc5-00253-g99792582ded1-dirty #15 Not tainted
    -------------------------------------
    kworker/u16:0/9 is trying to release lock (&gpii->ctrl_lock) at:
    [<ffffb99d04e1284c>] gpi_alloc_chan_resources+0x108/0x5bc
    but there are no more locks to release!
    
    other info that might help us debug this:
    6 locks held by kworker/u16:0/9:
     #0: ffff575740010938 ((wq_completion)events_unbound){+.+.}-{0:0}, at: process_one_work+0x220/0x594
     #1: ffff80000809bdd0 (deferred_probe_work){+.+.}-{0:0}, at: process_one_work+0x220/0x594
     #2: ffff575740f2a0f8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x38/0x188
     #3: ffff57574b5570f8 (&dev->mutex){....}-{3:3}, at: __device_attach+0x38/0x188
     #4: ffffb99d06a2f180 (of_dma_lock){+.+.}-{3:3}, at: of_dma_request_slave_channel+0x138/0x280
     #5: ffffb99d06a2ee20 (dma_list_mutex){+.+.}-{3:3}, at: dma_get_slave_channel+0x28/0x10c
    
    stack backtrace:
    CPU: 7 PID: 9 Comm: kworker/u16:0 Not tainted 6.3.0-rc5-00253-g99792582ded1-dirty #15
    Hardware name: Google Pixel 3 (DT)
    Workqueue: events_unbound deferred_probe_work_func
    Call trace:
     dump_backtrace+0xa0/0xfc
     show_stack+0x18/0x24
     dump_stack_lvl+0x60/0xac
     dump_stack+0x18/0x24
     print_unlock_imbalance_bug+0x130/0x148
     lock_release+0x270/0x300
     __mutex_unlock_slowpath+0x48/0x2cc
     mutex_unlock+0x20/0x2c
     gpi_alloc_chan_resources+0x108/0x5bc
     dma_chan_get+0x84/0x188
     dma_get_slave_channel+0x5c/0x10c
     gpi_of_dma_xlate+0x110/0x1a0
     of_dma_request_slave_channel+0x174/0x280
     dma_request_chan+0x3c/0x2d4
     geni_i2c_probe+0x544/0x63c
     platform_probe+0x68/0xc4
     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
     device_add+0x60c/0x7d8
     of_device_add+0x44/0x60
     of_platform_device_create_pdata+0x90/0x124
     of_platform_bus_create+0x15c/0x3c8
     of_platform_populate+0x58/0xf8
     devm_of_platform_populate+0x58/0xbc
     geni_se_probe+0xf0/0x164
     platform_probe+0x68/0xc4
     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
    
    Fixes: 5d0c3533 ("dmaengine: qcom: Add GPI dma driver")
    Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20230409233355.453741-1-dmitry.baryshkov@linaro.orgSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
    91d6a468
gpi.c 64.4 KB