linux-stable/drivers
Boris Brezillon f66ff55a9b drm/exynos: dsi: Fix bridge chain handling
Commit 05193dc381 ("drm/bridge: Make the bridge chain a double-linked
list") patched the bridge chain logic to use a double-linked list instead
of a single-linked list. This change induced changes to the Exynos driver
which was manually resetting the encoder->bridge element to NULL to
control the enable/disable sequence of the bridge chain. During this
conversion, 2 bugs were introduced:

1/ list_splice() was used to move chain elements to our own internal
   chain, but list_splice() does not reset the source list to an empty
   state, leading to unexpected bridge hook calls when
   drm_bridge_chain_xxx() helpers were called by the core. Replacing
   the list_splice() call by list_splice_init() fixes this problem.

2/ drm_bridge_chain_xxx() helpers operate on the
   bridge->encoder->bridge_chain list, which is now empty. When the
   helper uses list_for_each_entry_reverse() we end up with no operation
   done which is not what we want. But that's even worse when the helper
   uses list_for_each_entry_from(), because in that case we end up in
   an infinite loop searching for the list head element which is no
   longer encoder->bridge_chain but exynos_dsi->bridge_chain. To address
   that problem we stop using the bridge chain helpers and call the
   hooks directly.

Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Fixes: 05193dc381 ("drm/bridge: Make the bridge chain a double-linked list")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191227144124.210294-3-boris.brezillon@collabora.com
2020-01-08 09:09:48 +01:00
..
accessibility
acpi i915 features for v5.6: 2019-12-27 15:25:04 +10:00
amba
android binder: fix incorrect calculation for num_valid 2019-12-14 09:10:47 +01:00
ata
atm
auxdisplay drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
base Merge branch 'remove-ksys-mount-dup' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux 2019-12-15 11:36:12 -08:00
bcma
block xen: branch for v5.5-rc2 2019-12-15 12:24:44 -08:00
bluetooth
bus
cdrom
char
clk
clocksource
connector
counter
cpufreq
cpuidle cpuidle: Drop unnecessary type cast in cpuidle_poll_time() 2019-12-12 17:56:08 +01:00
crypto
dax
dca
devfreq
dio
dma
dma-buf drm-misc-next for v5.6: 2020-01-03 11:43:44 +10:00
edac
eisa
extcon
firewire
firmware
fpga
fsi
gnss
gpio
gpu drm/exynos: dsi: Fix bridge chain handling 2020-01-08 09:09:48 +01:00
greybus
hid drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
hsi
hv
hwmon
hwspinlock
hwtracing
i2c i2c: remove i2c_new_dummy() API 2019-12-10 23:15:09 +01:00
i3c
ide
idle
iio
infiniband Pull request for 5.5-rc2 2019-12-15 14:58:13 -08:00
input
interconnect interconnect: qcom: msm8974: Walk the list safely on node removal 2019-12-12 10:28:54 +01:00
iommu
ipack
irqchip
isdn
leds
lightnvm
macintosh
mailbox
mcb
md for-linus-20191212 2019-12-13 14:27:19 -08:00
media drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
memory
memstick
message
mfd mfd: intel_soc_pmic: Rename pwm_backlight pwm-lookup to pwm_pmic_backlight 2019-12-17 11:24:47 +01:00
misc drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
mmc
mtd
mux
net
nfc
ntb
nubus
nvdimm
nvme for-linus-20191212 2019-12-13 14:27:19 -08:00
nvmem
of of/platform: Unconditionally pause/resume sync state during kernel init 2019-12-12 18:39:52 -06:00
opp
oprofile
parisc
parport
pci PCI: rockchip: Fix IO outbound ATU register number 2019-12-12 15:25:37 -06:00
pcmcia
perf
phy
pinctrl
platform
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator
remoteproc
reset
rpmsg
rtc
s390
sbus
scsi SCSI fixes on 20191214 2019-12-14 12:51:57 -08:00
sfi
sh
siox
slimbus
soc
soundwire
spi
spmi
ssb
staging drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
target
tc
tee drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
thermal
thunderbolt
tty
uio
usb USB driver fixes for 5.5-rc2 2019-12-14 12:40:39 -08:00
vfio
vhost
video video: fbdev: mmp: fix platform_get_irq.cocci warnings 2020-01-08 08:26:39 +01:00
virt
virtio virtio_balloon: divide/multiply instead of shifts 2019-12-11 08:14:07 -05:00
visorbus
vlynq
vme
w1
watchdog
xen drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
zorro
Kconfig
Makefile