[PATCH] drm/gma500: add missing drm_irq_uninstall

Patrik Jakobsson patrik.r.jakobsson at gmail.com
Tue Jan 20 16:07:24 PST 2015


On Thu, Jan 15, 2015 at 3:07 PM, Jan Safrata <jan.nikitenko at gmail.com> wrote:
> 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>

Reviewed-by: 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