android_kernel_asus_sm8350/drivers
Alexis Lothoré 34e6c4c6a9 pinctrl: at91-pio4: use dedicated lock class for IRQ
[ Upstream commit 14694179e561b5f2f7e56a0f590e2cb49a9cc7ab ]

Trying to suspend to RAM on SAMA5D27 EVK leads to the following lockdep
warning:

 ============================================
 WARNING: possible recursive locking detected
 6.7.0-rc5-wt+ #532 Not tainted
 --------------------------------------------
 sh/92 is trying to acquire lock:
 c3cf306c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0xe8/0x100

 but task is already holding lock:
 c3d7c46c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0xe8/0x100

 other info that might help us debug this:
  Possible unsafe locking scenario:

        CPU0
        ----
   lock(&irq_desc_lock_class);
   lock(&irq_desc_lock_class);

  *** DEADLOCK ***

  May be due to missing lock nesting notation

 6 locks held by sh/92:
  #0: c3aa0258 (sb_writers#6){.+.+}-{0:0}, at: ksys_write+0xd8/0x178
  #1: c4c2df44 (&of->mutex){+.+.}-{3:3}, at: kernfs_fop_write_iter+0x138/0x284
  #2: c32684a0 (kn->active){.+.+}-{0:0}, at: kernfs_fop_write_iter+0x148/0x284
  #3: c232b6d4 (system_transition_mutex){+.+.}-{3:3}, at: pm_suspend+0x13c/0x4e8
  #4: c387b088 (&dev->mutex){....}-{3:3}, at: __device_suspend+0x1e8/0x91c
  #5: c3d7c46c (&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0xe8/0x100

 stack backtrace:
 CPU: 0 PID: 92 Comm: sh Not tainted 6.7.0-rc5-wt+ #532
 Hardware name: Atmel SAMA5
  unwind_backtrace from show_stack+0x18/0x1c
  show_stack from dump_stack_lvl+0x34/0x48
  dump_stack_lvl from __lock_acquire+0x19ec/0x3a0c
  __lock_acquire from lock_acquire.part.0+0x124/0x2d0
  lock_acquire.part.0 from _raw_spin_lock_irqsave+0x5c/0x78
  _raw_spin_lock_irqsave from __irq_get_desc_lock+0xe8/0x100
  __irq_get_desc_lock from irq_set_irq_wake+0xa8/0x204
  irq_set_irq_wake from atmel_gpio_irq_set_wake+0x58/0xb4
  atmel_gpio_irq_set_wake from irq_set_irq_wake+0x100/0x204
  irq_set_irq_wake from gpio_keys_suspend+0xec/0x2b8
  gpio_keys_suspend from dpm_run_callback+0xe4/0x248
  dpm_run_callback from __device_suspend+0x234/0x91c
  __device_suspend from dpm_suspend+0x224/0x43c
  dpm_suspend from dpm_suspend_start+0x9c/0xa8
  dpm_suspend_start from suspend_devices_and_enter+0x1e0/0xa84
  suspend_devices_and_enter from pm_suspend+0x460/0x4e8
  pm_suspend from state_store+0x78/0xe4
  state_store from kernfs_fop_write_iter+0x1a0/0x284
  kernfs_fop_write_iter from vfs_write+0x38c/0x6f4
  vfs_write from ksys_write+0xd8/0x178
  ksys_write from ret_fast_syscall+0x0/0x1c
 Exception stack(0xc52b3fa8 to 0xc52b3ff0)
 3fa0:                   00000004 005a0ae8 00000001 005a0ae8 00000004 00000001
 3fc0: 00000004 005a0ae8 00000001 00000004 00000004 b6c616c0 00000020 0059d190
 3fe0: 00000004 b6c61678 aec5a041 aebf1a26

This warning is raised because pinctrl-at91-pio4 uses chained IRQ. Whenever
a wake up source configures an IRQ through irq_set_irq_wake, it will
lock the corresponding IRQ desc, and then call irq_set_irq_wake on "parent"
IRQ which will do the same on its own IRQ desc, but since those two locks
share the same class, lockdep reports this as an issue.

Fix lockdep false positive by setting a different class for parent and
children IRQ

Fixes: 776180848b ("pinctrl: introduce driver for Atmel PIO4 controller")
Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
Link: https://lore.kernel.org/r/20231215-lockdep_warning-v1-1-8137b2510ed5@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-01-08 11:29:45 +01:00
..
accessibility
acpi ACPI/IORT: Make iort_msi_map_rid() PCI agnostic 2023-12-13 18:18:10 +01:00
amba amba: bus: fix refcount leak 2023-09-23 10:59:52 +02:00
android binder: fix memory leak in binder_init() 2023-08-16 18:19:23 +02:00
ata ata: pata_isapnp: Add missing error check for devm_ioport_map() 2023-12-08 08:44:23 +01:00
atm atm: solos-pci: Fix potential deadlock on &tx_queue_lock 2023-12-20 15:41:15 +01:00
auxdisplay
base devcoredump: Send uevent once devcd is ready 2023-12-13 18:18:18 +01:00
bcma
block remove the sx8 block driver 2023-11-08 11:23:42 +01:00
bluetooth Bluetooth: btusb: Add 0bda:b85b for Fn-Link RTL8852BE 2023-11-28 16:50:20 +00:00
bus bus: ti-sysc: Fix SYSC_QUIRK_SWSUP_SIDLE_ACT handling for uart wake-up 2023-10-10 21:46:39 +02:00
cdrom
char hwrng: geode - fix accessing registers 2023-11-20 10:30:12 +01:00
clk clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks 2023-11-28 16:50:19 +00:00
clocksource clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware 2023-11-28 16:50:13 +00:00
connector
counter counter: 104-quad-8: Fix race condition between FLAG and CNTR reads 2023-05-17 11:35:31 +02:00
cpufreq cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily 2023-12-08 08:44:28 +01:00
cpuidle cpuidle: dt: Return the correct numbers of parsed idle states 2023-01-18 11:40:53 +01:00
crypto crypto: caam/jr - fix Chacha20 + Poly1305 self test failure 2023-11-20 10:30:12 +01:00
dax
dca
devfreq PM / devfreq: Fix leak in devfreq_dev_release() 2023-09-23 10:59:54 +02:00
dio drivers: dio: fix possible memory leak in dio_init() 2023-01-18 11:41:21 +01:00
dma dmaengine: stm32-mdma: correct desc prep when channel running 2023-11-28 16:50:19 +00:00
dma-buf dma-buf/sw_sync: Avoid recursive lock during fence signal 2023-08-30 16:27:28 +02:00
edac EDAC/skx: Fix overflows on the DRAM row address mapping arrays 2023-05-17 11:35:35 +02:00
eisa
extcon extcon: Fix kernel doc of property capability fields to avoid warnings 2023-07-27 08:37:20 +02:00
firewire firewire: core: fix possible memory leak in create_units() 2023-12-08 08:44:26 +01:00
firmware firmware: ti_sci: Mark driver as non removable 2023-11-20 10:30:12 +01:00
fpga fpga: bridge: fix kernel-doc parameter description 2023-05-17 11:35:46 +02:00
fsi fsi: master-ast-cf: Add MODULE_FIRMWARE macro 2023-09-23 10:59:37 +02:00
gnss
gpio gpiolib: sysfs: Fix error handling on failed export 2023-12-13 18:18:15 +01:00
gpu drm/amdgpu: correct chunk_ptr to a pointer to chunk. 2023-12-13 18:18:10 +01:00
greybus
hid HID: hid-asus: add const to read-only outgoing usb buffer 2023-12-20 15:41:23 +01:00
hsi HSI: omap_ssi_core: Fix error handling in ssi_init() 2023-01-18 11:41:28 +01:00
hv Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs 2023-06-28 10:18:36 +02:00
hwmon hwmon: (acpi_power_meter) Fix 4.29 MW bug 2023-12-13 18:18:13 +01:00
hwspinlock
hwtracing coresight: tmc: Explicit type conversions to prevent integer overflow 2023-09-23 10:59:50 +02:00
i2c i2c: aspeed: Handle the coalesced stop conditions with the start conditions. 2024-01-08 11:29:45 +01:00
i3c i3c: master: cdns: Fix reading status register 2023-11-28 16:50:19 +00:00
ide treewide: Remove uninitialized_var() usage 2023-06-09 10:29:01 +02:00
idle intel_idle: Disable IBRS during long idle 2022-10-07 09:16:55 +02:00
iio iio: exynos-adc: request second interupt only when touchscreen mode is used 2023-11-08 11:23:36 +01:00
infiniband RDMA/bnxt_re: Correct module description string 2023-12-13 18:18:13 +01:00
input Input: xpad - add HyperX Clutch Gladiate Support 2023-12-08 08:44:27 +01:00
interconnect interconnect: Do not skip aggregation for disabled paths 2023-08-30 16:27:27 +02:00
iommu of/iommu: Make of_map_rid() PCI agnostic 2023-12-13 18:18:11 +01:00
ipack
irqchip firmware: ti_sci: Replace HTTP links with HTTPS ones 2023-11-20 10:30:12 +01:00
isdn mISDN: Update parameter type of dsp_cmx_send() 2023-08-16 18:19:23 +02:00
leds leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu' 2023-11-20 10:30:13 +01:00
lightnvm
macintosh macintosh: via-pmu-led: requires ATA to be set 2023-05-17 11:35:50 +02:00
mailbox mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0 2023-07-27 08:37:23 +02:00
mcb mcb: fix error handling for different scenarios when parsing 2023-11-28 16:50:19 +00:00
md bcache: avoid NULL checking to c->root in run_cache_set() 2023-12-20 15:41:20 +01:00
media media: venus: hfi: add checks to handle capabilities from firmware 2023-11-28 16:50:21 +00:00
memory memory: brcmstb_dpfe: fix testing array offset after use 2023-07-27 08:37:14 +02:00
memstick memstick r592: make memstick_debug_get_tpc_name() static 2023-07-27 08:37:10 +02:00
message scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race condition 2023-05-30 12:44:03 +01:00
mfd mfd: dln2: Fix double put in dln2_probe 2023-11-20 10:30:13 +01:00
misc misc: st_core: Do not call kfree_skb() under spin_lock_irqsave() 2023-11-20 10:30:13 +01:00
mmc mmc: block: Be sure to wait while busy in CQE error recovery 2023-12-20 15:41:25 +01:00
mtd mtd: cfi_cmdset_0001: Byte swap OTP info 2023-12-08 08:44:27 +01:00
mux
net ethernet: atheros: fix a memleak in atl1e_setup_ring_resources 2024-01-08 11:29:44 +01:00
nfc nfcsim.c: Fix error checking for debugfs_create_dir 2023-06-28 10:18:41 +02:00
ntb ntb: Fix calculation ntb_transport_tx_free_entry() 2023-09-23 10:59:55 +02:00
nubus
nvdimm nd_btt: Make BTT lanes preemptible 2023-11-20 10:30:12 +01:00
nvme nvmet: nul-terminate the NQNs passed in the connect command 2023-12-08 08:44:24 +01:00
nvmem nvmem: imx: correct nregs for i.MX6UL 2023-11-08 11:23:37 +01:00
of of: dynamic: Fix of_reconfig_get_state_change() return value documentation 2023-12-13 18:18:11 +01:00
opp OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd() 2023-09-23 10:59:40 +02:00
oprofile
parisc parisc: iosapic.c: Fix sparse warnings 2023-10-10 21:46:39 +02:00
parport parport: Add support for Brainboxes IX/UC/PX parallel cards 2023-12-13 18:18:15 +01:00
pci Revert "PCI: acpiphp: Reassign resources on bridge if necessary" 2023-12-20 15:41:19 +01:00
pcmcia pcmcia: ds: fix possible name leak in error path in pcmcia_device_add() 2023-11-20 10:30:14 +01:00
perf perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09 2023-09-23 11:00:03 +02:00
phy phy: mapphone-mdm6600: Fix pinctrl_pm handling for sleep pins 2023-10-25 11:53:25 +02:00
pinctrl pinctrl: at91-pio4: use dedicated lock class for IRQ 2024-01-08 11:29:45 +01:00
platform platform/x86: intel_telemetry: Fix kernel doc descriptions 2023-12-20 15:41:21 +01:00
pnp PNP: fix name memory leak in pnp_alloc_dev() 2023-01-18 11:40:54 +01:00
power power: supply: Fix logic checking if system is running from battery 2023-06-21 15:44:09 +02:00
powercap powercap: RAPL: Fix CONFIG_IOSF_MBI dependency 2023-07-27 08:37:06 +02:00
pps
ps3
ptp ptp: annotate data-race around q->head and q->tail 2023-11-28 16:50:16 +00:00
pwm pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume 2023-11-20 10:30:15 +01:00
rapidio rapidio: devices: fix missing put_device in mport_cdev_open 2023-01-18 11:40:59 +01:00
ras
regulator regulator/core: Revert "fix kobject release warning and memory leak in regulator_register()" 2023-10-25 11:53:23 +02:00
remoteproc remoteproc: st: Call of_node_put() on iteration error 2023-05-17 11:36:01 +02:00
reset reset: Fix crash when freeing non-existent optional resets 2024-01-08 11:29:43 +01:00
rpmsg rpmsg: Fix possible refcount leak in rpmsg_register_device_override() 2023-11-08 11:23:40 +01:00
rtc rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call 2023-11-20 10:30:14 +01:00
s390 s390/dasd: protect device queue against concurrent access 2023-12-08 08:44:25 +01:00
sbus
scsi scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle() 2023-12-13 18:18:13 +01:00
sfi
sh
siox siox: fix possible memory leak in siox_device_add() 2022-11-25 17:42:14 +01:00
slimbus slimbus: stream: correct presence rate frequencies 2022-11-25 17:42:17 +01:00
soc soc: qcom: llcc: Handle a second device without data corruption 2023-11-20 10:30:12 +01:00
soundwire soundwire: stream: fix NULL pointer dereference for multi_link 2023-12-20 15:41:24 +01:00
spi spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies 2023-11-20 10:30:16 +01:00
spmi spmi: Add a check for remove callback when removing a SPMI driver 2023-05-17 11:35:49 +02:00
ssb treewide: Remove uninitialized_var() usage 2023-06-09 10:29:01 +02:00
staging staging: rtl8712: fix race condition 2023-09-23 10:59:37 +02:00
target scsi: target: core: Fix deadlock due to recursive locking 2023-10-10 21:46:43 +02:00
tc
tee tee: optee: fix possible memory leak in optee_register_device() 2022-12-08 11:22:57 +01:00
thermal thermal: core: prevent potential string overflow 2023-11-20 10:30:09 +01:00
thunderbolt thunderbolt: Use const qualifier for ring_interrupt_index 2023-04-05 11:16:39 +02:00
tty serial: 8250_omap: Add earlycon support for the AM654 UART controller 2023-12-13 18:18:16 +01:00
uio uio: uio_dmem_genirq: Fix deadlock between irq config and handling 2023-01-18 11:41:22 +01:00
usb usb: typec: class: fix typec_altmode_put_partner to put plugs 2023-12-13 18:18:16 +01:00
vfio vfio: platform: Do not pass return buffer to ACPI _RST method 2023-01-18 11:41:22 +01:00
vhost treewide: Remove uninitialized_var() usage 2023-06-09 10:29:01 +02:00
video fbdev: stifb: Make the STI next font pointer a 32-bit signed offset 2023-12-08 08:44:27 +01:00
virt vboxguest: Do not use devm for irq 2022-08-25 11:18:33 +02:00
virtio virtio-mmio: fix memory leak of vm_dev 2023-11-08 11:23:34 +01:00
visorbus
vlynq
vme vme: Fix error not catched in fake_init() 2023-01-18 11:41:26 +01:00
w1 w1: fix loop in w1_fini() 2023-07-27 08:37:19 +02:00
watchdog watchdog: iTCO_wdt: Set NO_REBOOT if the watchdog is not already running 2023-10-10 21:46:40 +02:00
xen xen/events: fix delayed eoi list handling 2023-11-28 16:50:16 +00:00
zorro
Kconfig
Makefile