Re: [PATCH] drm/i915: Initialise ring vfuncs for old DRI paths

From: Herbert Xu
Date: Wed Jan 19 2011 - 05:31:33 EST


On Wed, Jan 19, 2011 at 09:53:44AM +0000, Chris Wilson wrote:
> We weren't setting up the vfunc table when initialising the old DRI
> ringbuffer, leading to such OOPSes as:
>
> BUG: unable to handle kernel NULL pointer dereference at (null)
> IP: [<(null)>] (null)
> PGD 10c441067 PUD 1185e5067 PMD 0
> Oops: 0010 [#1] PREEMPT SMP
> last sysfs file: /sys/class/dmi/id/chassis_asset_tag
> CPU 3
> Modules linked in: i915 drm_kms_helper drm fb fbdev i2c_algo_bit
> cfbcopyarea video backlight output cfbimgblt cfbfillrect autofs4 ipv6
> nfs lockd fscache nfs_acl auth_rpcgss sunrpc coretemp hwmon_vid mousedev
> usbhid hid option usb_wwan snd_hda_codec_via asus_atk0110 atl1e
> usbserial snd_hda_intel snd_hda_codec firmware_class snd_hwdep snd_pcm
> snd_seq snd_timer snd_seq_device processor parport_pc thermal snd
> thermal_sys parport 8250_pnp button rng_core rtc_cmos shpchp hwmon
> rtc_core ehci_hcd pci_hotplug uhci_hcd soundcore tpm_tis i2c_i801
> rtc_lib tpm serio_raw snd_page_alloc tpm_bios i2c_core usbcore psmouse
> intel_agp sg pcspkr sr_mod evdev cdrom ext3 jbd mbcache dm_mod sd_mod
> ata_piix libata scsi_mod unix
> Jan 18 15:49:29 lithui kernel:
> Pid: 3605, comm: Xorg Not tainted 2.6.36.2 #5 P5KPL-CM/System Product
> Name
> RIP: 0010:[<0000000000000000>] [<(null)>] (null)
> RSP: 0018:ffff8801150d1d40 EFLAGS: 00010202
> RAX: 000000000001ffff RBX: ffff88011a011b00 RCX: 000000000001a704
> RDX: ffff880118566028 RSI: ffff880118566028 RDI: ffff880117876800
> RBP: ffff8801150d1d48 R08: ffff8801195fe300 R09: 00000000c0086444
> R10: 0000000000000001 R11: 0000000000003206 R12: ffff880117876800
> R13: ffff880118566000 R14: ffff880117876820 R15: ffff8801150d1df8
> FS: 00007f1038d456e0(0000) GS:ffff880001780000(0000)
> knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 00000001187e7000 CR4: 00000000000006e0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process Xorg (pid: 3605, threadinfo ffff8801150d0000, task
> ffff88011b016e40)
> Stack:
> ffffffffa043b8e6 ffff8801150d1d98 ffffffffa041768b dead000000000000
> <0> 0000000000000048 00007f1023f2a000 0000000000000044 0000000000000008
> <0> ffff88010d26bd80 ffff880117876800 ffff8801150d1df8 ffff8801150d1ea8
> Call Trace:
> [<ffffffffa043b8e6>] ? intel_ring_advance+0x16/0x20 [i915]
> [<ffffffffa041768b>] i915_irq_emit+0x15b/0x240 [i915]
> [<ffffffffa03ea7b1>] drm_ioctl+0x1f1/0x460 [drm]
> [<ffffffffa0417530>] ? i915_irq_emit+0x0/0x240 [i915]
> [<ffffffff810dd8f1>] ? do_sync_read+0xd1/0x120
> [<ffffffff81025b1f>] ? do_page_fault+0x1df/0x3d0
> [<ffffffff810ed5c7>] do_vfs_ioctl+0x97/0x550
> [<ffffffff8115c2ea>] ? security_file_permission+0x7a/0x90
> [<ffffffff810edb19>] sys_ioctl+0x99/0xa0
> [<ffffffff810024ab>] system_call_fastpath+0x16/0x1b
> Code: Bad RIP value.
> RIP [<(null)>] (null)
> RSP <ffff8801150d1d40>
> CR2: 0000000000000000
>
> Reported-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29153
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=23172
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>

Thank you Chris!

I'll try this patch tomorrow, but it sure likes it should do the
trick.

Cheers,
--
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/