• C
    drm/i915: Initialise ring vfuncs for old DRI paths · e8616b6c
    Chris Wilson 提交于
    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: NHerbert Xu <herbert@gondor.apana.org.au>
    Tested-by: NHerbert Xu <herbert@gondor.apana.org.au>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29153
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=23172Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@kernel.org
    e8616b6c
i915_dma.c 56.6 KB