Mario Kleiner
e1d09dc0cc
drm/amdgpu: Don't hang in amdgpu_flip_work_func on disabled crtc.
...
This fixes a regression introduced in Linux 4.4.
This is a port of the same fix for radeon-kms in the
patch "drm/radeon: Don't hang in radeon_flip_work_func
on disabled crtc. (v2)"
Limit the amount of time amdgpu_flip_work_func can
delay programming a page flip, by both limiting the
maximum amount of time per wait cycle and the maximum
number of wait cycles. Continue the flip if the limit
is exceeded, even if that may result in a visual or
timing glitch.
This is to prevent a hang of page flips, as reported
in fdo bug #93746 : Disconnecting a DisplayPort display
in parallel to a kms pageflip getting queued can cause
the following hang of page flips and thereby an unusable
desktop:
1. kms pageflip ioctl() queues pageflip -> queues execution
of amdgpu_flip_work_func.
2. Hotunplug of display causes the driver to DPMS OFF
the unplugged display. Display engine shuts down,
scanout no longer moves, but stays at its resting
position at start line of vblank.
3. amdgpu_flip_work_func executes while crtc is off, and
due to the non-moving scanout position, the new flip
delay code introduced into Linux 4.4 by
commit 8e36f9d33c ("drm/amdgpu: Fixup hw vblank counter/ts..")
enters an infinite wait loop.
4. After reconnecting the display, the pageflip continues
to hang in 3. and the display doesn't update its view
of the desktop.
This patch fixes the Linux 4.4 regression from fdo bug #93746
<https://bugs.freedesktop.org/show_bug.cgi?id=93746 >
Reported-by: Bernd Steinhauser <linux@bernd-steinhauser.de>
Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Cc: <stable@vger.kernel.org> # 4.4+
Cc: Michel Dänzer <michel.daenzer@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2016-02-19 18:15:30 -05:00
..
accessibility
acpi
Merge branches 'pm-core' and 'pm-domains'
2016-02-06 00:34:01 +01:00
amba
android
ata
ahci: Intel DNV device IDs SATA
2016-02-10 11:35:55 -05:00
atm
atm: solos-pci: use to_pci_dev()
2015-12-29 15:32:24 -05:00
auxdisplay
base
Merge branch 'component' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
2016-02-14 10:40:21 -08:00
bcma
GPIO bulk updates for the v4.5 kernel cycle:
2016-01-17 12:32:01 -08:00
block
null_blk: oops when initializing without lightnvm
2016-02-11 08:56:09 -07:00
bluetooth
Bluetooth: btmrvl: don't send data to firmware while processing suspend
2016-01-06 16:37:14 +01:00
bus
vexpress fixes for v4.5
2016-02-01 12:27:18 -08:00
cdrom
cdrom: don't open-code memdup_user()
2016-01-06 08:25:24 -05:00
char
Fix a compile error on IPMI when ACPI is disabled.
2016-02-03 10:04:58 -08:00
clk
ARM: DT updates for v4.5
2016-01-20 18:16:29 -08:00
clocksource
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2016-01-31 15:49:06 -08:00
connector
connector: bump skb->users before callback invocation
2016-01-04 21:46:45 -05:00
cpufreq
Merge branches 'pm-cpuidle', 'pm-cpufreq', 'pm-domains' and 'pm-sleep'
2016-01-29 21:45:17 +01:00
cpuidle
Merge branches 'pm-cpuidle', 'pm-cpufreq', 'pm-domains' and 'pm-sleep'
2016-01-29 21:45:17 +01:00
crypto
crypto: marvell/cesa - fix test in mv_cesa_dev_dma_init()
2016-02-06 15:23:56 +08:00
dca
devfreq
PM / devfreq: Do not show statistics if it's not ready.
2016-01-13 17:30:33 +09:00
dio
dma
dmaengine fixes for 4.5-rc1
2016-01-20 10:15:21 -08:00
dma-buf
edac
EDAC, i5100: Use to_delayed_work()
2016-01-01 18:31:34 +01:00
eisa
extcon
firewire
firmware
UBSAN: run-time undefined behavior sanity checker
2016-01-20 17:09:18 -08:00
fmc
fpga
gpio
gpio: davinci: Fix the number of controllers allocated
2016-02-10 11:00:49 +01:00
gpu
drm/amdgpu: Don't hang in amdgpu_flip_work_func on disabled crtc.
2016-02-19 18:15:30 -05:00
hid
asm-generic changes for 4.5
2016-01-20 17:30:20 -08:00
hsi
HSI: omap_ssi_port: fix handling of_get_named_gpio result
2016-01-07 16:07:54 +01:00
hv
char/misc patches for 4.5-rc1
2016-01-13 10:23:36 -08:00
hwmon
hwmon: (fam15h_power) Add bit masking for tdp_limit
2016-01-27 18:48:46 -08:00
hwspinlock
drivers/hwspinlock: fix race between radix tree insertion and lookup
2016-02-03 08:28:43 -08:00
hwtracing
i2c
i2c: piix4: don't regress on bus names
2016-01-29 11:13:52 +01:00
ide
drivers/ide: make ide-scan-pci.c driver explicitly non-modular
2016-01-18 14:12:33 -05:00
idle
iio
Second set of IIO fixes for the 4.5 cycle. These ones are mostly
2016-02-01 13:08:26 -08:00
infiniband
IB/mlx5: Fix RC transport send queue overhead computation
2016-02-12 14:56:08 -05:00
input
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
2016-02-10 12:21:57 -08:00
iommu
SVM fixes for Linux 4.5
2016-02-16 08:04:06 -08:00
ipack
irqchip
irqchip/gic: Only set the EOImodeNS bit for the root controller
2016-02-11 10:20:02 +00:00
isdn
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2016-01-11 23:55:43 -05:00
leds
GPIO bulk updates for the v4.5 kernel cycle:
2016-01-17 12:32:01 -08:00
lguest
lguest: Map switcher text R/O
2016-01-12 12:17:28 +01:00
lightnvm
lightnvm: allow to force mm initialization
2016-02-04 09:19:45 -07:00
macintosh
mailbox
mailbox: Fix dependencies for !HAS_IOMEM archs
2016-02-02 16:47:14 +05:30
mcb
md
Merge branch 'mymd/for-next' into mymd/for-linus
2016-02-03 15:43:59 -08:00
media
[media] saa7134-alsa: Only frees registered sound cards
2016-02-04 16:26:10 -02:00
memory
ARM: SoC driver updates for v4.5
2016-01-20 18:42:30 -08:00
memstick
memstick: use sector_div instead of do_div
2016-01-20 17:09:18 -08:00
message
mfd
thermal: allow u8500-thermal driver to be a module
2016-02-09 14:18:23 -08:00
misc
mei: validate request value in client notify request ioctl
2016-02-06 22:12:56 -08:00
mmc
Revert "mmc: block: don't use parameter prefix if built as module"
2016-02-11 16:49:35 +01:00
mtd
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
2016-01-24 12:50:56 -08:00
net
Additional 4.5-rc3 fixes
2016-02-13 17:35:23 -08:00
nfc
ntb
NTB: Fix macro parameter conflict with field name
2016-01-21 19:53:10 -05:00
nubus
nvdimm
libnvdimm, pfn: fix restoring memmap location
2016-01-29 17:43:16 -08:00
nvme
NVMe: Rate limit nvme IO warnings
2016-02-12 08:10:31 -07:00
nvmem
nvmem: qfprom: Specify LE device endianness
2016-02-07 23:09:13 -08:00
of
DeviceTree fixes for 4.5-rc5:
2016-02-17 11:50:53 -08:00
oprofile
wrappers for ->i_mutex access
2016-01-22 18:04:28 -05:00
parisc
parisc: convert to dma_map_ops
2016-01-20 17:09:18 -08:00
parport
parport: avoid assignment in if
2016-01-03 16:32:59 -08:00
pci
PCI updates for v4.5:
2016-02-12 15:31:22 -08:00
pcmcia
perf
phy
phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload
2016-02-10 11:46:01 +05:30
pinctrl
GPIO bulk updates for the v4.5 kernel cycle:
2016-01-17 12:32:01 -08:00
platform
intel_scu_ipcutil: underflow in scu_reg_access()
2016-01-30 09:40:35 -08:00
pnp
PNP: Add Haswell-ULT to Intel MCH size workaround
2016-02-03 01:00:29 +01:00
power
power: bq27xxx_battery: Fix bq27541 AveragePower register address
2016-01-14 01:03:18 +01:00
powercap
Merge branch 'powercap'
2016-01-12 01:12:40 +01:00
pps
ps3
ptp
ptp: ixp46x: use helpers for converting ns to timespec
2016-01-29 12:38:59 -08:00
pwm
pwm: Mark all devices as "might sleep"
2016-01-21 15:04:59 +01:00
rapidio
rapidio: use kobj_to_dev()
2016-01-20 17:09:18 -08:00
ras
regulator
regulator: Update for v4.5
2016-01-15 12:14:47 -08:00
remoteproc
virtio: make find_vqs() checkpatch.pl-friendly
2016-01-12 20:47:06 +02:00
reset
rpmsg
virtio: make find_vqs() checkpatch.pl-friendly
2016-01-12 20:47:06 +02:00
rtc
RTC for 4.5
2016-01-18 12:10:45 -08:00
s390
s390/cio: update measurement characteristics
2016-01-26 12:47:51 +01:00
sbus
convert a bunch of open-coded instances of memdup_user_nul()
2016-01-04 10:26:58 -05:00
scsi
SCSI fixes on 20160218
2016-02-18 16:24:48 -08:00
sfi
sh
sn
soc
ARM: SoC support for Tegra platforms for v4.5
2016-01-22 17:30:52 -08:00
spi
Merge remote-tracking branches 'spi/fix/atmel', 'spi/fix/bcm2835aux', 'spi/fix/fsl-espi', 'spi/fix/imx', 'spi/fix/loopback' and 'spi/fix/omap2-mcspi' into spi-linus
2016-02-12 23:04:41 +00:00
spmi
ssb
ssb: mark ssb_bus_register as __maybe_unused
2016-01-19 21:25:57 +02:00
staging
Staging / IIO driver fixes for 4.5-rc3
2016-02-06 22:13:16 -08:00
target
target/transport: add flag to indicate CPU Affinity is observed
2016-02-10 23:08:55 -08:00
tc
thermal
thermal: cpu_cooling: fix out of bounds access in time_in_idle
2016-02-11 07:13:29 -08:00
thunderbolt
tty
Revert "8250: uniphier: allow modular build with 8250 console"
2016-02-07 18:22:54 -08:00
uio
usb
xhci: harden xhci_find_next_ext_cap against device removal
2016-02-04 17:00:10 -08:00
uwb
vfio
vfio/noiommu: Don't use iommu_present() to track fake groups
2016-01-27 11:22:25 -07:00
vhost
video
video: fbdev: imxfb: Provide a reset mechanism
2016-01-29 14:20:16 +02:00
virt
virtio
virtio_pci: fix use after free on release
2016-01-26 10:18:28 +02:00
vlynq
vme
w1
watchdog
watchdog: Fix dependencies for !HAS_IOMEM archs
2016-01-31 16:54:36 +01:00
xen
Merge branch 'stable/for-linus-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm
2016-01-29 15:13:48 -08:00
zorro
Kconfig
Makefile