[PATCH 1/2] drm/amdgpu: fix null point error when rmmod amdgpu.
Deucher, Alexander
Alexander.Deucher at amd.com
Tue May 23 18:32:01 UTC 2017
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Rex Zhu
> Sent: Monday, May 22, 2017 5:10 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Zhu, Rex
> Subject: [PATCH 1/2] drm/amdgpu: fix null point error when rmmod amdgpu.
>
> this bug happened when amdgpu load failed.
>
> [ 75.740951] BUG: unable to handle kernel paging request at
> 00000000000031c0
> [ 75.748167] IP: [<ffffffffa064a0e0>]
> amdgpu_fbdev_restore_mode+0x20/0x60 [amdgpu]
> [ 75.755774] PGD 0
>
> [ 75.759185] Oops: 0000 [#1] SMP
> [ 75.762408] Modules linked in: amdgpu(OE-) ttm(OE) drm_kms_helper(OE)
> drm(OE) i2c_algo_bit(E) fb_sys_fops(E) syscopyarea(E) sysfillrect(E)
> sysimgblt(E) rpcsec_gss_krb5(E) nfsv4(E) nfs(E) fscache(E) eeepc_wmi(E)
> asus_wmi(E) sparse_keymap(E) intel_rapl(E) snd_hda_codec_hdmi(E)
> snd_hda_codec_realtek(E) snd_hda_codec_generic(E) snd_hda_intel(E)
> snd_hda_codec(E) snd_hda_core(E) x86_pkg_temp_thermal(E)
> intel_powerclamp(E) snd_hwdep(E) snd_pcm(E) snd_seq_midi(E)
> coretemp(E) kvm_intel(E) snd_seq_midi_event(E) snd_rawmidi(E) kvm(E)
> snd_seq(E) joydev(E) snd_seq_device(E) snd_timer(E) irqbypass(E)
> crct10dif_pclmul(E) crc32_pclmul(E) mei_me(E) ghash_clmulni_intel(E)
> snd(E) aesni_intel(E) mei(E) soundcore(E) aes_x86_64(E) shpchp(E)
> serio_raw(E) lrw(E) acpi_pad(E) gf128mul(E) glue_helper(E) ablk_helper(E)
> mac_hid(E)
> [ 75.835574] cryptd(E) parport_pc(E) ppdev(E) lp(E) nfsd(E) parport(E)
> auth_rpcgss(E) nfs_acl(E) lockd(E) grace(E) sunrpc(E) autofs4(E)
> hid_generic(E) usbhid(E) mxm_wmi(E) psmouse(E) e1000e(E) ptp(E)
> pps_core(E) ahci(E) libahci(E) wmi(E) video(E) i2c_hid(E) hid(E)
> [ 75.858489] CPU: 5 PID: 1603 Comm: rmmod Tainted: G OE 4.9.0-
> custom #2
> [ 75.866183] Hardware name: System manufacturer System Product
> Name/Z170-A, BIOS 0901 08/31/2015
> [ 75.875050] task: ffff88045d1bbb80 task.stack: ffffc90002de4000
> [ 75.881094] RIP: 0010:[<ffffffffa064a0e0>] [<ffffffffa064a0e0>]
> amdgpu_fbdev_restore_mode+0x20/0x60 [amdgpu]
> [ 75.891238] RSP: 0018:ffffc90002de7d48 EFLAGS: 00010286
> [ 75.896648] RAX: 0000000000000000 RBX: 0000000000000000 RCX:
> 0000000000000001
> [ 75.903933] RDX: 0000000000000000 RSI: ffff88045d1bbb80 RDI:
> 0000000000000286
> [ 75.911183] RBP: ffffc90002de7d50 R08: 0000000000000502 R09:
> 0000000000000004
> [ 75.918449] R10: 0000000000000000 R11: 0000000000000001 R12:
> ffff880464bf0000
> [ 75.925675] R13: ffffffffa0853000 R14: 0000000000000000 R15:
> 0000564e44f88210
> [ 75.932980] FS: 00007f13d5400700(0000) GS:ffff880476540000(0000)
> knlGS:0000000000000000
> [ 75.941238] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 75.947088] CR2: 00000000000031c0 CR3: 000000045fd0b000 CR4:
> 00000000003406e0
> [ 75.954332] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
> 0000000000000000
> [ 75.961566] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
> 0000000000000400
> [ 75.968834] Stack:
> [ 75.970881] ffff880464bf0000 ffffc90002de7d60 ffffffffa0636592
> ffffc90002de7d80
> [ 75.978454] ffffffffa059015f ffff880464bf0000 ffff880464bf0000
> ffffc90002de7da8
> [ 75.986076] ffffffffa0595216 ffff880464bf0000 ffff880460f4d000
> ffffffffa0853000
> [ 75.993692] Call Trace:
> [ 75.996177] [<ffffffffa0636592>] amdgpu_driver_lastclose_kms+0x12/0x20
> [amdgpu]
> [ 76.003700] [<ffffffffa059015f>] drm_lastclose+0x2f/0xd0 [drm]
> [ 76.009777] [<ffffffffa0595216>] drm_dev_unregister+0x16/0xd0 [drm]
> [ 76.016255] [<ffffffffa0595944>] drm_put_dev+0x34/0x70 [drm]
> [ 76.022139] [<ffffffffa062f365>] amdgpu_pci_remove+0x15/0x20
> [amdgpu]
> [ 76.028800] [<ffffffff81416499>] pci_device_remove+0x39/0xc0
> [ 76.034661] [<ffffffff81531caa>] __device_release_driver+0x9a/0x140
> [ 76.041121] [<ffffffff81531e58>] driver_detach+0xb8/0xc0
> [ 76.046575] [<ffffffff81530c95>] bus_remove_driver+0x55/0xd0
> [ 76.052401] [<ffffffff815325fc>] driver_unregister+0x2c/0x50
> [ 76.058244] [<ffffffff81416289>] pci_unregister_driver+0x29/0x90
> [ 76.064466] [<ffffffffa0596c5e>] drm_pci_exit+0x9e/0xb0 [drm]
> [ 76.070507] [<ffffffffa0796d71>] amdgpu_exit+0x1c/0x32 [amdgpu]
> [ 76.076609] [<ffffffff81104810>] SyS_delete_module+0x1a0/0x200
> [ 76.082627] [<ffffffff810e2b1a>] ? rcu_eqs_enter.isra.36+0x4a/0x50
> [ 76.089001] [<ffffffff8100392e>] do_syscall_64+0x6e/0x180
> [ 76.094583] [<ffffffff817e1d2f>] entry_SYSCALL64_slow_path+0x25/0x25
> [ 76.101114] Code: 94 c0 c3 31 c0 5d c3 0f 1f 40 00 0f 1f 44 00 00 55 31 c0 48 89
> e5 53 48 89 fb 48 c7 c7 1d 21 84 a0 e8 ab 77 b3 e0 e8 fc 8b d7 e0 <48> 8b bb c0
> 31 00 00 48 85 ff 74 09 e8 ff eb fc ff 85 c0 75 03
> [ 76.121432] RIP [<ffffffffa064a0e0>]
> amdgpu_fbdev_restore_mode+0x20/0x60 [amdgpu]
>
> Change-Id: I8021d72a3381bc68b6724b43b7a12cb6c5acbe9a
> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> index e869e60..667996b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> @@ -430,10 +430,15 @@ bool amdgpu_fbdev_robj_is_fb(struct
> amdgpu_device *adev, struct amdgpu_bo *robj)
>
> void amdgpu_fbdev_restore_mode(struct amdgpu_device *adev)
> {
> - struct amdgpu_fbdev *afbdev = adev->mode_info.rfbdev;
> + struct amdgpu_fbdev *afbdev;
> struct drm_fb_helper *fb_helper;
> int ret;
>
> + if (!adev)
> + return;
> +
> + afbdev = adev->mode_info.rfbdev;
> +
> if (!afbdev)
> return;
>
> --
> 1.9.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list