diff options
author | Xiaojie Yuan <Xiaojie.Yuan@amd.com> | 2018-04-26 13:50:26 +0300 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-05-15 21:44:16 +0300 |
commit | f3336254263c3b6a7734379084f4873a335f1577 (patch) | |
tree | 4847693e2fbca0fd134459ce113594629e440941 | |
parent | 8a61bc085ffab3071c59efcbeff4044c034e7490 (diff) | |
download | linux-f3336254263c3b6a7734379084f4873a335f1577.tar.xz |
drm/amdgpu/uvd7: add emit_reg_write_reg_wait ring callback
Fix the NULL pointer dereference while running amdgpu_test:
[ 54.972246] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
[ 54.972265] IP: (null)
[ 54.972273] PGD 0 P4D 0
[ 54.972280] Oops: 0010 [#1] SMP PTI
[ 54.972288] Modules linked in: amdkfd amd_iommu_v2 amdgpu(OE) chash gpu_sched ttm drm_kms_helper drm i2c_algo_bit fb_sys_fops syscopyarea sysfillrect sysimgblt snd_hda_codec_realtek snd_hda_codec_generic snd_hda_codec_hdmi snd_hda_intel snd_hda_codec snd_hda_core snd_hwdep intel_rapl snd_pcm snd_seq_midi snd_seq_midi_event snd_rawmidi x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_seq snd_seq_device kvm irqbypass snd_timer crct10dif_pclmul crc32_pclmul ghash_clmulni_intel pcbc snd soundcore joydev input_leds aesni_intel aes_x86_64 crypto_simd glue_helper cryptd idma64 virt_dma mei_me intel_lpss_pci serio_raw intel_cstate intel_rapl_perf shpchp intel_pch_thermal mei mac_hid intel_lpss acpi_pad parport_pc ppdev nfsd lp auth_rpcgss nfs_acl lockd grace sunrpc parport autofs4 hid_generic
[ 54.972434] usbhid mxm_wmi e1000e psmouse ahci hid libahci wmi pinctrl_sunrisepoint video pinctrl_intel
[ 54.972457] CPU: 6 PID: 1393 Comm: uvd Tainted: G OE 4.16.0-rc7-27fb84fda777 #1
[ 54.972473] Hardware name: MSI MS-7984/Z170 KRAIT GAMING (MS-7984), BIOS B.80 05/11/2016
[ 54.972489] RIP: 0010: (null)
[ 54.972497] RSP: 0018:ffffaea002c8bcc0 EFLAGS: 00010202
[ 54.972508] RAX: 0000000000000000 RBX: ffff9d30d3c56f60 RCX: 00000000007c0002
[ 54.972522] RDX: 000000000001a6fb RSI: 000000000001a6e9 RDI: ffff9d30d3c56f60
[ 54.972536] RBP: ffffaea002c8bd10 R08: 0000000000000002 R09: ffffffffc06977d0
[ 54.972550] R10: 0000000000000040 R11: 0000000000000000 R12: 0000000000000002
[ 54.972564] R13: ffff9d30d3c5001c R14: ffff9d30d3c50000 R15: 0000000000000006
[ 54.972579] FS: 0000000000000000(0000) GS:ffff9d30eed80000(0000) knlGS:0000000000000000
[ 54.972594] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 54.972606] CR2: 0000000000000000 CR3: 00000002dbc0a001 CR4: 00000000003606e0
[ 54.972620] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 54.972634] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 54.972648] Call Trace:
[ 54.972685] ? gmc_v9_0_emit_flush_gpu_tlb+0x111/0x140 [amdgpu]
[ 54.972721] uvd_v7_0_ring_emit_vm_flush+0x31/0x70 [amdgpu]
[ 54.972751] amdgpu_vm_flush+0x5dc/0x6c0 [amdgpu]
[ 54.972787] ? pp_dpm_powergate_uvd+0x50/0x80 [amdgpu]
[ 54.972816] amdgpu_ib_schedule+0x120/0x4e0 [amdgpu]
[ 54.972850] amdgpu_job_run+0x17b/0x1c0 [amdgpu]
[ 54.972861] drm_sched_main+0x2cc/0x490 [gpu_sched]
[ 54.972873] ? wait_woken+0x80/0x80
[ 54.972882] kthread+0x121/0x140
[ 54.972891] ? drm_sched_job_finish+0xf0/0xf0 [gpu_sched]
[ 54.972902] ? kthread_create_worker_on_cpu+0x70/0x70
[ 54.972914] ret_from_fork+0x35/0x40
[ 54.972922] Code: Bad RIP value.
[ 54.972932] RIP: (null) RSP: ffffaea002c8bcc0
[ 54.972943] CR2: 0000000000000000
[ 54.972951] ---[ end trace 5feb349263bbf633 ]---
Signed-off-by: Xiaojie Yuan <Xiaojie.Yuan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c index 280c0826e183..2251db4048f5 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c @@ -1671,6 +1671,7 @@ static const struct amdgpu_ring_funcs uvd_v7_0_ring_vm_funcs = { .end_use = amdgpu_uvd_ring_end_use, .emit_wreg = uvd_v7_0_ring_emit_wreg, .emit_reg_wait = uvd_v7_0_ring_emit_reg_wait, + .emit_reg_write_reg_wait = amdgpu_ring_emit_reg_write_reg_wait_helper, }; static const struct amdgpu_ring_funcs uvd_v7_0_enc_ring_vm_funcs = { |