Chris Wilson
c7dca47bd6
drm/i915/ringbuffer: Fix use of stale HEAD position whilst polling for space
...
During suspend, Linus found that his machine would hang for 3 seconds,
and identified that intel_ring_buffer_wait() was the culprit:
"Because from looking at the code, I get the notion that
"intel_read_status_page()" may not be exact. But what happens if that
inexact value matches our cached ring->actual_head, so we never even
try to read the exact case? Does it _stay_ inexact for arbitrarily
long times? If so, we might wait for the ring to empty forever (well,
until the timeout - the behavior I see), even though the ring really
_is_ empty."
As the reported HEAD position is only updated every time it crosses a
64k boundary, whilst draining the ring it is indeed likely to remain one
value. If that value matches the last known HEAD position, we never read
the true value from the register and so trigger a timeout.
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-01-20 17:26:57 +00:00
..
accessibility
acpi
ACPI: Fix boot problem related to APEI with acpi_disabled set
2011-01-16 11:56:26 -08:00
amba
ata
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
atm
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
auxdisplay
base
thp: transparent hugepage sysfs meminfo
2011-01-13 17:32:46 -08:00
block
Merge branch 'for-2.6.38/drivers' of git://git.kernel.dk/linux-2.6-block
2011-01-13 10:50:24 -08:00
bluetooth
cdrom
Merge branch 'for-2.6.38/core' of git://git.kernel.dk/linux-2.6-block
2011-01-13 10:45:01 -08:00
char
Merge branch 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel
2011-01-14 10:30:09 -08:00
clk
clocksource
connector
cpufreq
cpuidle
Merge branch 'cpuidle-perf-events' into idle-test
2011-01-12 18:06:19 -05:00
crypto
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
2011-01-13 10:25:58 -08:00
dca
dca: remove unneeded NULL check
2011-01-13 08:03:09 -08:00
dio
dma
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
2011-01-17 10:54:41 -08:00
edac
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
eisa
firewire
firewire: ohci: fix compilation on arches without PAGE_KERNEL_RO
2011-01-13 15:48:29 +01:00
firmware
gpio
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
2011-01-14 09:08:00 -08:00
gpu
drm/i915/ringbuffer: Fix use of stale HEAD position whilst polling for space
2011-01-20 17:26:57 +00:00
hid
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2011-01-13 09:58:38 -08:00
hwmon
hwmon: (dme1737) Minor cleanups
2011-01-12 21:55:13 +01:00
i2c
i2c: Encourage move to dev_pm_ops by warning on use of legacy methods
2011-01-14 22:03:50 +01:00
ide
idle
Merge branch 'cpuidle-perf-events' into idle-test
2011-01-12 18:06:19 -05:00
ieee802154
infiniband
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
2011-01-17 14:45:48 -08:00
input
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
isdn
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
leds
leds: add output inversion option to backlight trigger
2011-01-13 08:03:06 -08:00
lguest
macintosh
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
mca
md
block: restore multiple bd_link_disk_holder() support
2011-01-14 18:44:22 +01:00
media
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
2011-01-14 09:29:05 -08:00
memstick
memstick: factor out transfer initiating functionality in mspro_block.c
2011-01-13 08:03:22 -08:00
message
mfd
mfd: ab8500-core chip version cut 2.0 support
2011-01-14 12:38:18 +01:00
misc
misc: Make AB8500_PWM driver depend on U8500 due to PWM breakage
2011-01-14 12:38:12 +01:00
mmc
mmc: sdhci-of: fix build on non-powerpc platforms
2011-01-14 00:22:44 -07:00
mtd
Merge git://git.infradead.org/mtd-2.6
2011-01-17 11:15:30 -08:00
net
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
2011-01-17 14:45:48 -08:00
nfc
drivers/nfc/pn544.c: fix min_t warnings
2011-01-16 17:28:21 -08:00
nubus
of
dt/flattree: Return virtual address from early_init_dt_alloc_memory_arch()
2011-01-15 22:01:58 -07:00
oprofile
parisc
parport
pci
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
2011-01-14 09:29:05 -08:00
pcmcia
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
platform
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
2011-01-13 20:15:35 -08:00
pnp
Merge branch 'pnp' into release
2011-01-12 04:59:44 -05:00
power
Merge git://git.infradead.org/battery-2.6
2011-01-14 09:25:59 -08:00
pps
pps: add parallel port PPS signal generator
2011-01-13 08:03:21 -08:00
ps3
rapidio
rapidio: add new idt sRIO switches
2011-01-13 08:03:18 -08:00
regulator
regulator: Support MAX8998/LP3974 DVS-GPIO
2011-01-14 12:38:16 +01:00
rtc
mfd: Support LP3974 RTC
2011-01-14 12:38:16 +01:00
s390
Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
2011-01-14 08:47:26 -08:00
sbus
scsi
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-post-merge-2.6
2011-01-14 16:29:49 -08:00
serial
Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm
2011-01-15 12:33:40 -08:00
sfi
SFI: use ioremap_cache() instead of ioremap()
2011-01-11 23:27:25 -05:00
sh
sn
spi
spi/spi_sh_msiof: fix a wrong free_irq() parameter
2011-01-17 10:17:36 -07:00
ssb
staging
staging: fix build failure in bcm driver
2011-01-17 17:39:39 -08:00
target
[SCSI] target: Add LIO target core v4.0.0-rc6
2011-01-14 10:12:29 -06:00
tc
telephony
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2011-01-13 10:05:56 -08:00
thermal
Merge branch 'misc' into release
2011-01-12 05:14:15 -05:00
tty
uio
usb
Merge branch 'for-2.6.38/core' of git://git.kernel.dk/linux-2.6-block
2011-01-13 10:45:01 -08:00
uwb
vhost
video
Merge branch 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm
2011-01-15 12:29:50 -08:00
virtio
vlynq
w1
w1: DS2423 counter driver and documentation
2011-01-13 08:03:22 -08:00
watchdog
watchdog: Add MCF548x watchdog driver.
2011-01-12 13:51:35 +00:00
xen
Merge branch 'stable/gntdev' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
2011-01-13 18:46:48 -08:00
zorro
Kconfig
[SCSI] target: Add LIO target core v4.0.0-rc6
2011-01-14 10:12:29 -06:00
Makefile
[SCSI] target: Add LIO target core v4.0.0-rc6
2011-01-14 10:12:29 -06:00