[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