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@xxxxxxxxx> Cc: Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx> --- 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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel