linux/drivers
Daniel Vetter 9e3ba11cb7 drm/i915: Take all modeset locks for DP MST hotplug
[ Upstream commit 8bb4da1df5 ]

While auditing various users of the connector/encoder lists I realized
that the atomic code is a very prolific user of them. And it only ever
grabs the mode_config->connection_mutex, but not the
mode_config->mutex like all the other code walking encoder/connector
lists.

The problem is that we can't grab the mode_config.mutex late in atomic
code since that would lead to locking inversions. And we don't want to
grab it unconditionally like the legacy set_config modeset path since
that would render all the fine-grained locking moot.

Instead just grab more locks in the dp mst hotplug code. Note that
drm_connector_init (which is the one adding the connector to these
lists) already uses drm_modeset_lock_all.

The other reason for grabbing all locks is that the dpms off in the
unplug function amounts to a modeset, so better to take all required
locks for that.

Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2016-02-15 15:45:36 -05:00
..
accessibility printk: move braille console support into separate braille.[ch] files 2013-07-31 14:41:03 -07:00
acpi ACPI, PCI: Penalize legacy IRQ used by ACPI SCI 2015-09-21 10:05:44 -07:00
amba ARM: 8334/1: amba: tegra-ahb: detect and correct bogus base address 2015-04-02 10:03:55 +01:00
android android: binder: fix binder mmap failures 2015-03-01 18:43:51 -08:00
ata PCI: Disable async suspend/resume for JMicron multi-function SATA/AHCI 2015-09-21 10:05:34 -07:00
atm drivers: atm: nicstar: remove ifdef'd out skb destructors 2015-03-10 13:34:53 -04:00
auxdisplay auxdisplay: ks0108: fix refcount 2015-09-21 10:05:42 -07:00
base cpu/cacheinfo: Fix teardown path 2015-10-22 14:43:23 -07:00
bcma Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2015-04-17 15:50:54 -04:00
block zram: try vmalloc() after kmalloc() 2016-02-03 16:23:17 -05:00
bluetooth Bluetooth: Add support of Toshiba Broadcom based devices 2016-02-01 11:37:16 -05:00
bus bus: arm-ccn: Fix node->XP config conversion 2015-08-03 09:29:07 -07:00
cdrom block,scsi: fixup blk_get_request dead queue scenarios 2014-08-28 10:03:46 -06:00
char ipmi: move timer init to before irq is setup 2016-01-31 11:23:31 -08:00
clk clk: versatile-icst: fix memory leak 2015-12-09 14:03:20 -05:00
clocksource clocksource/drivers/vt8500: Increase the minimum delta 2016-02-03 14:01:46 -05:00
connector connector: bump skb->users before callback invocation 2016-01-31 11:23:35 -08:00
cpufreq cpufreq: intel_pstate: Fix divide by zero on Knights Landing (KNL) 2015-11-09 14:33:39 -08:00
cpuidle tick/idle/powerpc: Do not register idle states with CPUIDLE_FLAG_TIMER_STOP set in periodic mode 2015-07-10 09:49:35 -07:00
crypto crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions 2015-09-29 19:26:05 +02:00
dca dca: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
devfreq PM / devfreq: tegra: Register governor on module init 2015-03-31 13:17:15 +09:00
dio m68k: don't export static inline functions 2009-12-06 11:18:28 +01:00
dma dmaengine: at_xdmac: fix resume for cyclic transfers 2016-02-03 16:23:19 -05:00
dma-buf dma-buf: cleanup dma_buf_export() to make it easily extensible 2015-04-21 14:47:16 +05:30
edac EDAC: Robustify workqueues destruction 2016-02-01 11:37:44 -05:00
eisa Revert "EISA: Initialize device before its resources" 2014-01-17 14:57:29 -07:00
extcon extcon: usb-gpio: register extcon device before IRQ registration 2015-04-27 11:06:05 +09:00
firewire firewire: ohci: fix JMicron JMB38x IT context discovery 2015-12-14 21:24:35 -08:00
firmware arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME regions 2015-10-22 14:43:25 -07:00
fmc Merge 3.14-rc5 into char-misc-next 2014-03-02 19:53:09 -08:00
gpio gpio: rcar: Check for irq_set_irq_wake() failures 2015-07-21 10:10:01 -07:00
gpu drm/i915: Take all modeset locks for DP MST hotplug 2016-02-15 15:45:36 -05:00
hid HID: core: Avoid uninitialized buffer access 2016-01-31 11:23:39 -08:00
hsi HSI: cmt_speech: fix error return code 2015-04-05 14:45:27 +02:00
hv Drivers: hv: hv_balloon: correctly handle num_pages>INT_MAX case 2015-04-03 16:20:12 +02:00
hwmon hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for most chips 2015-10-22 14:43:12 -07:00
hwspinlock hwspinlock: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
hwtracing/coresight coresight: checking for NULL string in coresight_name_match() 2016-02-01 12:22:21 -05:00
i2c i2c: mv64xxx: really allow I2C offloading 2015-11-09 14:33:37 -08:00
ide Merge branch 'for-4.1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2015-05-11 10:54:20 -07:00
idle Power management and ACPI updates for v4.1-rc1 2015-04-14 20:21:54 -07:00
iio iio: st_accel: fix interrupt handling on LIS3LV02 2015-11-09 14:33:35 -08:00
infiniband IB/qib: Support creating qps with GFP_NOIO flag 2016-02-03 16:23:20 -05:00
input Input: elantech - mark protocols v2 and v3 as semi-mt 2016-02-03 14:01:46 -05:00
iommu iommu/io-pgtable-arm: Ensure we free the final level on teardown 2016-02-01 11:40:02 -05:00
ipack ipoctal: clear break interrupt as soon as it occurs 2014-09-23 23:26:42 -07:00
irqchip irqchip/atmel-aic: Fix wrong bit operation for IRQ priority 2016-02-15 15:45:24 -05:00
isdn ppp, slip: Validate VJ compression slot parameters completely 2016-01-31 11:23:37 -08:00
leds leds/led-class: Add missing put_device() 2015-10-22 14:43:14 -07:00
lguest lguest: fix out-by-one error in address checking. 2015-05-27 09:57:21 -07:00
macintosh windfarm: decrement client count when unregistering 2015-10-22 14:43:12 -07:00
mailbox mailbox: arm_mhu: add driver for ARM MHU controller 2015-03-17 11:12:01 +05:30
mcb mcb: request_mem_region() returns NULL on error 2015-04-03 16:15:30 +02:00
md dm snapshot: fix hung bios when copy error occurs 2016-02-03 14:01:45 -05:00
media [media] saa7134-alsa: Only frees registered sound cards 2016-02-15 15:45:35 -05:00
memory iommu/tegra-smmu: Parameterize number of TLB lines 2015-09-29 19:26:14 +02:00
memstick memstick: mspro_block: add missing curly braces 2015-04-17 09:04:09 -04:00
message i2o: move to staging 2015-02-03 15:58:39 -08:00
mfd mfd: twl6040: Fix deferred probe handling for clk32k 2015-12-09 14:03:20 -05:00
misc cxl: Don't remove AFUs/vPHBs in cxl_reset 2015-09-29 19:26:26 +02:00
mmc mmc: core: Enable tuning according to the actual timing 2016-02-03 16:23:15 -05:00
mtd UBI: return ENOSPC if no enough space available 2015-10-22 14:43:24 -07:00
net iwlwifi: pcie: properly configure the debug buffer size for 8000 2016-02-03 14:01:44 -05:00
nfc NFC: st21nfca: fix use of uninitialized variables in error path 2015-09-29 19:25:55 +02:00
ntb ntb: initialize max_mw for Atom before using it 2015-06-11 09:27:24 -04:00
nubus nubus: Remove superfluous interrupt disable/restore 2014-10-27 11:03:19 +01:00
of MFD/OF: document MFD devices and handle simple-mfd 2015-11-09 14:33:39 -08:00
oprofile Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-04-26 17:22:07 -07:00
parisc parisc iommu: fix panic due to trying to allocate too large region 2016-01-31 11:23:39 -08:00
parport parport: parport_atari: Remove obsolete IRQ_TYPE_SLOW 2015-01-15 13:44:50 +01:00
pci ACPI / PCI / hotplug: unlock in error path in acpiphp_enable_slot() 2016-02-15 15:45:27 -05:00
pcmcia pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers 2015-10-22 14:43:22 -07:00
phy phy: twl4030-usb: make runtime pm more reliable. 2015-08-16 20:52:13 -07:00
pinctrl pinctrl: baytrail: Use raw_spinlock for locking 2015-11-09 14:33:40 -08:00
platform ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list 2016-02-15 15:45:19 -05:00
pnp ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage 2015-08-03 09:29:14 -07:00
power PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS 2015-10-22 14:43:22 -07:00
powercap powercap / RAPL: Add support for Intel Skylake processors 2015-04-15 23:06:16 +02:00
pps pps: clients: drop owner assignment from platform_drivers 2014-10-20 16:21:28 +02:00
ps3 ps3: Fix trivial typos in comment and debug message 2015-03-26 15:23:17 +11:00
ptp ptp: remove 32 bit get/set methods. 2015-03-31 12:01:19 -04:00
pwm pwm: img: Impose upper and lower timebase steps value 2015-05-19 16:07:40 +02:00
rapidio Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-02-18 08:49:20 -08:00
ras trace, RAS: Add eMCA trace event interface 2014-06-25 13:26:47 -07:00
regulator regulator: pbias: Fix broken pbias disable functionality 2015-09-21 10:05:43 -07:00
remoteproc remoteproc: add IOMMU hardware capability flag 2015-03-12 10:43:26 +02:00
reset reset: sunxi: fix spinlock initialization 2015-01-16 19:11:31 -08:00
rpmsg virtio_rpmsg: set DRIVER_OK before using device 2015-03-13 15:55:42 +10:30
rtc rtc: abx80x: fix RTC write bit 2015-09-29 19:26:11 +02:00
s390 s390/sclp: fix compile error 2015-09-21 10:05:27 -07:00
sbus drivers/sbus/char/envctrl.c: ignore orderly_poweroff return value 2015-04-15 16:35:23 -07:00
scsi drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration 2016-02-15 15:45:32 -05:00
sfi SFI: fix compiler warnings 2014-12-03 18:49:20 -05:00
sh drivers: sh: Remove test for now unsupported sh7372 2015-04-27 13:08:14 +09:00
sn Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
soc soc/tegra: pmc: Avoid usage of uninitialized variable 2015-09-21 10:05:43 -07:00
spi spi: spidev: fix possible NULL dereference 2015-10-22 14:43:15 -07:00
spmi spmi: pmic_arb: remove ARM build time dependency 2015-04-03 16:15:30 +02:00
ssb SSB: Fix handling of ssb_pmu_get_alp_clock() 2015-06-09 16:38:06 +02:00
staging Staging: speakup: Fix getting port information 2016-02-15 15:45:26 -05:00
target iscsi-target: Fix potential dead-lock during node acl delete 2016-02-03 16:23:21 -05:00
tc TC: Error handling clean-ups 2014-11-24 07:45:25 +01:00
thermal Thermal: do thermal zone update after a cooling device registered 2016-02-01 14:46:05 -05:00
thunderbolt thunderbolt: Clear hops before overwriting 2014-08-26 14:54:48 -07:00
tty serial: 8250_pci: Add Intel Broadwell ports 2016-02-15 15:45:26 -05:00
uio Revert "uio: constify of_device_id array" 2015-04-03 16:04:21 +02:00
usb xhci: Fix list corruption in urb dequeue at host removal 2016-02-15 15:45:34 -05:00
uwb uwb: Remove umc bus legacy suspend/resume support 2015-03-18 17:27:03 +01:00
vfio vfio: Fix runaway interruptible timeout 2015-05-01 16:31:41 -06:00
vhost vhost: actually track log eventfd file 2015-08-10 12:21:58 -07:00
video fbdev: select versatile helpers for the integrator 2015-10-22 14:43:20 -07:00
virt drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
virtio virtio_pci: fix use after free on release 2016-02-15 15:45:22 -05:00
vlynq drivers/vlynq/vlynq.c: fix another resource size off by 1 error 2014-01-23 16:36:55 -08:00
vme vme: tsi148: Master windows support USERx and CR/CSR accesses, not slaves 2015-03-06 17:03:22 -08:00
w1 w1_therm reference count family data 2015-08-03 09:29:11 -07:00
watchdog watchdog: sunxi: fix activation of system reset 2015-10-22 14:43:12 -07:00
xen xen/gntdev: Grant maps should not be subject to NUMA balancing 2016-01-31 11:23:30 -08:00
zorro zorro: drop owner assignment from platform_drivers 2014-10-20 16:21:57 +02:00
Kconfig i2o: move to staging 2015-02-03 15:58:39 -08:00
Makefile coresight: moving to new "hwtracing" directory 2015-04-03 16:17:04 +02:00