android_kernel_motorola_sm6375/drivers
Repository files (latest commit first)
Filename Latest commit message Latest commit date
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