linux/drivers
Stephen Chandler Paul c043ef53c7 DRM - radeon: Don't link train DisplayPort on HPD until we get the dpcd
commit 924f92bf12 upstream.

Most of the time this isn't an issue since hotplugging an adaptor will
trigger a crtc mode change which in turn, causes the driver to probe
every DisplayPort for a dpcd. However, in cases where hotplugging
doesn't cause a mode change (specifically when one unplugs a monitor
from a DisplayPort connector, then plugs that same monitor back in
seconds later on the same port without any other monitors connected), we
never probe for the dpcd before starting the initial link training. What
happens from there looks like this:

	- GPU has only one monitor connected. It's connected via
	  DisplayPort, and does not go through an adaptor of any sort.

	- User unplugs DisplayPort connector from GPU.

	- Change in HPD is detected by the driver, we probe every
	  DisplayPort for a possible connection.

	- Probe the port the user originally had the monitor connected
	  on for it's dpcd. This fails, and we clear the first (and only
	  the first) byte of the dpcd to indicate we no longer have a
	  dpcd for this port.

	- User plugs the previously disconnected monitor back into the
	  same DisplayPort.

	- radeon_connector_hotplug() is called before everyone else,
	  and tries to handle the link training. Since only the first
	  byte of the dpcd is zeroed, the driver is able to complete
	  link training but does so against the wrong dpcd, causing it
	  to initialize the link with the wrong settings.

	- Display stays blank (usually), dpcd is probed after the
	  initial link training, and the driver prints no obvious
	  messages to the log.

In theory, since only one byte of the dpcd is chopped off (specifically,
the byte that contains the revision information for DisplayPort), it's
not entirely impossible that this bug may not show on certain monitors.
For instance, the only reason this bug was visible on my ASUS PB238
monitor was due to the fact that this monitor using the enhanced framing
symbol sequence, the flag for which is ignored if the radeon driver
thinks that the DisplayPort version is below 1.1.

Signed-off-by: Stephen Chandler Paul <cpaul@redhat.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-09-21 10:00:07 -07:00
..
accessibility
acpi ACPICA: Tables: Fix an issue that FACS initialization is performed twice 2015-08-03 09:29:46 -07:00
amba
ata ata: pmp: add quirk for Marvell 4140 SATA PMP 2015-08-10 12:20:31 -07:00
atm atm: idt77252: fix dev refcnt leak 2013-12-08 07:29:25 -08:00
auxdisplay
base Fix firmware loader uevent buffer NULL pointer dereference 2015-08-03 09:29:47 -07:00
bcma
block rbd: fix copyup completion race 2015-08-16 20:51:39 -07:00
bluetooth Bluetooth: btusb: Fix memory leak in Intel setup routine 2015-08-03 09:29:42 -07:00
bus bus: mvebu: pass the coherency availability information at init time 2015-07-03 19:48:09 -07:00
cdrom
char ipmi: fix timeout calculation when bmc is disconnected 2015-08-16 20:51:37 -07:00
clk clk: sunxi: Support factor clocks with N factor starting not from 0 2015-03-18 13:22:34 +01:00
clocksource clocksource: exynos_mct: Fix bitmask regression for exynos4_mct_write 2015-01-29 17:40:56 -08:00
connector net: Use netlink_ns_capable to verify the permisions of netlink messages 2014-06-26 15:12:37 -04:00
cpufreq cpufreq: speedstep-smi: enable interrupts when waiting 2015-03-06 14:40:48 -08:00
cpuidle cpuidle / menu: Return (-1) if there are no suitable states 2015-08-03 09:29:41 -07:00
crypto crypto: caam - fix memory corruption in ahash_final_ctx 2015-09-13 09:07:59 -07:00
dca
devfreq
dio
dma dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup 2015-08-03 09:29:46 -07:00
edac EDAC, ppc4xx: Access mci->csrows array elements properly 2015-09-13 09:07:59 -07:00
eisa Revert "EISA: Initialize device before its resources" 2014-02-13 13:47:59 -08:00
extcon extcon: max77693: Fix two NULL pointer exceptions on missing pdata 2014-07-06 18:54:15 -07:00
firewire firewire: cdev: prevent kernel stack leaking into ioctl arguments 2014-11-21 09:22:53 -08:00
firmware efi-pstore: Make efi-pstore return a unique id 2015-02-05 22:35:40 -08:00
gpio gpio: sysfs: fix memory leaks and device hotplug 2015-05-17 09:51:32 -07:00
gpu DRM - radeon: Don't link train DisplayPort on HPD until we get the dpcd 2015-09-21 10:00:07 -07:00
hid HID: fixup the conflicting keyboard mappings quirk 2015-03-18 13:22:35 +01:00
hsi
hv Drivers: hv: vmbus: Don't wait after requesting offers 2015-05-13 05:15:43 -07:00
hwmon hwmon: (mcp3021) Fix broken output scaling 2015-08-03 09:29:46 -07:00
hwspinlock
i2c i2c: at91: fix a race condition when using the DMA controller 2015-08-03 09:29:43 -07:00
ide
idle x86 idle: Repair large-server 50-watt idle-power regression 2014-01-09 12:24:21 -08:00
iio iio: DAC: ad5624r_spi: fix bit shift of output data value 2015-08-03 09:29:43 -07:00
infiniband iser-target: release stale iser connections 2015-08-03 09:29:46 -07:00
input Input: usbtouchscreen - avoid unresponsive TSC-30 touch screen 2015-08-10 12:20:30 -07:00
iommu iommu/vt-d: Fix an off-by-one bug in __domain_mapping() 2015-01-16 06:59:01 -08:00
ipack
irqchip irqchip: gic: Fix core ID calculation when topology is read from DT 2014-07-28 08:00:06 -07:00
isdn isdnloop: several buffer overflows 2014-04-14 06:42:18 -07:00
leds leds: leds-pwm: properly clean up after probe failure 2014-06-07 13:25:34 -07:00
lguest lguest: fix out-by-one error in address checking. 2015-06-05 23:19:54 -07:00
macintosh
mailbox
md dm thin metadata: delete btrees when releasing metadata snapshot 2015-09-13 09:07:59 -07:00
media cx24116: fix a buffer overflow when checking userspace params 2015-08-03 09:29:44 -07:00
memory
memstick memstick: mspro_block: add missing curly braces 2015-05-06 21:56:28 +02:00
message mptfusion: enable no_write_same for vmware scsi disks 2014-10-30 09:35:10 -07:00
mfd mfd: sm501: dbg_regs attribute must be read-only 2015-08-16 20:51:37 -07:00
misc mei: bus: fix possible boundaries violation 2014-11-21 09:22:55 -08:00
mmc mmc: sdhci-pxav3: fix platform_data is not initialized 2015-08-10 12:20:30 -07:00
mtd mtd: dc21285: use raw spinlock functions for nw_gpio_lock 2015-08-03 09:29:41 -07:00
net ath9k: fix DMA stop sequence for AR9003+ 2015-08-03 09:29:42 -07:00
nfc NFC: microread: Potential overflows in microread_target_discovered() 2014-10-05 14:54:12 -07:00
ntb NTB: Correct debugfs to work with more than 1 NTB Device 2013-11-13 12:05:35 +09:00
nubus
of of/base: Fix PowerPC address parsing hack 2014-12-06 15:05:47 -08:00
oprofile
parisc
parport drivers: parport: Kconfig: exclude arm64 for PARPORT_PC 2015-05-06 21:56:26 +02:00
pci PCI: Fix infinite loop with ROM image of size 0 2015-03-06 14:40:48 -08:00
pcmcia Disable write buffering on Toshiba ToPIC95 2015-08-03 09:29:41 -07:00
pinctrl pinctrl: mvebu: armada-xp: fix functions of MPP48 2015-08-03 09:29:42 -07:00
platform hp_accel: Add support for HP ZBook 15 2015-01-27 07:52:31 -08:00
pnp PNP / ACPI: proper handling of ACPI IO/Memory resource parsing failures 2014-03-23 21:38:22 -07:00
power power_supply: lp8788-charger: Fix leaked power supply on probe fail 2015-05-06 21:56:21 +02:00
pps
ps3
ptp
pwm
rapidio rapidio/tsi721_dma: fix failure to obtain transaction descriptor 2014-08-07 14:30:25 -07:00
regulator regulator: core: fix constraints output buffer 2015-08-03 09:29:41 -07:00
remoteproc
reset
rpmsg
rtc rtc: rtc-at91rm9200: fix infinite wait for ACKUPD irq 2014-06-26 15:12:37 -04:00
s390 crypto: prefix module autoloading with "crypto-" 2015-01-29 17:40:57 -08:00
sbus bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 2014-08-14 09:24:16 +08:00
scsi libfc: Fix fc_fcp_cleanup_each_cmd() 2015-09-13 09:07:59 -07:00
sfi
sh
sn
spi spi: spidev: fix possible arithmetic overflow for multi-transfer message 2015-05-06 21:56:21 +02:00
ssb
ssbi
staging staging: rtl8712: prevent buffer overrun in recvbuf2recvframe 2015-08-03 09:29:42 -07:00
target iscsi-target: Fix iscsit_start_kthreads failure OOPs 2015-08-16 20:51:39 -07:00
tc
thermal
tty xen/console: Update console event channel on resume 2015-05-17 09:51:32 -07:00
uio Fix a few incorrectly checked [io_]remap_pfn_range() calls 2013-11-13 12:05:33 +09:00
usb USB: sierra: add 1199:68AB device ID 2015-08-16 20:51:37 -07:00
uwb
vfio vfio-pci: Fix the check on pci device type in vfio_pci_probe() 2015-01-27 07:52:32 -08:00
vhost vhost: actually track log eventfd file 2015-08-10 12:20:31 -07:00
video video: vgacon: Don't build on arm64 2015-05-06 21:56:25 +02:00
virt
virtio virtio_pci: fix virtio spec compliance on restore 2014-11-14 08:47:55 -08:00
vlynq
vme VME: Correct read/write alignment algorithm 2014-02-22 12:41:28 -08:00
w1 w1: fix w1_send_slave dropping a slave id 2014-05-06 07:55:28 -07:00
watchdog watchdog: omap: assert the counter being stopped before reprogramming 2015-08-03 09:29:47 -07:00
xen xen/gntdevt: Fix race condition in gntdev_release() 2015-08-16 20:51:39 -07:00
zorro
Kconfig
Makefile