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

Thomas Zimmermann tzimmermann at suse.de
Mon Nov 16 12:51:48 UTC 2020


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);
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


More information about the dri-devel mailing list