1. 25 11月, 2020 1 次提交
  2. 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
  3. 04 11月, 2020 2 次提交
  4. 29 10月, 2020 1 次提交
  5. 22 10月, 2020 2 次提交
    • A
      drm/amd/display: Avoid MST manager resource leak. · 5dff80bd
      Andrey Grodzovsky 提交于
      On connector destruction call drm_dp_mst_topology_mgr_destroy
      to release resources allocated in drm_dp_mst_topology_mgr_init.
      Do it only if MST manager was initilized before otherwsie a crash
      is seen on driver unload/device unplug.
      Reviewed-by: NNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
      Signed-off-by: NAndrey Grodzovsky <andrey.grodzovsky@amd.com>
      Acked-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      5dff80bd
    • A
      drm/amd/display: Revert "drm/amd/display: Fix a list corruption" · 0d427f6c
      Andrey Grodzovsky 提交于
      This fixes regression on device unplug and/or driver unload.
      
      [   65.681501 <    0.000004>] BUG: kernel NULL pointer dereference, address: 0000000000000008
      [   65.681504 <    0.000003>] #PF: supervisor write access in kernel mode
      [   65.681506 <    0.000002>] #PF: error_code(0x0002) - not-present page
      [   65.681507 <    0.000001>] PGD 7c9437067 P4D 7c9437067 PUD 7c9db7067 PMD 0
      [   65.681511 <    0.000004>] Oops: 0002 [#1] SMP NOPTI
      [   65.681512 <    0.000001>] CPU: 8 PID: 127 Comm: kworker/8:1 Tainted: G        W  O      5.9.0-rc2-dev+ #59
      [   65.681514 <    0.000002>] Hardware name: System manufacturer System Product Name/PRIME X470-PRO, BIOS 4406 02/28/2019
      [   65.681525 <    0.000011>] Workqueue: events drm_connector_free_work_fn [drm]
      [   65.681535 <    0.000010>] RIP: 0010:drm_atomic_private_obj_fini+0x11/0x60 [drm]
      [   65.681537 <    0.000002>] Code: de 4c 89 e7 e8 70 f2 ba f8 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 90 0f 1f 44 00 00 48 8b 47 08 48 8b 17 55 48 89 e5 53 <48> 89 42 08 48 89 10 48 b8 00 01 00 00 00 00 ad de 48 89 fb 48 89
      [   65.681541 <    0.000004>] RSP: 0018:ffffa5fa805efdd8 EFLAGS: 00010246
      [   65.681542 <    0.000001>] RAX: 0000000000000000 RBX: ffff9a4b094654d8 RCX: 0000000000000000
      [   65.681544 <    0.000002>] RDX: 0000000000000000 RSI: ffffffffba197bc2 RDI: ffff9a4b094654d8
      [   65.681545 <    0.000001>] RBP: ffffa5fa805efde0 R08: ffffffffba197b82 R09: 0000000000000040
      [   65.681547 <    0.000002>] R10: ffffa5fa805efdc8 R11: 000000000000007f R12: ffff9a4b09465888
      [   65.681549 <    0.000002>] R13: ffff9a4b36f20010 R14: ffff9a4b36f20290 R15: ffff9a4b3a692840
      [   65.681551 <    0.000002>] FS:  0000000000000000(0000) GS:ffff9a4b3ea00000(0000) knlGS:0000000000000000
      [   65.681553 <    0.000002>] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   65.681554 <    0.000001>] CR2: 0000000000000008 CR3: 00000007c9c82000 CR4: 00000000003506e0
      [   65.681556 <    0.000002>] Call Trace:
      [   65.681561 <    0.000005>]  drm_dp_mst_topology_mgr_destroy+0xc4/0xe0 [drm_kms_helper]
      [   65.681612 <    0.000051>]  amdgpu_dm_connector_destroy+0x3d/0x110 [amdgpu]
      [   65.681622 <    0.000010>]  drm_connector_free_work_fn+0x78/0x90 [drm]
      [   65.681624 <    0.000002>]  process_one_work+0x164/0x410
      [   65.681626 <    0.000002>]  worker_thread+0x4d/0x450
      [   65.681628 <    0.000002>]  ? rescuer_thread+0x390/0x390
      [   65.681630 <    0.000002>]  kthread+0x10a/0x140
      [   65.681632 <    0.000002>]  ? kthread_unpark+0x70/0x70
      [   65.681634 <    0.000002>]  ret_from_fork+0x22/0x30
      
      This reverts commit 1545fbf9.
      Signed-off-by: NAndrey Grodzovsky <andrey.grodzovsky@amd.com>
      Acked-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      0d427f6c
  6. 09 10月, 2020 1 次提交
  7. 16 9月, 2020 10 次提交
  8. 15 9月, 2020 1 次提交
  9. 04 9月, 2020 1 次提交
    • X
      drm/amd/display: Fix a list corruption · 1545fbf9
      xinhui pan 提交于
      Remove the private obj from the internal list before we free aconnector.
      
      [   56.925828] BUG: unable to handle page fault for address: ffff8f84a870a560
      [   56.933272] #PF: supervisor read access in kernel mode
      [   56.938801] #PF: error_code(0x0000) - not-present page
      [   56.944376] PGD 18e605067 P4D 18e605067 PUD 86a614067 PMD 86a4d0067 PTE 800ffff8578f5060
      [   56.953260] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC NOPTI
      [   56.958815] CPU: 6 PID: 1407 Comm: bash Tainted: G           O      5.9.0-rc2+ #46
      [   56.967092] Hardware name: System manufacturer System Product Name/PRIME Z390-A, BIOS 1401 11/26/2019
      [   56.977162] RIP: 0010:__list_del_entry_valid+0x31/0xa0
      [   56.982768] Code: 00 ad de 55 48 8b 17 4c 8b 47 08 48 89 e5 48 39 c2 74 27 48 b8 22 01 00 00 00 00 ad de 49 39 c0 74 2d 49 8b 30 48 39 fe 75 3d <48> 8b 52 08 48 39 f2 75 4c b8 01 00 00 00 5d c3 48 89 7
      [   57.003327] RSP: 0018:ffffb40c81687c90 EFLAGS: 00010246
      [   57.009048] RAX: dead000000000122 RBX: ffff8f84ea41f4f0 RCX: 0000000000000006
      [   57.016871] RDX: ffff8f84a870a558 RSI: ffff8f84ea41f4f0 RDI: ffff8f84ea41f4f0
      [   57.024672] RBP: ffffb40c81687c90 R08: ffff8f84ea400998 R09: 0000000000000001
      [   57.032490] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000006
      [   57.040287] R13: ffff8f84ea422a90 R14: ffff8f84b4129a20 R15: fffffffffffffff2
      [   57.048105] FS:  00007f550d885740(0000) GS:ffff8f8509600000(0000) knlGS:0000000000000000
      [   57.056979] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   57.063260] CR2: ffff8f84a870a560 CR3: 00000007e5144001 CR4: 00000000003706e0
      [   57.071053] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   57.078849] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [   57.086684] Call Trace:
      [   57.089381]  drm_atomic_private_obj_fini+0x29/0x82 [drm]
      [   57.095247]  amdgpu_dm_fini+0x83/0x170 [amdgpu]
      [   57.100264]  dm_hw_fini+0x23/0x30 [amdgpu]
      [   57.104814]  amdgpu_device_fini+0x1df/0x4fe [amdgpu]
      [   57.110271]  amdgpu_driver_unload_kms+0x43/0x70 [amdgpu]
      [   57.116136]  amdgpu_pci_remove+0x3b/0x60 [amdgpu]
      [   57.121291]  pci_device_remove+0x3e/0xb0
      [   57.125583]  device_release_driver_internal+0xff/0x1d0
      [   57.131223]  device_release_driver+0x12/0x20
      [   57.135903]  pci_stop_bus_device+0x70/0xa0
      [   57.140401]  pci_stop_and_remove_bus_device_locked+0x1b/0x30
      [   57.146571]  remove_store+0x7b/0x90
      [   57.150429]  dev_attr_store+0x17/0x30
      [   57.154441]  sysfs_kf_write+0x4b/0x60
      [   57.158479]  kernfs_fop_write+0xe8/0x1d0
      [   57.162788]  vfs_write+0xf5/0x230
      [   57.166426]  ksys_write+0x70/0xf0
      [   57.170087]  __x64_sys_write+0x1a/0x20
      [   57.174219]  do_syscall_64+0x38/0x90
      [   57.178145]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      Signed-off-by: Nxinhui pan <xinhui.pan@amd.com>
      Acked-by: Feifei Xu <Feifei Xu@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      1545fbf9
  10. 27 8月, 2020 5 次提交
  11. 25 8月, 2020 4 次提交
  12. 19 8月, 2020 1 次提交
  13. 18 8月, 2020 3 次提交
  14. 15 8月, 2020 1 次提交
  15. 11 8月, 2020 4 次提交
  16. 07 8月, 2020 2 次提交