1. 10 12月, 2020 1 次提交
  2. 09 12月, 2020 10 次提交
  3. 03 12月, 2020 4 次提交
  4. 25 11月, 2020 6 次提交
  5. 19 11月, 2020 1 次提交
    • R
      drm/amd/display: Always get CRTC updated constant values inside commit tail · 2b3af270
      Rodrigo Siqueira 提交于
      We recently improved our display atomic commit and tail sequence to
      avoid some issues related to concurrency. One of the major changes
      consisted of moving the interrupt disable and the stream release from
      our atomic commit to our atomic tail (commit 6d90a208
      ("drm/amd/display: Move disable interrupt into commit tail")) .
      However, the new code introduced inside our commit tail function was
      inserted right after the function
      drm_atomic_helper_update_legacy_modeset_state(), which has routines for
      updating internal data structs related to timestamps. As a result, in
      certain conditions, the display module can reach a situation where we
      update our constants and, after that, clean it. This situation generates
      the following warning:
      
       amdgpu 0000:03:00.0: drm_WARN_ON_ONCE(drm_drv_uses_atomic_modeset(dev))
       WARNING: CPU: 6 PID: 1269 at drivers/gpu/drm/drm_vblank.c:722
       drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x32b/0x340 [drm]
       ...
       RIP:
       0010:drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x32b/0x340
       [drm]
       ...
       Call Trace:
        ? dc_stream_get_vblank_counter+0x57/0x60 [amdgpu]
        drm_crtc_vblank_helper_get_vblank_timestamp+0x1c/0x20 [drm]
        drm_get_last_vbltimestamp+0xad/0xc0 [drm]
        drm_reset_vblank_timestamp+0x63/0xd0 [drm]
        drm_crtc_vblank_on+0x85/0x150 [drm]
        amdgpu_dm_atomic_commit_tail+0xaf1/0x2330 [amdgpu]
        commit_tail+0x99/0x130 [drm_kms_helper]
        drm_atomic_helper_commit+0x123/0x150 [drm_kms_helper]
        amdgpu_dm_atomic_commit+0x11/0x20 [amdgpu]
        drm_atomic_commit+0x4a/0x50 [drm]
        drm_atomic_helper_set_config+0x7c/0xc0 [drm_kms_helper]
        drm_mode_setcrtc+0x20b/0x7e0 [drm]
        ? tomoyo_path_number_perm+0x6f/0x200
        ? drm_mode_getcrtc+0x190/0x190 [drm]
        drm_ioctl_kernel+0xae/0xf0 [drm]
        drm_ioctl+0x245/0x400 [drm]
        ? drm_mode_getcrtc+0x190/0x190 [drm]
        amdgpu_drm_ioctl+0x4e/0x80 [amdgpu]
        __x64_sys_ioctl+0x91/0xc0
        do_syscall_64+0x38/0x90
        entry_SYSCALL_64_after_hwframe+0x44/0xa9
       ...
      
      For fixing this issue we rely upon a refactor introduced on
      drm_atomic_helper_update_legacy_modeset_state ("Remove the timestamping
      constant update from drm_atomic_helper_update_legacy_modeset_state()")
      which decouples constant values update from
      drm_atomic_helper_update_legacy_modeset_state to a new helper.
      Basically, this commit uses this new helper and place it right after our
      release module to avoid a situation where our CRTC struct gets wrong
      values.
      
      Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1373
      Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1349Reviewed-by: NHarry Wentland <harry.wentland@amd.com>
      Signed-off-by: NRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      2b3af270
  6. 17 11月, 2020 2 次提交
  7. 13 11月, 2020 2 次提交
  8. 06 11月, 2020 1 次提交
  9. 04 11月, 2020 13 次提交