Vladimir Lypak
9bcf5687fe
drm/msm/a5xx: fix races in preemption evaluation stage
...
[ Upstream commit ce050f307ad93bcc5958d0dd35fc276fd394d274 ]
On A5XX GPUs when preemption is used it's invietable to enter a soft
lock-up state in which GPU is stuck at empty ring-buffer doing nothing.
This appears as full UI lockup and not detected as GPU hang (because
it's not). This happens due to not triggering preemption when it was
needed. Sometimes this state can be recovered by some new submit but
generally it won't happen because applications are waiting for old
submits to retire.
One of the reasons why this happens is a race between a5xx_submit and
a5xx_preempt_trigger called from IRQ during submit retire. Former thread
updates ring->cur of previously empty and not current ring right after
latter checks it for emptiness. Then both threads can just exit because
for first one preempt_state wasn't NONE yet and for second one all rings
appeared to be empty.
To prevent such situations from happening we need to establish guarantee
for preempt_trigger to make decision after each submit or retire. To
implement this we serialize preemption initiation using spinlock. If
switch is already in progress we need to re-trigger preemption when it
finishes.
Fixes: b1fc2839d2 ("drm/msm: Implement preemption for A5XX targets")
Signed-off-by: Vladimir Lypak <vladimir.lypak@gmail.com>
Patchwork: https://patchwork.freedesktop.org/patch/612045/
Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-08 16:20:29 +01:00
..
accessibility
acpi
ACPI: PMIC: Remove unneeded check in tps68470_pmic_opregion_probe()
2024-11-08 16:20:26 +01:00
amba
android
binder: fix UAF caused by offsets overwrite
2024-09-12 11:03:55 +02:00
ata
ata: pata_macio: Use WARN instead of BUG
2024-09-12 11:03:55 +02:00
atm
atm: idt77252: prevent use after free in dequeue_rx()
2024-09-04 13:14:51 +02:00
auxdisplay
base
devres: Initialize an uninitialized struct member
2024-09-12 11:03:54 +02:00
bcma
block
rbd: don't assume RBD_LOCK_STATE_LOCKED for exclusive mappings
2024-08-19 05:33:40 +02:00
bluetooth
Bluetooth: btusb: Fix not handling ZPL/short-transfer
2024-11-08 16:20:27 +01:00
bus
bus: tegra-aconnect: Update dependency to ARCH_TEGRA
2024-03-26 18:22:15 -04:00
cdrom
char
hwrng: amd - Convert PCIBIOS_* return codes to errnos
2024-08-19 05:33:37 +02:00
clk
clk: qcom: clk-alpha-pll: Fix the trion pll postdiv set rate API
2024-09-12 11:03:51 +02:00
clocksource
clocksource/drivers/qcom: Add missing iounmap() on errors in msm_dt_timer_init()
2024-11-08 16:20:28 +01:00
connector
counter
cpufreq
cpufreq: exit() callback is optional
2024-06-16 13:28:34 +02:00
cpuidle
crypto
crypto: qat - Fix ADF_DEV_RESET_SYNC memory leak
2024-06-16 13:28:51 +02:00
dax
dca
devfreq
dio
dma
dmaengine: ioatdma: Fix missing kmem_cache_destroy()
2024-07-05 09:08:23 +02:00
dma-buf
dma-buf/sw-sync: don't enable IRQ from sync_print_obj()
2024-06-16 13:28:47 +02:00
edac
EDAC, i10nm: make skx_common.o a separate module
2024-08-19 05:33:25 +02:00
eisa
extcon
extcon: max8997: select IRQ_DOMAIN instead of depending on it
2024-06-16 13:28:43 +02:00
firewire
firewire: nosy: ensure user_length is taken into account when fetching packet contents
2024-05-17 11:43:54 +02:00
firmware
firmware: turris-mox-rwtm: Initialize completion before mailbox
2024-08-19 05:33:28 +02:00
fpga
fsi
gnss
gpio
gpio: prevent potential speculation leaks in gpio_device_get_desc()
2024-11-08 16:20:26 +01:00
gpu
drm/msm/a5xx: fix races in preemption evaluation stage
2024-11-08 16:20:29 +01:00
greybus
greybus: Fix use-after-free bug in gb_interface_release due to race condition.
2024-07-05 09:08:20 +02:00
hid
HID: cougar: fix slab-out-of-bounds Read in cougar_report_fixup
2024-09-12 11:03:54 +02:00
hsi
hv
Drivers: hv: vmbus: Fix rescind handling in uio_hv_generic
2024-09-12 11:03:55 +02:00
hwmon
hwmon: (ntc_thermistor) fix module autoloading
2024-11-08 16:20:28 +01:00
hwspinlock
hwtracing
intel_th: pci: Add Lunar Lake support
2024-07-05 09:08:19 +02:00
i2c
i2c: riic: avoid potential division by zero
2024-09-04 13:14:53 +02:00
i3c
i3c: master: cdns: Update maximum prescaler value for i2c clock
2024-02-23 08:25:02 +01:00
ide
idle
iio
iio: fix scale application in iio_convert_raw_to_processed_unlocked
2024-09-12 11:03:55 +02:00
infiniband
IB/hfi1: Fix potential deadlock on &irq_src_lock and &dd->uctxt_lock
2024-09-04 13:14:54 +02:00
input
Input: uinput - reject requests with unreasonable number of slots
2024-09-12 11:03:55 +02:00
interconnect
iommu
iommu/vt-d: Handle volatile descriptor status read
2024-09-12 11:03:53 +02:00
ipack
irqchip
irqchip/armada-370-xp: Do not allow mapping IRQ 0 and 1
2024-09-12 11:03:52 +02:00
isdn
mISDN: Fix a use after free in hfcmulti_tx()
2024-08-19 05:33:42 +02:00
leds
leds: ss4200: Convert PCIBIOS_* return codes to errnos
2024-08-19 05:33:37 +02:00
lightnvm
macintosh
macintosh/therm_windtunnel: fix module unload.
2024-08-19 05:33:34 +02:00
mailbox
mcb
md
dm init: Handle minors larger than 255
2024-09-12 11:03:53 +02:00
media
media: qcom: camss: Add check for v4l2_fwnode_endpoint_parse
2024-09-12 11:03:52 +02:00
memory
memstick
message
mfd
mfd: omap-usb-tll: Use struct_size to allocate tll
2024-08-19 05:33:32 +02:00
misc
VMCI: Fix use-after-free when removing resource in vmci_resource_remove()
2024-09-12 11:03:55 +02:00
mmc
mmc: sdhci-of-aspeed: fix module autoloading
2024-09-12 11:03:51 +02:00
mtd
mtd: powernv: Add check devm_kasprintf() returned value
2024-11-08 16:20:28 +01:00
mux
net
wifi: ath9k: Remove error checks when creating debugfs entries
2024-11-08 16:20:26 +01:00
nfc
nfc: pn533: Add poll mod list filling check
2024-09-04 13:15:04 +02:00
ntb
nubus
nvdimm
nvme
nvmet-tcp: fix kernel crash if commands allocation fails
2024-09-12 11:03:56 +02:00
nvmem
nvmem: Fix return type of devm_nvmem_device_get() in kerneldoc
2024-09-12 11:03:55 +02:00
of
of/irq: Prevent device address out-of-bounds read in interrupt map walk
2024-09-12 11:03:55 +02:00
opp
oprofile
parisc
parport
dev/parport: fix the array out-of-bounds risk
2024-08-19 05:33:43 +02:00
pci
PCI: Add missing bridge lock to pci_bus_lock()
2024-09-12 11:03:54 +02:00
pcmcia
pcmcia: Use resource_size function on resource object
2024-09-12 11:03:52 +02:00
perf
phy
phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP
2024-02-23 08:25:06 +01:00
pinctrl
pinctrl: at91: make it work with current gpiolib
2024-11-08 16:20:25 +01:00
platform
platform/x86: dell-smbios: Fix error path in dell_smbios_init()
2024-09-12 11:03:52 +02:00
pnp
PNP: ACPI: fix fortify warning
2024-02-23 08:24:54 +01:00
power
power: supply: max17042_battery: Fix SOC threshold calc w/ no current sense
2024-11-08 16:20:28 +01:00
powercap
pps
ps3
ptp
ptp: Fix error message on failed pin verification
2024-07-05 09:08:11 +02:00
pwm
pwm: stm32: Always do lazy disabling
2024-08-19 05:33:26 +02:00
rapidio
ras
regulator
regulator: core: Fix modpost error "regulator_get_regmap" undefined
2024-07-05 09:08:23 +02:00
remoteproc
remoteproc: imx_rproc: Skip over memory region when node value is NULL
2024-08-19 05:33:44 +02:00
reset
reset: berlin: fix OF node leak in probe() error path
2024-11-08 16:20:28 +01:00
rpmsg
rpmsg: virtio: Free driver_override when rpmsg_remove()
2024-02-23 08:24:48 +01:00
rtc
rtc: isl1208: Fix return value of nvmem callbacks
2024-08-19 05:33:39 +02:00
s390
s390/cio: rename bitmap_size() -> idset_bitmap_size()
2024-09-04 13:14:51 +02:00
sbus
scsi
scsi: aacraid: Fix double-free on probe failure
2024-09-04 13:15:05 +02:00
sfi
sh
siox
slimbus
slimbus: core: Remove usage of the deprecated ida_simple_xx() API
2024-04-13 12:51:26 +02:00
soc
soc: qcom: cmd-db: Map shared memory as WC, not WB
2024-09-04 13:15:04 +02:00
soundwire
soundwire: stream: Revert "soundwire: stream: fix programming slave ports for non-continous port maps"
2024-11-08 16:20:25 +01:00
spi
spi: ppc4xx: Avoid returning 0 when failed to parse and map IRQ
2024-11-08 16:20:28 +01:00
spmi
ssb
ssb: Fix division by zero issue in ssb_calc_clock_rate
2024-09-04 13:14:53 +02:00
staging
wifi: wilc1000: fix potential RCU dereference issue in wilc_parse_join_bss_param
2024-11-08 16:20:27 +01:00
target
scsi: target: Fix SELinux error when systemd-modules loads the target module
2024-05-17 11:43:51 +02:00
tc
tee
thermal
thunderbolt
tty
serial: core: check uartclk for zero to avoid divide by zero
2024-08-19 05:33:52 +02:00
uio
Drivers: hv: vmbus: Fix rescind handling in uio_hv_generic
2024-09-12 11:03:55 +02:00
usb
USB: usbtmc: prevent kernel-usb-infoleak
2024-11-08 16:20:26 +01:00
vfio
vfio/platform: Create persistent IRQ handlers
2024-04-13 12:51:34 +02:00
vhost
vhost: Add smp_rmb() in vhost_vq_avail_empty()
2024-05-02 16:18:29 +02:00
video
fbdev: hpfb: Fix an error handling path in hpfb_dio_probe()
2024-11-08 16:20:28 +01:00
virt
virtio
virtio: delete vq in vp_find_vqs_msix() when request_irq() fails
2024-06-16 13:28:46 +02:00
visorbus
vlynq
vme
w1
watchdog
watchdog: stm32_iwdg: initialize default timeout
2024-03-26 18:22:24 -04:00
xen
xen/events: close evtchn after mapping cleanup
2024-04-13 12:51:29 +02:00
zorro
Kconfig
Makefile