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