From: "Frank Wunderlich" <frank.wunderlich@linux.dev>
To: "Bartosz Golaszewski" <bartosz.golaszewski@oss.qualcomm.com>
Cc: "Daniel Golle" <daniel@makrotopia.org>,
linux-kernel@vger.kernel.org, "Linus Walleij" <linusw@kernel.org>
Subject: "gpiolib: remove redundant callback check" causes regression when gpio_chip.get_direction callback is not implemented
Date: Sat, 04 Apr 2026 12:14:14 +0000 [thread overview]
Message-ID: <fbca125e9bf9e87f81b30c162ffcb6863a36faf2@linux.dev> (raw)
Hi
i stumbled over your commit 471e998c0e31 "gpiolib: remove redundant callback check" in
kernel 7.0 (6.19-rc6+ should be affected) because i get some traces on my mt7988 board
when calling "cat /sys/kernel/debug/gpio":
[ 33.903162] gpio-chip: pinctrl_moore base: 200 offset: 0
[ 33.908489] ------------[ cut here ]------------
[ 33.913095] WARNING: drivers/gpio/gpiolib.c:424 at gpiochip_get_direction+0x60/0x78, CPU#0: cat/3421
[ 33.922216] Modules linked in:
[ 33.925262] CPU: 0 UID: 0 PID: 3421 Comm: cat Tainted: G W 7.0.0-rc6-bpi-r4-rc6 #9 PREEMPTLAZY
[ 33.935423] Tainted: [W]=WARN
[ 33.938380] Hardware name: Bananapi BPI-R4 Pro 8X (DT)
[ 33.943506] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 33.950454] pc : gpiochip_get_direction+0x60/0x78
[ 33.955148] lr : gpiochip_get_direction+0x30/0x78
[ 33.959841] sp : ffffffc088463ae0
[ 33.963145] x29: ffffffc088463ae0 x28: ffffff80c02e1c17 x27: ffffff80c01073f0
[ 33.970271] x26: ffffffc08123e448 x25: ffffff80c02e1c18 x24: ffffff80c01682a0
[ 33.977397] x23: 0000000000000000 x22: ffffff80c02e1c18 x21: ffffff80c02e1800
[ 33.984523] x20: 0000000000000015 x19: ffffff80c01682a0 x18: 00000000ffffffff
[ 33.991649] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000006
[ 33.998774] x14: 00000000ffffffea x13: ffffffc088463858 x12: ffffffc081979ce8
[ 34.005901] x11: 0000000000000001 x10: 0000000000000001 x9 : 0000000000017fe8
[ 34.013027] x8 : ffffffc081921c70 x7 : c0000000ffffefff x6 : 0000000000057fa8
[ 34.020154] x5 : ffffff80ff746688 x4 : 0000000000000000 x3 : 0000000000000000
[ 34.027280] x2 : 0000000000000000 x1 : ffffff80c908c880 x0 : 000000000000002c
[ 34.034405] Call trace:
[ 34.036841] gpiochip_get_direction+0x60/0x78 (P)
[ 34.041536] gpiod_get_direction+0x90/0x188
[ 34.045710] gpiolib_seq_show+0x2b4/0x414
[ 34.049710] seq_read_iter+0xe0/0x498
[ 34.053362] seq_read+0xe8/0x128
[ 34.056580] full_proxy_read+0x6c/0xa8
[ 34.060320] vfs_read+0xa4/0x300
[ 34.063539] ksys_read+0x6c/0x104
[ 34.066846] __arm64_sys_read+0x1c/0x28
[ 34.070673] invoke_syscall+0x48/0x10c
[ 34.074413] el0_svc_common.constprop.0+0x40/0xe0
[ 34.079106] do_el0_svc+0x1c/0x28
[ 34.082411] el0_svc+0x34/0x108
[ 34.085545] el0t_64_sync_handler+0xa0/0xe4
[ 34.089720] el0t_64_sync+0x19c/0x1a0
[ 34.093373] ---[ end trace 0000000000000000 ]---
with e623c4303ed1 ("gpiolib: sanitize the return value of gpio_chip::get_direction()") you introduced a new helper
which calls WARN_ON if the callback is not defined, and with removing the pre-check this WARN is now printed on
every gpio-controller which does not implement the gpio_chip.get_direction callback.
as you see in my debug (first line) it affects pinctrl_moore driver which contructs the gpiochip callbacks here:
https://elixir.bootlin.com/linux/v7.0-rc6/source/drivers/pinctrl/mediatek/pinctrl-moore.c#L562
please let me know if this is now invalid and need to be fixed in drive, but imho the WARN_ON here is wrong (optional
callback) beause direction of pins is correctly printed like this after the traces:
gpiochip0: 84 GPIOs, parent: platform/1001f000.pinctrl, pinctrl_moore:
gpio-0 ( |tx-disable ) in lo
gpio-1 ( |mod-def0 ) in hi IRQ ACTIVE LOW
gpio-2 ( |los ) in hi IRQ
gpio-12 ( |cd ) in lo IRQ ACTIVE LOW
gpio-13 ( |reset ) in hi IRQ ACTIVE LOW
gpio-14 ( |WPS ) in hi IRQ ACTIVE LOW
gpio-21 ( |tx-disable ) out hi
gpio-63 ( |pcie-3-hog ) out hi
gpio-69 ( |mod-def0 ) in lo IRQ ACTIVE LOW
gpio-70 ( |los ) in hi IRQ
gpio-79 ( |pcie-2-hog ) out hi
gpio-82 ( |PHY reset ) out hi ACTIVE LOW
gpio-83 ( |PHY reset ) out hi ACTIVE LOW
regards Frank
reply other threads:[~2026-04-04 12:14 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fbca125e9bf9e87f81b30c162ffcb6863a36faf2@linux.dev \
--to=frank.wunderlich@linux.dev \
--cc=bartosz.golaszewski@oss.qualcomm.com \
--cc=daniel@makrotopia.org \
--cc=linusw@kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.