1. 15 9月, 2021 2 次提交
    • W
      drm/amd/display: Fork thread to offload work of hpd_rx_irq · 8e794421
      Wayne Lin 提交于
      [Why]
      Currently, we will try to get dm.dc_lock in handle_hpd_rx_irq() when
      link lost happened, which is risky and could cause deadlock.
      e.g. If we are under procedure to enable MST streams and then monitor
      happens to toggle short hpd to notify link lost, then
      handle_hpd_rx_irq() will get blocked due to stream enabling flow has
      dc_lock. However, under MST, enabling streams involves communication
      with remote sinks which need to use handle_hpd_rx_irq() to handle
      sideband messages. Thus, we have deadlock here.
      
      [How]
      Target is to have handle_hpd_rx_irq() finished as soon as possilble.
      Hence we can react to interrupt quickly. Besides, we should avoid to
      grabe dm.dc_lock within handle_hpd_rx_irq() to avoid deadlock situation.
      
      Firstly, revert patches which introduced to use dm.dc_lock in
      handle_hpd_rx_irq():
      
      * commit ("drm/amd/display: NULL pointer error during ")
      
      * commit ("drm/amd/display: Only one display lights up while using MST")
      
      * commit ("drm/amd/display: take dc_lock in short pulse handler only")
      
      Instead, create work to handle irq events which needs dm.dc_lock.
      Besides:
      
      * Create struct hpd_rx_irq_offload_work_queue for each link to handle
        its short hpd events
      
      * Avoid to handle link lost/ automated test if the link is disconnected
      
      * Defer dc_lock needed works in dc_link_handle_hpd_rx_irq(). This
        function should just handle simple stuff for us (e.g. DPCD R/W).
        However, deferred works should still be handled by the order that
        dc_link_handle_hpd_rx_irq() used to be.
      
      * Change function name dm_handle_hpd_rx_irq() to
        dm_handle_mst_sideband_msg() to be more specific
      Reviewed-by: NNicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
      Acked-by: NMikita Lipski <mikita.lipski@amd.com>
      Signed-off-by: NWayne Lin <Wayne.Lin@amd.com>
      Tested-by: NDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      8e794421
    • W
      drm/amd/display: Add option to defer works of hpd_rx_irq · 410ad92d
      Wayne Lin 提交于
      [Why & How]
      Due to some code flow constraints, we need to defer dc_lock needed works
      from dc_link_handle_hpd_rx_irq(). Thus, do following changes:
      
      * Change allow_hpd_rx_irq() from static to public
      * Change handle_automated_test() from static to public
      * Extract link lost handling flow out from dc_link_handle_hpd_rx_irq()
        and put those into a new function dc_link_dp_handle_link_loss()
      * Add one option parameter to decide whether defer works within
        dc_link_handle_hpd_rx_irq()
      Acked-by: NMikita Lipski <mikita.lipski@amd.com>
      Signed-off-by: NWayne Lin <Wayne.Lin@amd.com>
      Reviewed-by: NNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
      Tested-by: NDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      410ad92d
  2. 02 9月, 2021 2 次提交
  3. 28 5月, 2021 2 次提交
  4. 11 5月, 2021 3 次提交
  5. 30 4月, 2021 1 次提交
  6. 21 4月, 2021 1 次提交
  7. 10 4月, 2021 2 次提交
  8. 03 3月, 2021 2 次提交
  9. 10 2月, 2021 1 次提交
  10. 14 1月, 2021 2 次提交
  11. 09 12月, 2020 1 次提交
  12. 25 11月, 2020 1 次提交
  13. 17 11月, 2020 1 次提交
  14. 11 11月, 2020 1 次提交
  15. 23 9月, 2020 1 次提交
  16. 01 7月, 2020 2 次提交
  17. 29 5月, 2020 2 次提交
  18. 06 5月, 2020 3 次提交
  19. 23 4月, 2020 4 次提交
  20. 09 4月, 2020 2 次提交
  21. 05 3月, 2020 1 次提交
  22. 26 2月, 2020 3 次提交