projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
3083696
)
drm/amdgpu: fix null point error when rmmod amdgpu.
author
Rex Zhu
<Rex.Zhu@amd.com>
Mon, 22 May 2017 05:11:41 +0000
(13:11 +0800)
committer
Alex Deucher
<alexander.deucher@amd.com>
Thu, 25 May 2017 16:53:25 +0000
(12:53 -0400)
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]
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
index 236d9950221b62665e8728941faa5793fc757980..c0d8c6ff6380e8a69de8faf58d28963dde29c8de 100644
(file)
--- a/
drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
+++ b/
drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
@@
-425,10
+425,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;