linux/drivers
Chris Wilson af62610313 drm/i915: Hold a reference to the object whilst unbinding the eviction list
During heavy aperture thrashing we may be forced to wait upon several active
objects during eviction. The active list may be the last reference to
these objects and so the action of waiting upon one of them may cause
another to be freed (and itself unbound). To prevent the object
disappearing underneath us, we need to acquire and hold a reference
whilst unbinding.

This should fix the reported page refcount OOPS:

kernel BUG at drivers/gpu/drm/i915/i915_gem.c:1444!
...
RIP: 0010:[<ffffffffa0093026>]  [<ffffffffa0093026>] i915_gem_object_put_pages+0x25/0xf5 [i915]
Call Trace:
 [<ffffffffa009481d>] i915_gem_object_unbind+0xc5/0x1a7 [i915]
 [<ffffffffa0098ab2>] i915_gem_evict_something+0x3bd/0x409 [i915]
 [<ffffffffa0027923>] ? drm_gem_object_lookup+0x27/0x57 [drm]
 [<ffffffffa0093bc3>] i915_gem_object_bind_to_gtt+0x1d3/0x279 [i915]
 [<ffffffffa0095b30>] i915_gem_object_pin+0xa3/0x146 [i915]
 [<ffffffffa0027948>] ? drm_gem_object_lookup+0x4c/0x57 [drm]
 [<ffffffffa00961bc>] i915_gem_do_execbuffer+0x50d/0xe32 [i915]

Reported-by: Shawn Starr <shawn.starr@rogers.com>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=18902
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-09-20 20:50:00 +01:00
..
accessibility
acpi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2010-09-07 16:00:17 -07:00
amba
ata libata-sff: Reenable Port Multiplier after libata-sff remodeling. 2010-09-09 22:31:55 -04:00
atm Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-12 09:11:31 -07:00
auxdisplay
base PM: Prevent waiting forever on asynchronous resume after failing suspend 2010-09-09 00:49:43 +02:00
block Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2010-09-10 07:26:27 -07:00
bluetooth
cdrom
char drm/i915,agp/intel: Add second set of PCI-IDs for B43 2010-09-17 08:22:30 +01:00
clocksource
connector
cpufreq
cpuidle
crypto [S390] zcrypt: fix Kconfig dependencies 2010-08-13 10:06:54 +02:00
dca
dio
dma Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-12 09:11:31 -07:00
edac amd64_edac: Do not report error overflow as a separate error 2010-08-26 12:46:03 +02:00
eisa
firewire firewire: ohci: work around VIA and NEC PHY packet reception bug 2010-08-29 09:17:31 +02:00
firmware Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-08-14 12:34:34 -07:00
gpio gpio: sx150x: correct and refine reset-on-probe behavior 2010-09-09 18:57:24 -07:00
gpu drm/i915: Hold a reference to the object whilst unbinding the eviction list 2010-09-20 20:50:00 +01:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2010-08-18 15:29:38 -07:00
hwmon hp_accel: add quirks for HP ProBook 532x and HP Mini 5102 2010-09-09 18:57:22 -07:00
i2c Merge branch 'for-linus/i2c-2636' of git://git.fluff.org/bjdooks/linux 2010-08-14 11:57:54 -07:00
ide ide: use module_param_named rather than module_param_call 2010-08-11 23:04:39 +09:30
idle Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6 2010-08-15 11:17:52 -07:00
ieee1394
ieee802154
infiniband Merge branches 'cxgb3' and 'nes' into for-linus 2010-09-08 14:43:28 -07:00
input Input: i8042 - fix device removal on unload 2010-08-31 18:28:15 -07:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2010-08-23 18:30:30 -07:00
leds Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-12 09:11:31 -07:00
lguest
macintosh via-pmu: Add compat_pmu_ioctl 2010-08-24 15:28:28 +10:00
mca
md md: resolve confusion of MD_CHANGE_CLEAN 2010-08-30 18:06:21 +10:00
media V4L/DVB: mantis: Fix IR_CORE dependency 2010-08-24 10:42:08 -07:00
memstick memstick: fix hangs on unexpected device removal in mspro_blk 2010-08-12 08:43:31 -07:00
message fusion: add function parameter names to kernel-doc 2010-08-14 16:21:00 -07:00
mfd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lrg/voltage-2.6 2010-08-12 10:01:30 -07:00
misc Merge branch 'params' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2010-08-12 10:01:59 -07:00
mmc drivers/mmc/host/imxmmc.c: adjust confusing if indentation 2010-09-09 18:57:23 -07:00
mtd UBI: do not oops when erroneous PEB is scheduled for scrubbing 2010-08-30 13:32:31 +03:00
net ipheth: remove incorrect devtype to WWAN 2010-09-09 21:41:59 -07:00
nubus
of
oprofile oprofile: fix crash when accessing freed task structs 2010-08-25 09:09:09 +02:00
parisc
parport Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-12 09:11:31 -07:00
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2010-09-07 16:00:17 -07:00
pcmcia Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6 2010-08-12 09:11:31 -07:00
platform intel_scu_ipc: fix IPC i2c write bug 2010-08-24 10:42:09 -07:00
pnp
power Merge git://git.infradead.org/battery-2.6 2010-08-12 09:58:33 -07:00
pps
ps3
rapidio
regulator regulator: Remove default DEBUG define from TPS6586x 2010-08-11 11:38:03 +01:00
rtc drivers/rtc/rtc-pl031.c: do not mark PL031 IRQ as shared 2010-09-09 18:57:24 -07:00
s390 Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2010-09-10 07:26:27 -07:00
sbus
scsi [SCSI] fix use-after-free in scsi_init_io() 2010-09-09 09:58:18 -05:00
serial serial: bfin_sport_uart: restore transmit frame sync fix 2010-09-03 17:29:04 -07:00
sfi
sh
sn
spi m68knommu: include sched.h in ColdFire/SPI driver 2010-08-18 12:44:31 +10:00
ssb
staging Staging: wlan-ng: Explicitly set some fields in cfg80211 interface 2010-09-03 17:37:16 -07:00
tc
telephony
thermal
uio
usb USB: ftdi_sio: Added custom PIDs for ChamSys products 2010-09-03 17:33:41 -07:00
uwb
vhost vhost: error handling fix 2010-09-06 09:49:39 +03:00
video ARM: pxa168fb: fix section mismatch 2010-08-30 09:59:44 +08:00
virtio
vlynq
w1
watchdog watchdog: hpwdt (12/12): Make NMI decoding a compile-time option 2010-08-13 20:54:53 +00:00
xen Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-08-28 13:55:31 -07:00
zorro
Kconfig
Makefile