[PATCH 4/4] drm/radeon/ttm: use multihop

Christian König christian.koenig at amd.com
Mon Nov 16 14:25:02 UTC 2020


Hi Dave,

amdgpu also blows up immediately, going to investigate now what's wrong 
here.

Christian.

Am 16.11.20 um 13:51 schrieb Thomas Zimmermann:
> Hi
>
> Am 09.11.20 um 01:54 schrieb Dave Airlie:
>> From: Dave Airlie <airlied at redhat.com>
>>
>> This removes the code to move resources directly between
>> SYSTEM and VRAM in favour of using the core ttm mulithop code.
>>
>> Signed-off-by: Dave Airlie <airlied at redhat.com>
>> ---
>>   drivers/gpu/drm/radeon/radeon_ttm.c | 119 +++-------------------------
>>   1 file changed, 13 insertions(+), 106 deletions(-)
> I got the following regression from that patch:
>
> [   17.639429] ------------[ cut here ]------------
> [   17.645322] Memory manager not clean during takedown.
> [   17.650557] WARNING: CPU: 4 PID: 327 at drivers/gpu/drm/drm_mm.c:998
> drm_mm_takedown+0x2e/0x40
> [   17.659367] Modules linked in: hid_generic(E+) crct10dif_pclmul(E)
> crc32_pclmul(E) ghash_clmulni_intel(E) radeon(E+) aesni_intel(E)
> glue_helper(E) crypto_simd(E) drm_ttm_helper(E) cryptd(E) usbhid(E)
> ttm(E) i915(E+) prime_numbers(E) w)
> [   17.673721] hid-generic 0003:046A:0001.0001: input,hidraw0: USB HID
> v1.00 Keyboard [HID 046a:0001] on usb-0000:00:14.0-7/input0
> [   17.697411] CPU: 4 PID: 327 Comm: systemd-udevd Tainted: G
>   E     5.10.0-rc3-1-default+ #639
> [   17.718744] Hardware name: Dell Inc. OptiPlex 9020/0N4YC8, BIOS A24
> 10/24/2018
> [   17.718757] RIP: 0010:drm_mm_takedown+0x2e/0x40
> [   17.718766] Code: 00 55 48 8d 6f 38 53 48 89 fb 48 89 ef e8 ba db 85
> ff 48 8b 43 38 48 39 c5 75 03 5b 5d c3 48 c7 c7 40 ff b5 8e e8 b8 d8 62
> 00 <0f> 0b 5b 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 66 90 0f 1f 44 00
> [   17.749995] RSP: 0018:ffffc900018d7790 EFLAGS: 00010282
> [   17.755382] RAX: 0000000000000000 RBX: ffff8881490ad8a8 RCX:
> 0000000000000000
> [   17.762713] RDX: 1ffff110f99fdd15 RSI: 0000000000000008 RDI:
> fffff5200031aee8
> [   17.762720] RBP: ffff8881490ad8e0 R08: 0000000000000001 R09:
> ffff8887ccff80a7
> [   17.762727] R10: ffffed10f99ff014 R11: 0000000000000001 R12:
> 0000000000000000
> [   17.762734] R13: 0000000000000002 R14: ffff888158b40b58 R15:
> ffff8881490ad998
> [   17.762741] FS:  00007f15529ca940(0000) GS:ffff8887cce00000(0000)
> knlGS:0000000000000000
> [   17.762748] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [   17.762754] CR2: 0000564e8a6283d8 CR3: 000000012aac6004 CR4:
> 00000000001706e0
> [   17.762760] Call Trace:
> [   17.762788]  ttm_range_man_fini+0x8b/0x150 [ttm]
> [   17.762930]  radeon_ttm_fini+0xd1/0x210 [radeon]
> [   17.763063]  radeon_bo_fini+0xf/0x60 [radeon]
> [   17.763190]  si_fini+0x150/0x1d0 [radeon]
> [   17.763313]  radeon_device_fini+0x61/0x177 [radeon]
> [   17.763439]  radeon_driver_unload_kms+0x7a/0x130 [radeon]
> [   17.763564]  radeon_driver_load_kms+0x227/0x330 [radeon]
> [   17.763593]  drm_dev_register+0x13b/0x2b0
> [   17.763604]  ? drmm_add_final_kfree+0x46/0x60
> [   17.763734]  radeon_pci_probe+0x19c/0x260 [radeon]
> [   17.763854]  ? radeon_pmops_runtime_idle+0xe0/0xe0 [radeon]
> [   17.763871]  local_pci_probe+0x74/0xc0
> [   17.763893]  pci_call_probe+0xb7/0x1d0
> [   17.763905]  ? pci_pm_suspend_noirq+0x440/0x440
> [   17.763951]  pci_device_probe+0x102/0x140
> [   17.763960]  ? driver_sysfs_add+0xe2/0x150
> [   17.763978]  really_probe+0x185/0x680
> [   17.764010]  driver_probe_device+0x13f/0x1d0
> [   17.764032]  device_driver_attach+0x114/0x120
> [   17.764048]  ? device_driver_attach+0x120/0x120
> [   17.764058]  __driver_attach+0xb0/0x1a0
> [   17.764076]  ? device_driver_attach+0x120/0x120
> [   17.764083]  bus_for_each_dev+0xdd/0x120
> [   17.764097]  ? subsys_dev_iter_exit+0x10/0x10
> [   17.764133]  bus_add_driver+0x1fb/0x2e0
> [   17.764161]  driver_register+0x103/0x180
> [   17.764175]  ? 0xffffffffc102a000
> [   17.764189]  do_one_initcall+0xbb/0x3a0
> [   17.764204]  ? trace_event_raw_event_initcall_finish+0x120/0x120
> [   17.764212]  ? mark_held_locks+0x23/0x90
> [   17.764220]  ? lockdep_enabled+0x39/0x50
> [   17.764231]  ? lock_is_held_type+0xb8/0xf0
> [   17.764258]  ? rcu_read_lock_sched_held+0x3f/0x80
> [   17.764269]  ? kasan_unpoison_shadow+0x33/0x40
> [   17.764300]  do_init_module+0xfd/0x3c0
> [   17.764327]  load_module+0xc04/0xc70
> [   17.764359]  ? layout_and_allocate+0x260/0x260
> [   17.764376]  ? kernel_read_file_from_fd+0x4b/0x90
> [   17.764402]  __do_sys_finit_module+0xff/0x180
> [   17.764415]  ? __ia32_sys_init_module+0x40/0x40
> [   17.764508]  ? syscall_trace_enter.constprop.0+0x85/0x230
> [   17.764531]  do_syscall_64+0x33/0x80
> [   17.764543]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [   17.764551] RIP: 0033:0x7f155355e799
> [   17.764560] Code: 48 8d 3d 3a bf 0c 00 0f 05 eb a5 66 0f 1f 44 00 00
> 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f
> 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d a7 76 0c 00 f7 d8 64 89 01 48
> [   17.764566] RSP: 002b:00007ffccda06428 EFLAGS: 00000246 ORIG_RAX:
> 0000000000000139
> [   17.764579] RAX: ffffffffffffffda RBX: 000055c6d44158f0 RCX:
> 00007f155355e799
> [   17.764585] RDX: 0000000000000000 RSI: 00007f155367d3a3 RDI:
> 000000000000000f
> [   17.764592] RBP: 0000000000020000 R08: 0000000000000000 R09:
> 000055c6d4417960
> [   17.764598] R10: 000000000000000f R11: 0000000000000246 R12:
> 00007f155367d3a3
> [   17.764605] R13: 000055c6d4429ff0 R14: 0000000000000000 R15:
> 000055c6d441c100
> [   17.764670] CPU: 4 PID: 327 Comm: systemd-udevd Tainted: G
>   E     5.10.0-rc3-1-default+ #639
> [   17.764675] Hardware name: Dell Inc. OptiPlex 9020/0N4YC8, BIOS A24
> 10/24/2018
> [   17.764680] Call Trace:
> [   17.764700]  dump_stack+0xae/0xe5
> [   17.764716]  ? drm_mm_takedown+0x2e/0x40
> [   17.764724]  __warn.cold+0x29/0x8a
> [   17.764739]  ? drm_mm_takedown+0x2e/0x40
> [   17.764755]  report_bug+0xcb/0xf0
> [   17.764782]  handle_bug+0x38/0x90
> [   17.764795]  exc_invalid_op+0x14/0x40
> [   17.764809]  asm_exc_invalid_op+0x12/0x20
> [   17.764816] RIP: 0010:drm_mm_takedown+0x2e/0x40
> [   17.764824] Code: 00 55 48 8d 6f 38 53 48 89 fb 48 89 ef e8 ba db 85
> ff 48 8b 43 38 48 39 c5 75 03 5b 5d c3 48 c7 c7 40 ff b5 8e e8 b8 d8 62
> 00 <0f> 0b 5b 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 66 90 0f 1f 44 00
> [   17.764829] RSP: 0018:ffffc900018d7790 EFLAGS: 00010282
> [   17.764839] RAX: 0000000000000000 RBX: ffff8881490ad8a8 RCX:
> 0000000000000000
> [   17.764845] RDX: 1ffff110f99fdd15 RSI: 0000000000000008 RDI:
> fffff5200031aee8
> [   17.764851] RBP: ffff8881490ad8e0 R08: 0000000000000001 R09:
> ffff8887ccff80a7
> [   17.764856] R10: ffffed10f99ff014 R11: 0000000000000001 R12:
> 0000000000000000
> [   17.764862] R13: 0000000000000002 R14: ffff888158b40b58 R15:
> ffff8881490ad998
> [   17.764939]  ttm_range_man_fini+0x8b/0x150 [ttm]
> [   17.765071]  radeon_ttm_fini+0xd1/0x210 [radeon]
> [   17.765198]  radeon_bo_fini+0xf/0x60 [radeon]
> [   17.765322]  si_fini+0x150/0x1d0 [radeon]
> [   17.765443]  radeon_device_fini+0x61/0x177 [radeon]
> [   17.765563]  radeon_driver_unload_kms+0x7a/0x130 [radeon]
> [   17.765686]  radeon_driver_load_kms+0x227/0x330 [radeon]
> [   17.765711]  drm_dev_register+0x13b/0x2b0
> [   17.765722]  ? drmm_add_final_kfree+0x46/0x60
> [   17.765849]  radeon_pci_probe+0x19c/0x260 [radeon]
> [   17.765968]  ? radeon_pmops_runtime_idle+0xe0/0xe0 [radeon]
> [   17.765984]  local_pci_probe+0x74/0xc0
> [   17.766007]  pci_call_probe+0xb7/0x1d0
> [   17.766020]  ? pci_pm_suspend_noirq+0x440/0x440
> [   17.766065]  pci_device_probe+0x102/0x140
> [   17.766073]  ? driver_sysfs_add+0xe2/0x150
> [   17.766090]  really_probe+0x185/0x680
> [   17.766121]  driver_probe_device+0x13f/0x1d0
> [   17.766142]  device_driver_attach+0x114/0x120
> [   17.766157]  ? device_driver_attach+0x120/0x120
> [   17.766166]  __driver_attach+0xb0/0x1a0
> [   17.766184]  ? device_driver_attach+0x120/0x120
> [   17.766190]  bus_for_each_dev+0xdd/0x120
> [   17.766202]  ? subsys_dev_iter_exit+0x10/0x10
> [   17.766238]  bus_add_driver+0x1fb/0x2e0
> [   17.766264]  driver_register+0x103/0x180
> [   17.766278]  ? 0xffffffffc102a000
> [   17.766291]  do_one_initcall+0xbb/0x3a0
> [   17.766304]  ? trace_event_raw_event_initcall_finish+0x120/0x120
> [   17.766312]  ? mark_held_locks+0x23/0x90
> [   17.766319]  ? lockdep_enabled+0x39/0x50
> [   17.766329]  ? lock_is_held_type+0xb8/0xf0
> [   17.766356]  ? rcu_read_lock_sched_held+0x3f/0x80
> [   17.766365]  ? kasan_unpoison_shadow+0x33/0x40
> [   17.766392]  do_init_module+0xfd/0x3c0
> [   17.766417]  load_module+0xc04/0xc70
> [   17.766447]  ? layout_and_allocate+0x260/0x260
> [   17.766463]  ? kernel_read_file_from_fd+0x4b/0x90
> [   17.766488]  __do_sys_finit_module+0xff/0x180
> [   17.766501]  ? __ia32_sys_init_module+0x40/0x40
> [   17.766594]  ? syscall_trace_enter.constprop.0+0x85/0x230
> [   17.766615]  do_syscall_64+0x33/0x80
> [   17.766626]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [   17.766634] RIP: 0033:0x7f155355e799
> [   17.766641] Code: 48 8d 3d 3a bf 0c 00 0f 05 eb a5 66 0f 1f 44 00 00
> 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f
> 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d a7 76 0c 00 f7 d8 64 89 01 48
> [   17.766647] RSP: 002b:00007ffccda06428 EFLAGS: 00000246 ORIG_RAX:
> 0000000000000139
> [   17.766660] RAX: ffffffffffffffda RBX: 000055c6d44158f0 RCX:
> 00007f155355e799
> [   17.766666] RDX: 0000000000000000 RSI: 00007f155367d3a3 RDI:
> 000000000000000f
> [   17.766672] RBP: 0000000000020000 R08: 0000000000000000 R09:
> 000055c6d4417960
> [   17.766679] R10: 000000000000000f R11: 0000000000000246 R12:
> 00007f155367d3a3
> [   17.766684] R13: 000055c6d4429ff0 R14: 0000000000000000 R15:
> 000055c6d441c100
> [   17.766775] irq event stamp: 35403
> [   17.766785] hardirqs last  enabled at (35409): [<ffffffff8d1b3bc1>]
> console_trylock_spinning+0x1c1/0x1d0
> [   17.766794] hardirqs last disabled at (35414): [<ffffffff8d1b3b70>]
> console_trylock_spinning+0x170/0x1d0
> [   17.766803] softirqs last  enabled at (35002): [<ffffffff8e6003dd>]
> __do_softirq+0x3dd/0x554
> [   17.766812] softirqs last disabled at (34989): [<ffffffff8e4010f2>]
> asm_call_irq_on_stack+0x12/0x20
> [   17.766818] ---[ end trace a1567ba1be224825 ]---
> [   17.767050]
> ==================================================================
> [   17.767110] BUG: KASAN: null-ptr-deref in
> ttm_range_man_fini+0x35/0x150 [ttm]
> [   17.767116] Write of size 1 at addr 0000000000000000 by task
> systemd-udevd/327
> [   17.767122]
> [   17.767130] CPU: 4 PID: 327 Comm: systemd-udevd Tainted: G        W
>   E     5.10.0-rc3-1-default+ #639
> [   17.767135] Hardware name: Dell Inc. OptiPlex 9020/0N4YC8, BIOS A24
> 10/24/2018
> [   17.767141] Call Trace:
> [   17.767161]  dump_stack+0xae/0xe5
> [   17.767182]  ? ttm_range_man_fini+0x35/0x150 [ttm]
> [   17.767193]  __kasan_report.cold+0x5/0x38
> [   17.767225]  ? ttm_range_man_fini+0x35/0x150 [ttm]
> [   17.767243]  kasan_report+0x3a/0x50
> [   17.767262]  ttm_range_man_fini+0x35/0x150 [ttm]
> [   17.767395]  radeon_ttm_fini+0xde/0x210 [radeon]
> [   17.767525]  radeon_bo_fini+0xf/0x60 [radeon]
> [   17.767651]  si_fini+0x150/0x1d0 [radeon]
> [   17.767771]  radeon_device_fini+0x61/0x177 [radeon]
> [   17.767893]  radeon_driver_unload_kms+0x7a/0x130 [radeon]
> [   17.768017]  radeon_driver_load_kms+0x227/0x330 [radeon]
> [   17.768043]  drm_dev_register+0x13b/0x2b0
> [   17.768054]  ? drmm_add_final_kfree+0x46/0x60
> [   17.768182]  radeon_pci_probe+0x19c/0x260 [radeon]
> [   17.768299]  ? radeon_pmops_runtime_idle+0xe0/0xe0 [radeon]
> [   17.768315]  local_pci_probe+0x74/0xc0
> [   17.768338]  pci_call_probe+0xb7/0x1d0
> [   17.768351]  ? pci_pm_suspend_noirq+0x440/0x440
> [   17.768397]  pci_device_probe+0x102/0x140
> [   17.768404]  ? driver_sysfs_add+0xe2/0x150
> [   17.768421]  really_probe+0x185/0x680
> [   17.768452]  driver_probe_device+0x13f/0x1d0
> [   17.768472]  device_driver_attach+0x114/0x120
> [   17.768488]  ? device_driver_attach+0x120/0x120
> [   17.768497]  __driver_attach+0xb0/0x1a0
> [   17.768515]  ? device_driver_attach+0x120/0x120
> [   17.768523]  bus_for_each_dev+0xdd/0x120
> [   17.768536]  ? subsys_dev_iter_exit+0x10/0x10
> [   17.768572]  bus_add_driver+0x1fb/0x2e0
> [   17.768598]  driver_register+0x103/0x180
> [   17.768611]  ? 0xffffffffc102a000
> [   17.768625]  do_one_initcall+0xbb/0x3a0
> [   17.768639]  ? trace_event_raw_event_initcall_finish+0x120/0x120
> [   17.768646]  ? mark_held_locks+0x23/0x90
> [   17.768654]  ? lockdep_enabled+0x39/0x50
> [   17.768663]  ? lock_is_held_type+0xb8/0xf0
> [   17.768689]  ? rcu_read_lock_sched_held+0x3f/0x80
> [   17.768699]  ? kasan_unpoison_shadow+0x33/0x40
> [   17.768728]  do_init_module+0xfd/0x3c0
> [   17.768754]  load_module+0xc04/0xc70
> [   17.768785]  ? layout_and_allocate+0x260/0x260
> [   17.768800]  ? kernel_read_file_from_fd+0x4b/0x90
> [   17.768825]  __do_sys_finit_module+0xff/0x180
> [   17.768840]  ? __ia32_sys_init_module+0x40/0x40
> [   17.768932]  ? syscall_trace_enter.constprop.0+0x85/0x230
> [   17.768953]  do_syscall_64+0x33/0x80
> [   17.768963]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [   17.768971] RIP: 0033:0x7f155355e799
> [   17.768979] Code: 48 8d 3d 3a bf 0c 00 0f 05 eb a5 66 0f 1f 44 00 00
> 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f
> 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d a7 76 0c 00 f7 d8 64 89 01 48
> [   17.768984] RSP: 002b:00007ffccda06428 EFLAGS: 00000246 ORIG_RAX:
> 0000000000000139
> [   17.768995] RAX: ffffffffffffffda RBX: 000055c6d44158f0 RCX:
> 00007f155355e799
> [   17.769001] RDX: 0000000000000000 RSI: 00007f155367d3a3 RDI:
> 000000000000000f
> [   17.769008] RBP: 0000000000020000 R08: 0000000000000000 R09:
> 000055c6d4417960
> [   17.769014] R10: 000000000000000f R11: 0000000000000246 R12:
> 00007f155367d3a3
> [   17.769019] R13: 000055c6d4429ff0 R14: 0000000000000000 R15:
> 000055c6d441c100
> [   17.769080]
> ==================================================================
> [   17.769084] Disabling lock debugging due to kernel taint
> [   17.772656] BUG: kernel NULL pointer dereference, address:
> 0000000000000000
> [   17.786496] BTRFS: device fsid 293b6b08-509d-4de5-bde5-fc22f8707d6e
> devid 1 transid 10671 /dev/sda3 scanned by systemd-udevd (312)
> [   17.790614] #PF: supervisor write access in kernel mode
> [   17.790616] #PF: error_code(0x0002) - not-present page
> [   17.790619] PGD 0 P4D 0
> [   18.843454] Oops: 0002 [#1] SMP KASAN PTI
> [   18.843457] CPU: 4 PID: 327 Comm: systemd-udevd Tainted: G    B   W
>   E     5.10.0-rc3-1-default+ #639
> [   18.843458] Hardware name: Dell Inc. OptiPlex 9020/0N4YC8, BIOS A24
> 10/24/2018
> [   18.843468] RIP: 0010:ttm_range_man_fini+0x35/0x150 [ttm]
> [   18.843472] Code: 4c 63 ee 41 54 55 49 8d 6d 18 53 4c 8d 34 ef 48 89
> fb 4c 89 f7 48 83 ec 10 e8 57 07 86 cc 48 8b 2c eb 48 89 ef e8 0b 05 86
> cc <c6> 45 00 00 48 89 ee 48 89 df e8 4c 05 00 00 41 89 c4 85 c0 74 12
> [   18.890909] RSP: 0018:ffffc900018d77a8 EFLAGS: 00010282
> [   18.890912] RAX: 0000000000000001 RBX: ffff888158b40a88 RCX:
> dffffc0000000000
> [   18.890913] RDX: 0000000000000007 RSI: 0000000000000004 RDI:
> 0000000000000297
> [   18.890916] RBP: 0000000000000000 R08: 0000000000000000 R09:
> ffffffff8f546ae3
> [   18.917654] R10: fffffbfff1ea8d5c R11: 0000000000000001 R12:
> ffff888158b40a88
> [   18.917655] R13: 0000000000000001 R14: ffff888158b40b50 R15:
> ffff88812e3e6490
> [   18.917658] FS:  00007f15529ca940(0000) GS:ffff8887cce00000(0000)
> knlGS:0000000000000000
> [   18.917659] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [   18.917660] CR2: 0000000000000000 CR3: 000000012aac6004 CR4:
> 00000000001706e0
> [   18.917661] Call Trace:
> [   18.917738]  radeon_ttm_fini+0xde/0x210 [radeon]
> [   18.917802]  radeon_bo_fini+0xf/0x60 [radeon]
> [   18.964662]  si_fini+0x150/0x1d0 [radeon]
> [   18.964730]  radeon_device_fini+0x61/0x177 [radeon]
> [   18.973659]  radeon_driver_unload_kms+0x7a/0x130 [radeon]
> [   18.973752]  radeon_driver_load_kms+0x227/0x330 [radeon]
> [   18.984442]  drm_dev_register+0x13b/0x2b0
> [   18.984445]  ? drmm_add_final_kfree+0x46/0x60
> [   18.984505]  radeon_pci_probe+0x19c/0x260 [radeon]
> [   18.997717]  ? radeon_pmops_runtime_idle+0xe0/0xe0 [radeon]
> [   18.997723]  local_pci_probe+0x74/0xc0
> [   19.007104]  pci_call_probe+0xb7/0x1d0
> [   19.007107]  ? pci_pm_suspend_noirq+0x440/0x440
> [   19.007112]  pci_device_probe+0x102/0x140
> [   19.007117]  ? driver_sysfs_add+0xe2/0x150
> [  OK     19.023596]  really_probe+0x185/0x680
> [   19.023600]  driver_probe_device+0x13f/0x1d0
> [   19.023612]  device_driver_attach+0x114/0x120
> [   19.023615]  ? device_driver_attach+0x120/0x120
> [   19.023617]  __driver_attach+0xb0/0x1a0
> [   19.023619]  ? device_driver_attach+0x120/0x120
> [   19.023623]  bus_for_each_dev+0xdd/0x120
> 0m] Found device[   19.054256]  ? subsys_dev_iter_exit+0x10/0x10
> [   19.054260]  bus_add_driver+0x1fb/0x2e0
> [   19.054264]  driver_register+0x103/0x180
> [   19.054266]  ? 0xffffffffc102a000
> [   19.054270]  do_one_initcall+0xbb/0x3a0
> [   19.054273]  ? trace_event_raw_event_initcall_finish+0x120/0x120
> [   19.054276]  ? mark_held_locks+0x23/0x90
> [   19.054279]  ? lockdep_enabled+0x39/0x50
> [   19.054282]  ? lock_is_held_type+0xb8/0xf0
> [   19.054286]  ? rcu_read_lock_sched_held+0x3f/0x80
> [   19.054288]  ? kasan_unpoison_shadow+0x33/0x40
>   ST1000[   19.054292]  do_init_module+0xfd/0x3c0
> [   19.054296]  load_module+0xc04/0xc70
> DM003-1ER162 1   19.110979]  ? layout_and_allocate+0x260/0x260
> [   19.110982]  ? kernel_read_file_from_fd+0x4b/0x90
> [   19.110985]  __do_sys_finit_module+0xff/0x180
> [   19.110988]  ? __ia32_sys_init_module+0x40/0x40
> [   19.110995]  ? syscall_trace_enter.constprop.0+0x85/0x230
> [   19.111001]  do_syscall_64+0x33/0x80
> 0m.
> [   19.139555]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
> [   19.139558] RIP: 0033:0x7f155355e799
> [   19.139563] Code: 48 8d 3d 3a bf 0c 00 0f 05 eb a5 66 0f 1f 44 00 00
> 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f
> 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d a7 76 0c 00 f7 d8 64 89 01 48
> [   19.139566] RSP: 002b:00007ffccda06428 EFLAGS: 00000246 ORIG_RAX:
> 0000000000000139
> [   19.139571] RAX: ffffffffffffffda RBX: 000055c6d44158f0 RCX:
> 00007f155355e799
> [   19.139575] RDX: 0000000000000000 RSI: 00007f155367d3a3 RDI:
> 000000000000000f
> [   19.189525] RBP: 0000000000020000 R08: 0000000000000000 R09:
> 000055c6d4417960
> [   19.189526] R10: 000000000000000f R11: 0000000000000246 R12:
> 00007f155367d3a3
> [   19.189528] R13: 000055c6d4429ff0 R14: 0000000000000000 R15:
> 000055c6d441c100
> [   19.189532] Modules linked in: hid_generic(E) crct10dif_pclmul(E)
> crc32_pclmul(E) ghash_clmulni_intel(E) radeon(E+) aesni_intel(E)
> glue_helper(E) crypto_simd(E) drm_ttm_helper(E) cryptd(E) usbhid(E)
> ttm(E) i915(E+) prime_numbers(E) wm)
> [   19.211092] CR2: 0000000000000000
> [   19.211136] ---[ end trace a1567ba1be224826 ]---
> [   19.256281] RIP: 0010:ttm_range_man_fini+0x35/0x150 [ttm]
> [   19.256284] Code: 4c 63 ee 41 54 55 49 8d 6d 18 53 4c 8d 34 ef 48 89
> fb 4c 89 f7 48 83 ec 10 e8 57 07 86 cc 48 8b 2c eb 48 89 ef e8 0b 05 86
> cc <c6> 45 00 00 48 89 ee 48 89 df e8 4c 05 00 00 41 89 c4 85 c0 74 12
> [   19.256285] RSP: 0018:ffffc900018d77a8 EFLAGS: 00010282
> [   19.256288] RAX: 0000000000000001 RBX: ffff888158b40a88 RCX:
> dffffc0000000000
> [   19.256289] RDX: 0000000000000007 RSI: 0000000000000004 RDI:
> 0000000000000297
> [   19.256291] RBP: 0000000000000000 R08: 0000000000000000 R09:
> ffffffff8f546ae3
> [   19.256292] R10: fffffbfff1ea8d5c R11: 0000000000000001 R12:
> ffff888158b40a88
> [   19.256294] R13: 0000000000000001 R14: ffff888158b40b50 R15:
> ffff88812e3e6490
> [   19.256295] FS:  00007f15529ca940(0000) GS:ffff8887cce00000(0000)
> knlGS:0000000000000000
> [   19.256297] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [   19.256298] CR2: 0000000000000000 CR3: 000000012aac6004 CR4:
> 00000000001706e0
>
> The display remains dark after that. Reverting this patch restores
> functionality.
>
> Best regards
> Thomas
>
>> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
>> index 29062dbea299..788655ebafdb 100644
>> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
>> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
>> @@ -206,101 +206,6 @@ static int radeon_move_blit(struct ttm_buffer_object *bo,
>>   	return r;
>>   }
>>   
>> -static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
>> -				bool evict,
>> -				struct ttm_operation_ctx *ctx,
>> -				struct ttm_resource *new_mem)
>> -{
>> -	struct ttm_resource *old_mem = &bo->mem;
>> -	struct ttm_resource tmp_mem;
>> -	struct ttm_place placements;
>> -	struct ttm_placement placement;
>> -	int r;
>> -
>> -	tmp_mem = *new_mem;
>> -	tmp_mem.mm_node = NULL;
>> -	placement.num_placement = 1;
>> -	placement.placement = &placements;
>> -	placement.num_busy_placement = 1;
>> -	placement.busy_placement = &placements;
>> -	placements.fpfn = 0;
>> -	placements.lpfn = 0;
>> -	placements.mem_type = TTM_PL_TT;
>> -	placements.flags = 0;
>> -	r = ttm_bo_mem_space(bo, &placement, &tmp_mem, ctx);
>> -	if (unlikely(r)) {
>> -		return r;
>> -	}
>> -
>> -	r = ttm_tt_populate(bo->bdev, bo->ttm, ctx);
>> -	if (unlikely(r)) {
>> -		goto out_cleanup;
>> -	}
>> -
>> -	r = radeon_ttm_tt_bind(bo->bdev, bo->ttm, &tmp_mem);
>> -	if (unlikely(r)) {
>> -		goto out_cleanup;
>> -	}
>> -	r = radeon_move_blit(bo, true, &tmp_mem, old_mem);
>> -	if (unlikely(r)) {
>> -		goto out_cleanup;
>> -	}
>> -	r = ttm_bo_wait_ctx(bo, ctx);
>> -	if (unlikely(r))
>> -		goto out_cleanup;
>> -
>> -	radeon_ttm_tt_unbind(bo->bdev, bo->ttm);
>> -	ttm_resource_free(bo, &bo->mem);
>> -	ttm_bo_assign_mem(bo, new_mem);
>> -out_cleanup:
>> -	ttm_resource_free(bo, &tmp_mem);
>> -	return r;
>> -}
>> -
>> -static int radeon_move_ram_vram(struct ttm_buffer_object *bo,
>> -				bool evict,
>> -				struct ttm_operation_ctx *ctx,
>> -				struct ttm_resource *new_mem)
>> -{
>> -	struct ttm_resource *old_mem = &bo->mem;
>> -	struct ttm_resource tmp_mem;
>> -	struct ttm_placement placement;
>> -	struct ttm_place placements;
>> -	int r;
>> -
>> -	tmp_mem = *new_mem;
>> -	tmp_mem.mm_node = NULL;
>> -	placement.num_placement = 1;
>> -	placement.placement = &placements;
>> -	placement.num_busy_placement = 1;
>> -	placement.busy_placement = &placements;
>> -	placements.fpfn = 0;
>> -	placements.lpfn = 0;
>> -	placements.mem_type = TTM_PL_TT;
>> -	placements.flags = 0;
>> -	r = ttm_bo_mem_space(bo, &placement, &tmp_mem, ctx);
>> -	if (unlikely(r)) {
>> -		return r;
>> -	}
>> -
>> -	r = ttm_tt_populate(bo->bdev, bo->ttm, ctx);
>> -	if (unlikely(r))
>> -		goto out_cleanup;
>> -
>> -	r = radeon_ttm_tt_bind(bo->bdev, bo->ttm, &tmp_mem);
>> -	if (unlikely(r))
>> -		goto out_cleanup;
>> -
>> -	ttm_bo_assign_mem(bo, &tmp_mem);
>> -	r = radeon_move_blit(bo, true, new_mem, old_mem);
>> -	if (unlikely(r)) {
>> -		goto out_cleanup;
>> -	}
>> -out_cleanup:
>> -	ttm_resource_free(bo, &tmp_mem);
>> -	return r;
>> -}
>> -
>>   static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
>>   			  struct ttm_operation_ctx *ctx,
>>   			  struct ttm_resource *new_mem,
>> @@ -311,6 +216,17 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
>>   	struct ttm_resource *old_mem = &bo->mem;
>>   	int r;
>>   
>> +	if ((old_mem->mem_type == TTM_PL_SYSTEM &&
>> +	     new_mem->mem_type == TTM_PL_VRAM) ||
>> +	    (old_mem->mem_type == TTM_PL_VRAM &&
>> +	     new_mem->mem_type == TTM_PL_SYSTEM)) {
>> +		hop->fpfn = 0;
>> +		hop->lpfn = 0;
>> +		hop->mem_type = TTM_PL_TT;
>> +		hop->flags = 0;
>> +		return -EMULTIHOP;
>> +	}
>> +
>>   	if (new_mem->mem_type == TTM_PL_TT) {
>>   		r = radeon_ttm_tt_bind(bo->bdev, bo->ttm, new_mem);
>>   		if (r)
>> @@ -351,17 +267,8 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
>>   		goto memcpy;
>>   	}
>>   
>> -	if (old_mem->mem_type == TTM_PL_VRAM &&
>> -	    new_mem->mem_type == TTM_PL_SYSTEM) {
>> -		r = radeon_move_vram_ram(bo, evict, ctx, new_mem);
>> -	} else if (old_mem->mem_type == TTM_PL_SYSTEM &&
>> -		   new_mem->mem_type == TTM_PL_VRAM) {
>> -		r = radeon_move_ram_vram(bo, evict, ctx, new_mem);
>> -	} else {
>> -		r = radeon_move_blit(bo, evict,
>> -				     new_mem, old_mem);
>> -	}
>> -
>> +	r = radeon_move_blit(bo, evict,
>> +			     new_mem, old_mem);
>>   	if (r) {
>>   memcpy:
>>   		r = ttm_bo_move_memcpy(bo, ctx, new_mem);
>>



More information about the dri-devel mailing list