[PATCH] drm/gma500: add missing drm_irq_uninstall

Jan Safrata jan.nikitenko at gmail.com
Thu Jan 15 06:07:32 PST 2015


psb_driver_unload did not call drm_irq_uninstall causing kernel oops
in modprobe after rmmod gma500_gfx:

BUG: unable to handle kernel paging request at f858cf08
IP: [<c124b313>] strcmp+0x13/0x30
*pdpt = 00000000016ea001 *pde = 0000000036c44067 *pte = 0000000000000000
Oops: 0000 [#1] SMP
Modules linked in: gma500_gfx(+) iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables eetis_ts ipv6 snd_hda_codec_cirrus option us]
CPU: 0 PID: 3648 Comm: modprobe Tainted: G           O 3.12.25-acs4+ #4
Hardware name: SECO 0866, BIOS 1.18 03/01/2012
task: f6d07440 ti: f6d54000 task.ti: f6d54000
EIP: 0060:[<c124b313>] EFLAGS: 00010082 CPU: 0
EIP is at strcmp+0x13/0x30
EAX: f851af67 EBX: f4565340 ECX: f6de8cdc EDX: f858cf08
ESI: f851af09 EDI: f858cf08 EBP: f6d55b58 ESP: f6d55b50
 DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
CR0: 8005003b CR2: f858cf08 CR3: 36575000 CR4: 000007e0
Stack:
 f6de8c80 f3913940 f6d55c08 c1071e73 f6d55b6c c1249d5f f6d55b84 f6d55b98
 00000282 f6de8cdc c15a9f66 000000e9 00041f1d 000000e9 00000000 00000000
 00000000 c170c24c f6d55bb8 c106a42c f7af0b40 f6d07440 f7af31c0 00000000
Call Trace:
 [<c1071e73>] register_handler_proc+0x83/0x110
 [<c1249d5f>] ? sprintf+0x1f/0x30
 [<c106a42c>] ? print_prefix+0x5c/0xb0
 [<c106a539>] ? msg_print_text+0xb9/0x170
 [<c106af18>] ? wake_up_klogd+0x28/0x30
 [<c106b26d>] ? console_unlock+0x34d/0x460
 [<c106e84c>] __setup_irq+0x22c/0x470
 [<f8512670>] ? psb_disable_pipestat+0xa0/0xa0 [gma500_gfx]
 [<c106eb29>] request_threaded_irq+0x99/0x120
 [<c12f574c>] drm_irq_install+0xfc/0x230
 [<f8512670>] ? psb_disable_pipestat+0xa0/0xa0 [gma500_gfx]
 [<f850af4e>] gma_power_restore+0x80e/0xa90 [gma500_gfx]
 [<c12f9362>] drm_get_pci_dev+0x102/0x2b0
 [<f850aa5d>] gma_power_restore+0x31d/0xa90 [gma500_gfx]
 [<c12664ff>] pci_device_probe+0x5f/0x90
 [<c130e1d9>] driver_probe_device+0x59/0x200
 [<c12660d6>] ? pci_match_device+0x96/0xa0
 [<c130e409>] __driver_attach+0x89/0x90
 [<c130e380>] ? driver_probe_device+0x200/0x200
 [<c130c952>] bus_for_each_dev+0x42/0x80
 [<c130ddda>] driver_attach+0x1a/0x20
 [<c130e380>] ? driver_probe_device+0x200/0x200
 [<c130d96c>] bus_add_driver+0xcc/0x270
 [<c130e9b5>] driver_register+0x55/0xe0
 [<c105b1a2>] ? __wake_up+0x42/0x50
 [<c12665be>] __pci_register_driver+0x2e/0x40
 [<f8425000>] ? 0xf8424fff
 [<c12f9614>] drm_pci_init+0x104/0x110
 [<f8425000>] ? 0xf8424fff
 [<f8425012>] init_module+0x12/0x14 [gma500_gfx]
 [<c1000422>] do_one_initcall+0xd2/0x120
 [<c10c34c7>] ? __vunmap+0x87/0xd0
 [<c10848b5>] load_module+0x1745/0x1f20
 [<c10851b5>] SyS_finit_module+0x75/0x80
 [<c14d6efe>] sysenter_do_call+0x12/0x16
Code: ac aa 84 c0 75 f7 31 c0 aa 89 d8 8b 75 f8 8b 5d f4 8b 7d fc 89 ec 5d c3 55 8d 2c 24 8d 64 24 f8 89 75 f8 89 7d fc 89 c6 89 d7 ac <ae> 75 08 84 c0 75 f8 31 c0 eb 04 19 c
EIP: [<c124b313>] strcmp+0x13/0x30 SS:ESP 0068:f6d55b50
CR2: 00000000f858cf08
---[ end trace ec712b3b117c8e34 ]---

Signed-off-by: Jan Safrata <jan.nikitenko at gmail.com>
Cc: Patrik Jakobsson <patrik.r.jakobsson at gmail.com>
---
 drivers/gpu/drm/gma500/psb_drv.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index 92e7e57..b1b837b 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -170,6 +170,8 @@ static int psb_driver_unload(struct drm_device *dev)
 			gma_backlight_exit(dev);
 		psb_modeset_cleanup(dev);
 
+		drm_irq_uninstall(dev);
+
 		if (dev_priv->ops->chip_teardown)
 			dev_priv->ops->chip_teardown(dev);
 
-- 
1.8.5.5



More information about the dri-devel mailing list