linux/drivers
Chris Wilson 03e4e0a9e0 dma-buf/fence: Fix lock inversion within dma-fence-array
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
2017-11-21 22:37:05 +05:30
..
accessibility
acpi ACPI: properties: Fix __acpi_node_get_property_reference() return codes 2017-10-11 21:16:37 +02:00
amba
android android: binder: Fix null ptr dereference in debug msg 2017-10-21 10:14:20 +02:00
ata ahci: don't ignore result code of ahci_reset_controller() 2017-10-02 12:21:30 -07:00
atm
auxdisplay auxdisplay: charlcd: properly restore atomic counter on error path 2017-09-18 16:06:00 +02:00
base dma-buf/fence: Fix lock inversion within dma-fence-array 2017-11-21 22:37:05 +05:30
bcma
block nbd: handle interrupted sendmsg with a sndtimeo set 2017-10-24 18:50:59 -06:00
bluetooth
bus bus: mbus: fix window size calculation for 4GB windows 2017-10-12 15:01:30 +02:00
cdrom
char Merge branch 'next-tpm' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2017-09-24 11:34:28 -07:00
clk clk: samsung: exynos4: Enable VPLL and EPLL clocks for suspend/resume cycle 2017-10-04 09:19:13 -07:00
clocksource clockevents/drivers/cs5535: Improve resilience to spurious interrupts 2017-10-20 13:41:52 +02:00
connector
cpufreq cpufreq: dt: Fix sysfs duplicate filename creation for platform-device 2017-09-26 01:10:08 +02:00
cpuidle PM / QoS: Fix device resume latency PM QoS 2017-10-24 15:20:45 +02:00
crypto crypto: stm32 - Try to fix hash padding 2017-10-07 12:04:31 +08:00
dax
dca
devfreq
dio
dma dmaengine: altera: Use IRQ-safe spinlock calls in the error paths as well 2017-10-20 11:51:10 +05:30
dma-buf dma-buf/fence: Fix lock inversion within dma-fence-array 2017-11-21 22:37:05 +05:30
edac
eisa
extcon
firewire
firmware efi/libstub/arm: Don't randomize runtime regions when CONFIG_HIBERNATION=y 2017-10-25 12:10:59 +02:00
fmc
fpga fpga: altera-cvp: remove DRIVER_ATTR() usage 2017-09-19 09:20:33 +02:00
fsi
gpio gpio: omap: Fix lost edge interrupts 2017-10-07 13:17:07 +02:00
gpu Merge airlied/drm-next into drm-misc-next 2017-11-21 14:17:56 +01:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid 2017-10-12 09:08:56 -07:00
hsi
hv vmbus: hvsock: add proper sync for vmbus_hvsock_device_unregister() 2017-10-20 14:56:25 +02:00
hwmon hwmon: (tmp102) Fix first temperature reading 2017-10-24 06:17:14 -07:00
hwspinlock
hwtracing intel_th: pci: Add Lewisburg PCH support 2017-09-22 10:28:00 +02:00
i2c i2c: omap: Fix error handling for clk_get() 2017-10-18 00:19:26 +02:00
ide ide: fix IRQ assignment for PCI bus order probing 2017-10-03 14:03:31 -05:00
idle
iio iio: adc: at91-sama5d2_adc: fix probe error on missing trigger property 2017-10-14 19:52:07 +01:00
infiniband RDMA/netlink: OOPs in rdma_nl_rcv_msg() from misinterpreted flag 2017-10-25 14:54:43 -04:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2017-10-28 10:56:13 -07:00
iommu iommu/amd: Finish TLB flush in amd_iommu_unmap() 2017-10-13 17:32:19 +02:00
ipack
irqchip irqchip/tango: Use irq_gc_mask_disable_and_ack_set 2017-10-13 16:31:05 +01:00
isdn isdn/i4l: fetch the ppp_write buffer in one shot 2017-09-20 16:01:36 -07:00
leds as3645a: Unregister indicator LED on device unbind 2017-09-23 21:17:43 +02:00
lightnvm
macintosh
mailbox
mcb
md Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2017-10-06 12:13:50 -07:00
media Linux 4.14-rc7 2017-11-02 12:40:41 +10:00
memory
memstick
message
mfd
misc Char/Misc driver fixes for 4.14-rc5 2017-10-15 07:50:38 -04:00
mmc mmc: sdhci-pci: Fix default d3_retune for Intel host controllers 2017-10-10 08:40:04 +02:00
mtd mtd: nand: atmel: fix buffer overflow in atmel_pmecc_user 2017-09-27 17:33:28 +02:00
mux
net tap: reference to KVA of an unloaded module causes kernel panic 2017-10-28 19:17:21 +09:00
nfc
ntb
nubus
nvdimm libnvdimm, namespace: fix btt claim class crash 2017-09-18 17:29:01 -07:00
nvme nvme-rdma: Fix error status return in tagset allocation failure 2017-10-19 17:13:51 +02:00
nvmem nvmem: add missing of_node_put() in of_nvmem_cell_get() 2017-09-18 16:12:26 +02:00
of Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-21 22:44:48 -04:00
oprofile
parisc
parport
pci PCI: aardvark: Move to struct pci_host_bridge IRQ mapping functions 2017-10-10 21:17:43 -05:00
pcmcia
perf drivers/perf: arm_pmu_acpi: Release memory obtained by kasprintf 2017-09-22 15:11:46 +01:00
phy phy: rockchip-typec: Check for errors from tcphy_phy_init() 2017-10-03 15:18:41 +05:30
pinctrl pinctrl: mcp23s08: fix interrupt handling regression 2017-10-19 10:20:03 +02:00
platform platform/x86: intel_pmc_ipc: Use spin_lock to protect GCR updates 2017-10-23 20:16:36 +03:00
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio Linux 4.14-rc7 2017-11-02 12:40:41 +10:00
ras RAS/CEC: Use the right length for "cec_disable" 2017-10-05 14:23:06 +02:00
regulator Merge remote-tracking branches 'regulator/fix/axp20x' and 'regulator/fix/rn5t618' into regulator-linus 2017-10-23 11:46:30 +02:00
remoteproc remoteproc: imx_rproc: fix return value check in imx_rproc_addr_init() 2017-10-11 10:47:47 -07:00
reset reset: socfpga: fix for 64-bit compilation 2017-10-04 10:29:44 +02:00
rpmsg rpmsg: glink: Fix memory leak in qcom_glink_alloc_intent() 2017-10-10 11:22:09 -07:00
rtc
s390 SCSI fixes on 20171027 2017-10-28 10:46:20 -07:00
sbus
scsi SCSI fixes on 20171027 2017-10-28 10:46:20 -07:00
sfi
sh
sn
soc Merge branch '4.14-features' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2017-09-15 20:43:33 -07:00
spi Merge remote-tracking branches 'spi/fix/armada', 'spi/fix/idr', 'spi/fix/qspi', 'spi/fix/stm32' and 'spi/fix/uapi' into spi-linus 2017-10-25 14:06:34 +02:00
spmi
ssb
staging Linux 4.14-rc7 2017-11-02 12:40:41 +10:00
target
tc
tee
thermal
thunderbolt
tty tty: fall back to N_NULL if switching to N_TTY fails during hangup 2017-10-13 16:18:33 -07:00
uio
usb usb: hub: Allow reset retry for USB2 devices on connect bounce 2017-10-19 09:49:11 +02:00
uwb uwb: properly check kthread_run return value 2017-09-18 11:28:23 +02:00
vfio
vhost
video
virt
virtio
vlynq
vme
w1
watchdog Merge branch '4.14-features' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2017-09-15 20:43:33 -07:00
xen xen: fixes for 4.14-rc7 2017-10-27 20:41:05 -07:00
zorro
Kconfig
Makefile