WSL2-Linux-Kernel/drivers
Chris Wilson 182c594668 dma-buf/fence: Fix lock inversion within dma-fence-array
[ Upstream commit 03e4e0a9e0 ]

Ages ago Rob Clark noted,

"Currently with fence-array, we have a potential deadlock situation.  If
we fence_add_callback() on an array-fence, the array-fence's lock is
acquired first, and in it's ->enable_signaling() callback, it will install
cbs on it's array-member fences, so the array-member's lock is acquired
second.

But in the signal path, the array-member's lock is acquired first, and
the array-fence's lock acquired second."

Rob proposed either extensive changes to dma-fence to unnest the
fence-array signaling, or to defer the signaling onto a workqueue. This
is a more refined version of the later, that should keep the latency
of the fence signaling to a minimum by using an irq-work, which is
executed asap.

Reported-by: Rob Clark <robdclark@gmail.com>
Suggested-by: Rob Clark <robdclark@gmail.com>
References: 1476635975-21981-1-git-send-email-robdclark@gmail.com
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: Christian König <christian.koenig@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20171114162719.30958-1-chris@chris-wilson.co.uk
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-19 08:42:47 +01:00
..
accessibility License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
acpi ACPI / bus: Parse tables as term_list for Dell XPS 9570 and Precision M5530 2018-03-08 22:41:26 -08:00
amba License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
android binder: replace "%p" with "%pK" 2018-02-25 11:07:52 +01:00
ata ahci: Add Intel Cannon Lake PCH-H PCI ID 2018-02-16 20:22:59 +01:00
atm atm: horizon: Fix irq release error 2017-12-14 09:53:13 +01:00
auxdisplay auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE 2018-02-07 11:12:20 -08:00
base dma-buf/fence: Fix lock inversion within dma-fence-array 2018-03-19 08:42:47 +01:00
bcma License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
block loop: Fix lost writes caused by missing flag 2018-03-15 10:54:32 +01:00
bluetooth Bluetooth: btusb: Use DMI matching for QCA reset_resume quirking 2018-03-08 22:40:59 -08:00
bus sunxi-rsb: Include OF based modalias in device uevent 2018-01-10 09:31:19 +01:00
cdrom License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
char tpm: only attempt to disable the LPC CLKRUN if is already enabled 2018-03-15 10:54:25 +01:00
clk clk: sunxi: sun9i-mmc: Implement reset callback for reset controls 2017-12-29 17:53:48 +01:00
clocksource clocksource/drivers/stm32: Fix kernel panic with multiple timers 2018-02-16 20:23:09 +01:00
connector
cpufreq cpufreq: s3c24xx: Fix broken s3c_cpufreq_init() 2018-03-08 22:41:06 -08:00
cpuidle cpuidle: fix broadcast control when broadcast can not be entered 2017-12-25 14:26:30 +01:00
crypto crypto: inside-secure - fix request allocations in invalidation path 2018-03-03 10:24:30 +01:00
dax dev/dax: fix uninitialized variable build warning 2017-12-20 10:10:34 +01:00
dca
devfreq PM / devfreq: Propagate error from devfreq_add_device() 2018-02-22 15:42:16 +01:00
dio License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dma dmaengine: fsl-edma: disable clks on all error paths 2018-03-03 10:24:22 +01:00
dma-buf dma-buf/fence: Fix lock inversion within dma-fence-array 2018-03-19 08:42:47 +01:00
edac EDAC, sb_edac: Fix out of bound writes during DIMM configuration on KNL 2018-03-08 22:41:20 -08:00
eisa License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
extcon extcon: int3496: process id-pin first so that we start with the right status 2018-02-28 10:19:39 +01:00
firewire License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
firmware firmware/psci: Expose SMCCC version through psci_ops 2018-02-16 20:22:56 +01:00
fmc License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fpga fpga: region: release of_parse_phandle nodes after use 2018-02-07 11:12:26 -08:00
fsi
gpio gpio: davinci: Assign first bank regs for unbanked case 2018-02-25 11:07:56 +01:00
gpu drm/edid: set ELD connector type in drm_edid_to_eld() 2018-03-19 08:42:47 +01:00
hid usb: ldusb: add PIDs for new CASSY devices supported by this driver 2018-02-28 10:19:43 +01:00
hsi License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hv x86/virt: Add enum for hypervisors to replace x86_hyper 2017-12-25 14:26:20 +01:00
hwmon x86/cpu: Rename cpu_data.x86_mask to cpu_data.x86_stepping 2018-02-22 15:42:24 +01:00
hwspinlock License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hwtracing License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i2c i2c: bcm2835: Set up the rising/falling edge delays 2018-02-28 10:19:39 +01:00
ide ide: ide-atapi: fix compile error with defining macro DEBUG 2017-12-17 15:08:00 +01:00
idle Revert "x86/mm: Stop calling leave_mm() in idle code" 2017-11-04 15:01:50 +01:00
iio iio: adis_lib: Initialize trigger before requesting interrupt 2018-02-28 10:19:41 +01:00
infiniband IB/mlx5: Fix incorrect size of klms in the memory region 2018-03-15 10:54:33 +01:00
input Input: matrix_keypad - fix race when disabling interrupts 2018-03-15 10:54:32 +01:00
iommu iommu/arm-smmu-v3: Cope with duplicated Stream IDs 2018-01-10 09:31:21 +01:00
ipack
irqchip irqchip/mips-gic: Avoid spuriously handling masked interrupts 2018-02-28 10:19:41 +01:00
isdn License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
leds leds: core: Fix regression caused by commit 2b83ff96f5 2018-03-03 10:24:35 +01:00
lightnvm lightnvm: pblk: protect line bitmap while submitting meta io 2017-12-20 10:10:38 +01:00
macintosh License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mailbox mailbox: mailbox-test: don't rely on rx_buffer content to signal data ready 2017-12-14 09:53:12 +01:00
mcb License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
md dm mpath: fix passing integrity data 2018-03-19 08:42:47 +01:00
media media: m88ds3103: don't call a non-initalized function 2018-03-08 22:41:20 -08:00
memory License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
memstick License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
message License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mfd mfd: twl6040: Fix child-node lookup 2017-12-29 17:53:46 +01:00
misc mei: me: add cannon point device ids for 4th device 2018-02-25 11:08:04 +01:00
mmc mmc: dw_mmc: Fix out-of-bounds access for slot's caps 2018-03-08 22:41:03 -08:00
mtd mtd: nand: brcmnand: Zero bitflip is not an error 2018-03-03 10:24:23 +01:00
mux mux: core: fix double get_device() 2018-01-17 09:45:27 +01:00
net net: phy: Restore phy_resume() locking assumption 2018-03-19 08:42:44 +01:00
nfc License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ntb
nubus License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nvdimm libnvdimm, pfn: fix start_pad handling for aligned namespaces 2017-12-29 17:53:49 +01:00
nvme nvme-rdma: don't suppress send completions 2018-03-08 22:41:26 -08:00
nvmem License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
of of_mdio: avoid MDIO bus removal when a PHY is missing 2018-03-03 10:24:37 +01:00
oprofile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
parisc parisc: Hide Diva-built-in serial aux and graphics card 2017-12-29 17:53:47 +01:00
parport License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci PCI: dwc: Fix enumeration end when reaching root subordinate 2018-03-15 10:54:32 +01:00
pcmcia License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
perf License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
phy phy: cpcap-usb: Fix platform_get_irq_byname's error checking. 2018-03-03 10:24:22 +01:00
pinctrl pinctrl: sunxi: Fix A64 UART mux value 2018-02-25 11:07:56 +01:00
platform platform/x86: dell-laptop: Fix keyboard max lighting for Dell Latitude E6410 2018-02-25 11:08:03 +01:00
pnp License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
power power: reset: zx-reboot: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE 2018-02-03 17:38:51 +01:00
powercap
pps
ps3
ptp License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pwm License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rapidio drivers/rapidio/devices/rio_mport_cdev.c: fix resource leak in error handling path in 'rio_dma_transfer()' 2017-12-14 09:53:08 +01:00
ras License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
regulator regulator: stm32-vrefbuf: fix check on ready flag 2018-03-15 10:54:28 +01:00
remoteproc License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
reset License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rpmsg rpmsg: glink: Initialize the "intent_req_comp" completion variable 2017-12-20 10:10:29 +01:00
rtc rtc-opal: Fix handling of firmware error codes, prevent busy loops 2018-02-22 15:42:25 +01:00
s390 s390/qeth: fix IPA command submission race 2018-03-08 22:41:20 -08:00
sbus License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
scsi scsi: qla2xxx: Fix recursion while sending terminate exchange 2018-03-15 10:54:35 +01:00
sfi
sh License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sn
soc meson-gx-socinfo: Fix package id parsing 2018-02-25 11:07:56 +01:00
spi spi: atmel: fixed spin_lock usage inside atmel_spi_remove 2018-03-03 10:24:25 +01:00
spmi
ssb License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
staging staging: android: ashmem: Fix lockdep issue during llseek 2018-03-19 08:42:45 +01:00
target iscsi-target: make sure to wake up sleeping login worker 2018-02-22 15:42:29 +01:00
tc
tee optee: fix invalid of_node_put() in optee_driver_init() 2017-12-25 14:26:24 +01:00
thermal thermal/drivers/hisi: Fix multiple alarm interrupts firing 2017-12-25 14:26:31 +01:00
thunderbolt thunderbolt: tb: fix use after free in tb_activate_pcie_devices 2017-12-20 10:10:24 +01:00
tty earlycon: add reg-offset to physical address before mapping 2018-03-19 08:42:47 +01:00
uio License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
usb usb: dwc3: Fix lock-up on ID change during system suspend/resume 2018-03-19 08:42:46 +01:00
uwb License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vfio vfio: disable filesystem-dax page pinning 2018-03-08 22:41:06 -08:00
vhost vhost: use mutex_lock_nested() in vhost_dev_lock_vqs() 2018-02-25 11:07:45 +01:00
video video: fbdev/mmp: add MODULE_LICENSE 2018-02-25 11:07:51 +01:00
virt
virtio virtio_ring: fix num_free handling in error case 2018-03-15 10:54:32 +01:00
vlynq
vme License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
w1 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
watchdog watchdog: hpwdt: Remove legacy NMI sourcing. 2018-03-15 10:54:22 +01:00
xen xen/gntdev: Fix partial gntdev_mmap() cleanup 2018-03-03 10:24:37 +01:00
zorro License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile usb: build drivers/usb/common/ when USB_SUPPORT is set 2018-02-25 11:07:53 +01:00