1. 10 Jun, 2023 6 commits
  2. 09 Jun, 2023 2 commits
    • Dmitry Baryshkov's avatar
      drm/msm/a6xx: initialize GMU mutex earlier · 12abd735
      Dmitry Baryshkov authored
      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: 4cd15a3e ("drm/msm/a6xx: Make GPU destroy a bit safer")
      Cc: Douglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Patchwork: https://patchwork.freedesktop.org/patch/531540/Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      12abd735
    • Kuogee Hsieh's avatar
      drm/msm/dp: enable HDP plugin/unplugged interrupts at hpd_enable/disable · a8e981ac
      Kuogee Hsieh authored
      The internal_hpd flag is set to true by dp_bridge_hpd_enable() and set to
      false by dp_bridge_hpd_disable() to handle GPIO pinmuxed into DP controller
      case. HDP related interrupts can not be enabled until internal_hpd is set
      to true. At current implementation dp_display_config_hpd() will initialize
      DP host controller first followed by enabling HDP related interrupts if
      internal_hpd was true at that time. Enable HDP related interrupts depends on
      internal_hpd status may leave system with DP driver host is in running state
      but without HDP related interrupts being enabled. This will prevent external
      display from being detected. Eliminated this dependency by moving HDP related
      interrupts enable/disable be done at dp_bridge_hpd_enable/disable() directly
      regardless of internal_hpd status.
      
      Changes in V3:
      -- dp_catalog_ctrl_hpd_enable() and dp_catalog_ctrl_hpd_disable()
      -- rewording ocmmit text
      
      Changes in V4:
      -- replace dp_display_config_hpd() with dp_display_host_start()
      -- move enable_irq() at dp_display_host_start();
      
      Changes in V5:
      -- replace dp_display_host_start() with dp_display_host_init()
      
      Changes in V6:
      -- squash remove enable_irq() and disable_irq()
      
      Fixes: cd198cad ("drm/msm/dp: Rely on hpd_enable/disable callbacks")
      Signed-off-by: default avatarKuogee Hsieh <quic_khsieh@quicinc.com>
      Tested-by: Leonard Lausen <leonard@lausen.nl> # on sc7180 lazor
      Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Reviewed-by: default avatarBjorn Andersson <andersson@kernel.org>
      Tested-by: default avatarBjorn Andersson <andersson@kernel.org>
      Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
      Link: https://lore.kernel.org/r/1684878756-17830-1-git-send-email-quic_khsieh@quicinc.comSigned-off-by: default avatarRob Clark <robdclark@chromium.org>
      a8e981ac
  3. 07 Jun, 2023 13 commits
  4. 04 Jun, 2023 19 commits