android_kernel_samsung_sm8650/drivers
Sergey Matsievskiy 0558847d22 pinctrl: ocelot: fix system hang on level based interrupts
commit 93b8ddc54507a227087c60a0013ed833b6ae7d3c upstream.

The current implementation only calls chained_irq_enter() and
chained_irq_exit() if it detects pending interrupts.

```
for (i = 0; i < info->stride; i++) {
	uregmap_read(info->map, id_reg + 4 * i, &reg);
	if (!reg)
		continue;

	chained_irq_enter(parent_chip, desc);
```

However, in case of GPIO pin configured in level mode and the parent
controller configured in edge mode, GPIO interrupt might be lowered by the
hardware. In the result, if the interrupt is short enough, the parent
interrupt is still pending while the GPIO interrupt is cleared;
chained_irq_enter() never gets called and the system hangs trying to
service the parent interrupt.

Moving chained_irq_enter() and chained_irq_exit() outside the for loop
ensures that they are called even when GPIO interrupt is lowered by the
hardware.

The similar code with chained_irq_enter() / chained_irq_exit() functions
wrapping interrupt checking loop may be found in many other drivers:
```
grep -r -A 10 chained_irq_enter drivers/pinctrl
```

Cc: stable@vger.kernel.org
Signed-off-by: Sergey Matsievskiy <matsievskiysv@gmail.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/20241012105743.12450-2-matsievskiysv@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-01-13 22:00:24 +09:00
..
accessibility
acpi BACKPORT: iommu: Have __iommu_probe_device() check for already probed devices 2024-06-03 17:16:48 +00:00
adsp_factory Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
amba ANDROID: Build some tegra configs as vendor module 2024-05-31 04:40:23 +00:00
android ANDROID: binder: fix KMI-break due to alloc->lock 2024-05-29 20:51:37 +00:00
ata Merge 6.1.65 into android14-6.1-lts 2023-12-20 13:31:28 +00:00
atm Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
auxdisplay auxdisplay: hd44780: move cursor home after clear display command 2023-12-08 08:51:16 +01:00
base firmware_loader: Add /vendor/firmware and /odm/firmware to search paths 2025-01-13 13:57:30 +09:00
battery Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
bcma
block Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
bluetooth Merge 6.1.77 into android14-6.1-lts 2024-04-17 08:34:35 +00:00
bus Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
cdrom
char Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
clk Merge "clk: qcom: gcc-mdm9607: Fix cmd_rcgr offset for blsp1_uart6_apps_clk_src" 2024-08-29 00:47:47 -07:00
clocksource Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
comedi
connector
counter
cpufreq Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
cpuidle Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
crypto Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
cxl Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
dax
dca
devfreq This is the 6.1.76 stable release 2024-04-16 15:01:11 +00:00
dio
dma q2spi-msm-geni: connect GSI doorbell after start channel operation 2024-08-28 00:18:04 -07:00
dma-buf Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
edac Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
eisa
extcon
fingerprint Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
firewire Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
firmware Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
fpga
fsi
gnss
gpio ANDROID: Build some tegra configs as vendor module 2024-05-31 04:40:23 +00:00
gpu Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
greybus
hid Merge 6.1.77 into android14-6.1-lts 2024-04-17 08:34:35 +00:00
hsi
hte
hv
hwmon Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
hwspinlock hwspinlock: qcom: Provide function to bust hwspinlock 2024-08-07 00:46:33 -07:00
hwtracing coresight: tmc: etf: Free its buffer and set NULL when etf can't be enabled 2024-08-11 22:35:11 -07:00
i2c Merge "Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1" 2024-08-02 05:05:29 -07:00
i3c Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
idle
iio Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
infiniband Merge 6.1.78 into android14-6.1-lts 2024-04-19 12:19:39 +00:00
input Fix clang 19 issues 2024-12-25 17:54:26 +01:00
interconnect interconnect: qcom: Add snapshot of interconnect provider driver for neo 2024-08-13 13:26:14 +05:30
iommu drivers: iommu: arm-smmu: Specify sync probe for qsmmuv500-tbu 2025-01-10 21:29:52 +09:00
ipack
irqchip irqchip: mpm: Update the USB dpse interrupt mapping for pitti 2024-06-19 04:14:36 -07:00
isdn
kperfmon e3q: Import S928BXXS3AXI1 changes 2024-10-20 20:10:16 +02:00
leds Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
macintosh
mailbox Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
mcb mcb: fix error handling for different scenarios when parsing 2023-11-28 17:07:13 +00:00
md Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
media msm: npu: Add NPU driver support for kernel 6.1 2024-08-15 22:14:05 -07:00
memory
memstick
message
mfd Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
misc Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
mmc Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
most
mtd Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
muic/common Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
mux
net Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
nfc Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
ntb
nubus
nvdimm
nvme Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
nvmem drivers: nvmem: qfprom: Add keepout_regions for pineapple 2024-08-06 11:14:58 +05:30
of Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
opp OPP: Pass rounded rate to _set_opp() 2024-01-31 16:16:58 -08:00
optics Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
parisc parisc/power: Fix power soft-off button emulation on qemu 2024-01-31 16:16:59 -08:00
parport Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
pci Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
pcmcia
peci
perf Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
phy Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
pinctrl pinctrl: ocelot: fix system hang on level based interrupts 2025-01-13 22:00:24 +09:00
platform add e1q config 2025-01-04 10:27:12 +09:00
pnp PNP: ACPI: fix fortify warning 2024-02-05 20:12:47 +00:00
power Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
powercap Merge "Merge keystone/android14-6.1-keystone-qcom-release.6.1.68+ (e8309f0) into qcom-6.1" 2024-05-15 02:08:14 -07:00
pps
ps3
ptp Merge keystone/android14-6.1-keystone-qcom-release.6.1.68+ (7cb0122) into qcom-6.1 2024-05-09 10:00:15 +05:30
pwm pwm: qcom: Add reset support functionality 2024-08-23 15:56:36 +05:30
rapidio
ras
regulator Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
remoteproc Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
reset Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
rpmsg Merge "rpmsg: native: Increase iterations count in glink ISR" 2024-08-27 00:38:53 -07:00
rtc Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
s390 Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
samsung fixup! Fix clang 19 issues 2024-12-27 09:46:48 +01:00
sbus
scsi Merge 6.1.78 into android14-6.1-lts 2024-04-19 12:19:39 +00:00
sdp Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
sec_panel_notifier_v2 Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
secdp Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
sensors Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
sh
siox
slimbus slimbus: qcom-ngd-ctrl: Avoid accessing deallocated stack 2024-06-27 08:26:19 -07:00
soc Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
soundwire Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
spi q2spi-msm-geni: Ensure Channel errors handled sequentially after START sequence fail 2024-09-03 05:48:04 -07:00
spmi Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
ssb
staging Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
sti Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
target Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
tc
tee tee: optee: Fix supplicant based device enumeration 2023-12-13 18:39:12 +01:00
thermal Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
thunderbolt Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
tty Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
ufs Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
uh Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
uio Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
usb Fix clang 19 issues 2024-12-25 17:54:26 +01:00
uwb Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
vdpa Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
vfio Merge keystone/android14-6.1-keystone-qcom-release.6.1.57 (97abf17) into qcom-6.1 2024-01-03 21:55:56 -08:00
vhost Merge 6.1.78 into android14-6.1-lts 2024-04-19 12:19:39 +00:00
vibrator Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
video Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
virt Merge "Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1" 2024-08-02 05:05:29 -07:00
virtio virtio: Add polling virtio-mmio device reset completion 2024-05-24 07:01:45 +08:00
vlynq
w1
watchdog Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
xen Merge 6.1.77 into android14-6.1-lts 2024-04-17 08:34:35 +00:00
zorro
Kconfig Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
Makefile Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00