1. 11 Jan, 2023 2 commits
    • Rob Clark's avatar
      drm/msm/gpu: Fix potential double-free · a66f1efc
      Rob Clark authored
      If userspace was calling the MSM_SET_PARAM ioctl on multiple threads to
      set the COMM or CMDLINE param, it could trigger a race causing the
      previous value to be kfree'd multiple times.  Fix this by serializing on
      the gpu lock.
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      Fixes: d4726d77 ("drm/msm: Add a way to override processes comm/cmdline")
      Patchwork: https://patchwork.freedesktop.org/patch/517778/
      Link: https://lore.kernel.org/r/20230110212903.1925878-1-robdclark@gmail.com
      a66f1efc
    • Joel Fernandes (Google)'s avatar
      adreno: Shutdown the GPU properly · e752e545
      Joel Fernandes (Google) authored
      During kexec on ARM device, we notice that device_shutdown() only calls
      pm_runtime_force_suspend() while shutting down the GPU. This means the GPU
      kthread is still running and further, there maybe active submits.
      
      This causes all kinds of issues during a kexec reboot:
      
      Warning from shutdown path:
      
      [  292.509662] WARNING: CPU: 0 PID: 6304 at [...] adreno_runtime_suspend+0x3c/0x44
      [  292.509863] Hardware name: Google Lazor (rev3 - 8) with LTE (DT)
      [  292.509872] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      [  292.509881] pc : adreno_runtime_suspend+0x3c/0x44
      [  292.509891] lr : pm_generic_runtime_suspend+0x30/0x44
      [  292.509905] sp : ffffffc014473bf0
      [...]
      [  292.510043] Call trace:
      [  292.510051]  adreno_runtime_suspend+0x3c/0x44
      [  292.510061]  pm_generic_runtime_suspend+0x30/0x44
      [  292.510071]  pm_runtime_force_suspend+0x54/0xc8
      [  292.510081]  adreno_shutdown+0x1c/0x28
      [  292.510090]  platform_shutdown+0x2c/0x38
      [  292.510104]  device_shutdown+0x158/0x210
      [  292.510119]  kernel_restart_prepare+0x40/0x4c
      
      And here from GPU kthread, an SError OOPs:
      
      [  192.648789]  el1h_64_error+0x7c/0x80
      [  192.648812]  el1_interrupt+0x20/0x58
      [  192.648833]  el1h_64_irq_handler+0x18/0x24
      [  192.648854]  el1h_64_irq+0x7c/0x80
      [  192.648873]  local_daif_inherit+0x10/0x18
      [  192.648900]  el1h_64_sync_handler+0x48/0xb4
      [  192.648921]  el1h_64_sync+0x7c/0x80
      [  192.648941]  a6xx_gmu_set_oob+0xbc/0x1fc
      [  192.648968]  a6xx_hw_init+0x44/0xe38
      [  192.648991]  msm_gpu_hw_init+0x48/0x80
      [  192.649013]  msm_gpu_submit+0x5c/0x1a8
      [  192.649034]  msm_job_run+0xb0/0x11c
      [  192.649058]  drm_sched_main+0x170/0x434
      [  192.649086]  kthread+0x134/0x300
      [  192.649114]  ret_from_fork+0x10/0x20
      
      Fix by calling adreno_system_suspend() in the device_shutdown() path.
      
      [ Applied Rob Clark feedback on fixing adreno_unbind() similarly, also
        tested as above. ]
      
      Cc: Rob Clark <robdclark@chromium.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Ricardo Ribalda <ribalda@chromium.org>
      Cc: Ross Zwisler <zwisler@kernel.org>
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      Reviewed-by: default avatarRicardo Ribalda <ribalda@chromium.org>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Patchwork: https://patchwork.freedesktop.org/patch/517633/
      Link: https://lore.kernel.org/r/20230109222547.1368644-1-joel@joelfernandes.orgSigned-off-by: default avatarRob Clark <robdclark@chromium.org>
      e752e545
  2. 05 Jan, 2023 6 commits
  3. 04 Jan, 2023 2 commits
  4. 28 Dec, 2022 6 commits
  5. 26 Nov, 2022 4 commits
  6. 22 Nov, 2022 2 commits
  7. 04 Nov, 2022 18 commits