mirror-linux/drivers/pinctrl
Bartosz Golaszewski ebc18e9854 pinctrl: qcom: lpass-lpi: mark the GPIO controller as sleeping
The gpio_chip settings in this driver say the controller can't sleep
but it actually uses a mutex for synchronization. This triggers the
following BUG():

[    9.233659] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:281
[    9.233665] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 554, name: (udev-worker)
[    9.233669] preempt_count: 1, expected: 0
[    9.233673] RCU nest depth: 0, expected: 0
[    9.233688] Tainted: [W]=WARN
[    9.233690] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 2.10.1 05/20/2025
[    9.233694] Call trace:
[    9.233696]  show_stack+0x24/0x38 (C)
[    9.233709]  dump_stack_lvl+0x40/0x88
[    9.233716]  dump_stack+0x18/0x24
[    9.233722]  __might_resched+0x148/0x160
[    9.233731]  __might_sleep+0x38/0x98
[    9.233736]  mutex_lock+0x30/0xd8
[    9.233749]  lpi_config_set+0x2e8/0x3c8 [pinctrl_lpass_lpi]
[    9.233757]  lpi_gpio_direction_output+0x58/0x90 [pinctrl_lpass_lpi]
[    9.233761]  gpiod_direction_output_raw_commit+0x110/0x428
[    9.233772]  gpiod_direction_output_nonotify+0x234/0x358
[    9.233779]  gpiod_direction_output+0x38/0xd0
[    9.233786]  gpio_shared_proxy_direction_output+0xb8/0x2a8 [gpio_shared_proxy]
[    9.233792]  gpiod_direction_output_raw_commit+0x110/0x428
[    9.233799]  gpiod_direction_output_nonotify+0x234/0x358
[    9.233806]  gpiod_configure_flags+0x2c0/0x580
[    9.233812]  gpiod_find_and_request+0x358/0x4f8
[    9.233819]  gpiod_get_index+0x7c/0x98
[    9.233826]  devm_gpiod_get+0x34/0xb0
[    9.233829]  reset_gpio_probe+0x58/0x128 [reset_gpio]
[    9.233836]  auxiliary_bus_probe+0xb0/0xf0
[    9.233845]  really_probe+0x14c/0x450
[    9.233853]  __driver_probe_device+0xb0/0x188
[    9.233858]  driver_probe_device+0x4c/0x250
[    9.233863]  __driver_attach+0xf8/0x2a0
[    9.233868]  bus_for_each_dev+0xf8/0x158
[    9.233872]  driver_attach+0x30/0x48
[    9.233876]  bus_add_driver+0x158/0x2b8
[    9.233880]  driver_register+0x74/0x118
[    9.233886]  __auxiliary_driver_register+0x94/0xe8
[    9.233893]  init_module+0x34/0xfd0 [reset_gpio]
[    9.233898]  do_one_initcall+0xec/0x300
[    9.233903]  do_init_module+0x64/0x260
[    9.233910]  load_module+0x16c4/0x1900
[    9.233915]  __arm64_sys_finit_module+0x24c/0x378
[    9.233919]  invoke_syscall+0x4c/0xe8
[    9.233925]  el0_svc_common+0x8c/0xf0
[    9.233929]  do_el0_svc+0x28/0x40
[    9.233934]  el0_svc+0x38/0x100
[    9.233938]  el0t_64_sync_handler+0x84/0x130
[    9.233943]  el0t_64_sync+0x17c/0x180

Mark the controller as sleeping.

Fixes: 6e261d1090 ("pinctrl: qcom: Add sm8250 lpass lpi pinctrl driver")
Cc: stable@vger.kernel.org
Reported-by: Val Packett <val@packett.cool>
Closes: https://lore.kernel.org/all/98c0f185-b0e0-49ea-896c-f3972dd011ca@packett.cool/
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-01-01 15:40:56 +01:00
..
actions treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
aspeed pinctrl: aspeed-g6: Add PCIe RC PERST pin group 2025-07-23 13:22:41 +02:00
bcm pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
berlin pinctrl: berlin: fix memory leak in berlin_pinctrl_build_state() 2025-06-24 21:17:11 +02:00
cirrus pinctrl: cirrus: Fix fwnode leak in cs42l43_pin_probe() 2025-11-10 00:01:22 +01:00
cix pinctrl: cix: Fix obscure dependency 2025-11-25 14:26:07 +01:00
freescale pinctrl: make struct pinfunction a pointer in struct function_desc 2025-09-08 14:22:41 +02:00
intel pinctrl: cherryview: Convert to use intel_gpio_add_pin_ranges() 2025-11-18 15:13:59 +01:00
mediatek pinctrl: mediatek: mt8189: restore previous register base name array order 2025-12-26 18:45:11 +01:00
meson Pin control changes for the v6.18 kernel cycle: 2025-10-01 13:14:48 -07:00
mvebu pinctrl: armada-37xx: Use int type to store negative error codes 2025-09-08 14:20:57 +02:00
nomadik Pin control changes for the v6.18 kernel cycle: 2025-10-01 13:14:48 -07:00
nuvoton pinctrl: ma35: Convert to common field_{get,prep}() helpers 2025-11-24 14:15:47 -05:00
nxp pinctrl: s32cc: initialize gpio_pin_config::list after kmalloc() 2025-11-18 23:56:11 +01:00
pxa
qcom pinctrl: qcom: lpass-lpi: mark the GPIO controller as sleeping 2026-01-01 15:40:56 +01:00
realtek pinctrl: realtek: Select REGMAP_MMIO for RTD driver 2025-10-23 15:09:01 +02:00
renesas pinctrl: renesas: rzg2l: Refactor OEN register PWPR handling 2025-11-13 21:21:02 +01:00
samsung pinctrl: samsung: Add ARTPEC-9 SoC specific configuration 2025-10-13 03:02:21 +02:00
sophgo
spacemit pinctrl: spacemit: fix typo in PRI_TDI pin name 2025-09-08 14:24:03 +02:00
spear treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
sprd pinctrl: Simplify printks with pOF format 2025-09-12 14:19:31 +02:00
starfive pinctrl: starfive: use dynamic GPIO base allocation 2025-12-04 00:22:49 +01:00
stm32 pinctrl: stm32: handle semaphore acquisition when handling pinctrl/pinmux 2025-11-10 23:59:00 +01:00
sunplus pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
sunxi pinctrl: Simplify printks with pOF format 2025-09-12 14:19:31 +02:00
tegra pinctrl: tegra20: register csus_mux clock 2025-10-14 14:02:57 +02:00
ti
uniphier
visconti
vt8500 treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
Kconfig pinctrl: pic64gx-gpio2: Add REGMAP_MMIO dependency 2026-01-01 15:33:27 +01:00
Makefile pinctrl: cix: Add pin-controller support for sky1 2025-10-28 10:42:47 +01:00
core.c pinctrl: cix: sky1: Provide pin control dummy states 2025-11-05 18:13:33 +01:00
core.h pinctrl: Constify pointers to 'pinctrl_desc' 2025-06-18 13:26:36 +02:00
devicetree.c
devicetree.h
pinconf-generic.c pinctrl: pinconf-generic: Add properties 'skew-delay-{in,out}put-ps' 2025-10-28 10:43:01 +01:00
pinconf.c
pinconf.h pinctrl: add stubs for OF-specific pinconf functions 2025-05-13 15:05:45 +02:00
pinctrl-amd.c pinctrl: amd: Don't access irq_data's hwirq member directly 2025-08-22 08:34:40 +02:00
pinctrl-amd.h
pinctrl-amdisp.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-amdisp.h
pinctrl-apple-gpio.c pinctrl: apple: Add "apple,t8103-pinctrl" as compatible 2025-09-14 21:51:22 +02:00
pinctrl-artpec6.c pinctrl: Constify static 'pinctrl_desc' 2025-06-18 13:26:37 +02:00
pinctrl-as3722.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-at91-pio4.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-at91.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-at91.h
pinctrl-aw9523.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-axp209.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-bm1880.c pinctrl: Constify static 'pinctrl_desc' 2025-06-18 13:26:37 +02:00
pinctrl-cy8c95x0.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-da850-pupd.c
pinctrl-da9062.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-digicolor.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-eic7700.c pinctrl: eswin: Fix regulator error check and Kconfig dependency 2025-09-08 14:23:51 +02:00
pinctrl-ep93xx.c
pinctrl-equilibrium.c pinctrl: use more common syntax for compound literals 2025-09-24 00:41:08 +02:00
pinctrl-equilibrium.h pinctrl: equilibrium: use new generic GPIO chip API 2025-08-19 11:41:38 +02:00
pinctrl-eyeq5.c
pinctrl-falcon.c pinctrl: falcon: mark pinctrl_falcon_init() as static 2025-06-24 21:01:31 +02:00
pinctrl-gemini.c
pinctrl-ingenic.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-k210.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-k230.c pinctrl: canaan: k230: Fix order of DT parse and pinctrl register 2025-06-24 21:36:15 +02:00
pinctrl-keembay.c pinctrl: keembay: fix double free in keembay_build_functions() 2025-09-08 14:24:12 +02:00
pinctrl-lantiq.c
pinctrl-lantiq.h
pinctrl-loongson2.c
pinctrl-lpc18xx.c pinctrl: Constify static 'pinctrl_desc' 2025-06-18 13:26:37 +02:00
pinctrl-max7360.c pinctrl: Add MAX7360 pinctrl driver 2025-09-16 15:24:48 +01:00
pinctrl-max77620.c pinctrl: max77620: Move fixed assignments to 'pinctrl_desc' definition 2025-06-18 13:26:37 +02:00
pinctrl-mcp23s08.c pinctrl: mcp23s08: init reg_defaults from HW at probe and switch cache type 2025-10-29 23:19:08 +01:00
pinctrl-mcp23s08.h
pinctrl-mcp23s08_i2c.c
pinctrl-mcp23s08_spi.c
pinctrl-microchip-sgpio.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-mlxbf3.c pinctrl: Constify static 'pinctrl_desc' 2025-06-18 13:26:37 +02:00
pinctrl-mpfs-iomux0.c pinctrl: mpfs-iomux0: fix compile-time constant warning for LLVM prior to 17 2025-10-30 09:18:13 +01:00
pinctrl-ocelot.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-palmas.c pinctrl: palmas: Move fixed assignments to 'pinctrl_desc' definition 2025-06-18 13:26:37 +02:00
pinctrl-pef2256.c
pinctrl-pic32.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-pic32.h
pinctrl-pic64gx-gpio2.c pinctrl: add pic64gx "gpio2" pinmux driver 2025-10-24 11:08:25 +02:00
pinctrl-pistachio.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-rk805.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-rockchip.c pinctrl: rockchip: Add rk3506 pinctrl support 2025-11-10 23:24:06 +01:00
pinctrl-rockchip.h pinctrl: rockchip: Add rk3506 pinctrl support 2025-11-10 23:24:06 +01:00
pinctrl-rp1.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-scmi.c pinctrl-scmi: remove unused struct members 2025-10-29 15:17:30 +01:00
pinctrl-single.c pinctrl: single: Fix incorrect type for error return variable 2025-12-04 00:19:37 +01:00
pinctrl-st.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-stmfx.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-sx150x.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-tb10x.c Pin control changes for v6.17 2025-08-02 12:07:09 -07:00
pinctrl-th1520.c
pinctrl-tps6594.c pinctrl: pinctrl-tps6594: Add TPS652G1 PMIC pinctrl and GPIO 2025-07-10 09:58:12 +01:00
pinctrl-upboard.c pinctrl: Add pin controller driver for AAEON UP boards 2025-08-18 17:45:07 +02:00
pinctrl-utils.c
pinctrl-utils.h
pinctrl-xway.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
pinctrl-zynq.c pinctrl: Constify static 'pinctrl_desc' 2025-06-18 13:26:37 +02:00
pinctrl-zynqmp.c arm64: Xilinx SOC changes for 6.18 2025-10-17 15:24:00 +02:00
pinmux.c pinctrl: allow to mark pin functions as requestable GPIOs 2025-09-08 14:22:58 +02:00
pinmux.h pinctrl: allow to mark pin functions as requestable GPIOs 2025-09-08 14:22:58 +02:00