* Re: [PATCH 0/2] upboard pinctrl support for device id INTC1055
From: GaryWang @ 2026-06-29 19:03 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Linus Walleij, Mika Westerberg, Andy Shevchenko, Thomas Richard,
Daniele Cleri, JunYingLai, Louis Chen, linux-gpio, linux-kernel
In-Reply-To: <akKt4PV5E6lYpEZV@ashevche-desk.local>
On Tue, Jun 30, 2026 at 1:39 AM Andy Shevchenko
<andriy.shevchenko@intel.com> wrote:
>
> On Fri, Jun 12, 2026 at 01:05:35AM +0800, GaryWang wrote:
> > On Fri, Jun 12, 2026 at 12:04 AM Andy Shevchenko
> > <andriy.shevchenko@intel.com> wrote:
> > > On Thu, Jun 11, 2026 at 02:30:00PM +0200, Linus Walleij wrote:
> > > > On Wed, Jun 10, 2026 at 4:13 PM Andy Shevchenko
> > > > <andriy.shevchenko@intel.com> wrote:
> > > > > On Wed, Jun 10, 2026 at 04:34:22PM +0800, GaryWang wrote:
>
> ...
>
> > > > > I can take both via Intel pin control tree, just waiting for Mika's and Linus' acks.
> > > > > Then I can send PR to Linus to (try to) include this to v7.2-rc2 as it seems close
> > > > > enough to the category of adding new HW support without breaking anything else.
> > > >
> > > > Excellent, thanks.
> > > > Acked-by: Linus Walleij< linusw@kernel.org>
> > >
> > > Thanks! I consider that for both patches. Gary, please send a v2 with all tags
> > > and elaborated commit messages and cover letter to address Mika's questions and
> > > concerns.
>
> > yeah, no problem to send patch V2 ASAP.
>
> Did I miss v2? If not, now is a good time for it.
no, I am preparing V3 to fix n series processor and based on 7.2-rc1,
I'll send it after 2 days, thanks.
>
> --
> With Best Regards,
> Andy Shevchenko
>
>
^ permalink raw reply
* Re: [PATCH v14 4/5] gpio: rpmsg: add generic rpmsg GPIO driver
From: Andrew Davis @ 2026-06-29 19:22 UTC (permalink / raw)
To: Shenwei Wang (OSS), Linus Walleij, Bartosz Golaszewski,
Jonathan Corbet, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bjorn Andersson, Mathieu Poirier, Frank Li, Sascha Hauer
Cc: Shuah Khan, linux-gpio@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, Pengutronix Kernel Team,
Fabio Estevam, Shenwei Wang, Peng Fan, devicetree@vger.kernel.org,
linux-remoteproc@vger.kernel.org, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org, dl-linux-imx,
Arnaud POULIQUEN, b-padhi@ti.com, Andrew Lunn,
Bartosz Golaszewski
In-Reply-To: <DB8PR04MB712990DF9806BBCF36B1076DC8E82@DB8PR04MB7129.eurprd04.prod.outlook.com>
On 6/29/26 1:26 PM, Shenwei Wang (OSS) wrote:
>
>
>> -----Original Message-----
>> From: Andrew Davis <afd@ti.com>
>> Sent: Thursday, June 25, 2026 3:32 PM
>
> ...
>> Subject: Re: [PATCH v14 4/5] gpio: rpmsg: add generic rpmsg GPIO driver
>>> + Say yes here to support the generic GPIO functions over the RPMSG
>>> + bus. Currently supported devices: i.MX7ULP, i.MX8ULP, i.MX8x, and
>>> + i.MX9x.
>>
>> The support would depend on if the right firmware is loaded/running on the given
>> remote core. Also if you want to make this generic, then any vendor should be
>> able to make a firmware that implements this protocol and make use of this
>> driver.
>> Suggest dropping this NXP specific device list.
>>
>
> Agree.
>
>>> +
>>> + If unsure, say N.
>>> +
>>> +endmenu
>>> +
>>> menu "SPI GPIO expanders"
>>> depends on SPI_MASTER
>>>
>>> diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index
>>> b267598b517d..ee75c0e65b8b 100644
>>> --- a/drivers/gpio/Makefile
>>> +++ b/drivers/gpio/Makefile
>>> @@ -157,6 +157,7 @@ obj-$(CONFIG_GPIO_RDC321X) += gpio-
>
> ...
>>> +
>>> +static int rpmsg_gpio_channel_probe(struct rpmsg_device *rpdev) {
>>> + struct device *dev = &rpdev->dev;
>>> + struct device_node *np;
>>> + const char *rproc_name;
>>> + int idx;
>>> +
>>> + idx = rpmsg_get_gpio_index(rpdev->id.name, CHAN_NAME_PREFIX);
>>> + if (idx < 0)
>>> + return -EINVAL;
>>> +
>>> + if (!dev->of_node) {
>>> + np = rpmsg_get_channel_ofnode(rpdev, GPIO_COMPAT_STR, idx);
>>> + if (!np)
>>> + return -ENODEV;
>>
>> This seems to imply that DT nodes are required. RPMSG is a discoverable bus
>> with a nameservice that can bind/probe new devices. While then optionally
>> binding to a DT node when available so sub-devices can be described in DT is fine,
>> I don't see why it should be required.
>>
>
> First, a GPIO node typically acts as a provider for other devices.
Not necessarily, there is a userspace API for interacting with GPIOs.
And there are ways to get/attach GPIO lines to other devices without DT.
> Second, by requiring a DT node, we can ensure that only explicitly enabled GPIO resources are managed and accessible.
Not sure I follow here, you have a firmware that provides GPIOs to Linux,
Linux should register those with the GPIO framework. Not sure why DT
is required to be involved. Some systems don't do DT, but they have
firmware and GPIOs.
I'm not saying if the system does use DT and has a node specifically
for this firmware/gpio then we shouldn't bind to that and use it,
just questioning making that "required".
Andrew
>
>>> +static struct rpmsg_driver rpmsg_gpio_channel_client = {
>>> + .callback = rpmsg_gpio_channel_callback,
>>> + .id_table = rpmsg_gpio_channel_id_table,
>>> + .probe = rpmsg_gpio_channel_probe,
>>> + .drv = {
>>> + .name = KBUILD_MODNAME,
>>> + .of_match_table = rpmsg_gpio_dt_ids,
>>
>> Does this line actually do anything anymore? Maybe it did when this was a
>> platform_driver, but this is a rpmsg_driver and will probe though .id_table
>> matches.
>>
>
> Yes, it can be removed because the driver will find the dt node on its own.
>
> Thanks,
> Shenwei
>
>> Andrew
>>
>>> + },
>>> +};
>>> +module_rpmsg_driver(rpmsg_gpio_channel_client);
>>> +
>>> +MODULE_AUTHOR("Shenwei Wang <shenwei.wang@nxp.com>");
>>> +MODULE_DESCRIPTION("generic rpmsg gpio driver");
>>> +MODULE_LICENSE("GPL");
>>
>
^ permalink raw reply
* [brgl:gpio/for-next] BUILD SUCCESS WITH WARNING 79db21e77c560b2b9eaf950674efa845cca5854b
From: kernel test robot @ 2026-06-29 20:06 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: linux-gpio
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
branch HEAD: 79db21e77c560b2b9eaf950674efa845cca5854b Merge tag 'v7.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into gpio/for-next
Warning (recently discovered and may have been fixed):
https://lore.kernel.org/oe-kbuild-all/202606270433.gAWekfd3-lkp@intel.com
Warning: drivers/gpio/gpio-rtd1625.c:72 struct member 'base_offset' not described in 'rtd1625_gpio_info'
Warning ids grouped by kconfigs:
recent_errors
|-- alpha-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- arc-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- arc-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- arm-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- arm64-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- arm64-randconfig-002-20260629
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- arm64-randconfig-003-20260629
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- csky-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- m68k-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- m68k-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- microblaze-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- mips-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- mips-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- nios2-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- openrisc-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- parisc-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- parisc-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- powerpc-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- riscv-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- riscv-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- s390-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- s390-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- sh-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- sh-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- sparc64-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- um-allmodconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
|-- um-allyesconfig
| `-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
`-- xtensa-allyesconfig
`-- Warning:drivers-gpio-gpio-rtd1625.c-struct-member-base_offset-not-described-in-rtd1625_gpio_info
elapsed time: 741m
configs tested: 305
configs skipped: 4
tested configs:
alpha allnoconfig gcc-16.1.0
alpha allyesconfig gcc-16.1.0
alpha defconfig gcc-16.1.0
arc allmodconfig clang-23
arc allmodconfig gcc-16.1.0
arc allnoconfig gcc-16.1.0
arc allyesconfig clang-23
arc allyesconfig gcc-16.1.0
arc defconfig gcc-16.1.0
arc randconfig-001-20260629 clang-17
arc randconfig-001-20260629 gcc-16.1.0
arc randconfig-001-20260630 clang-23
arc randconfig-002-20260629 clang-17
arc randconfig-002-20260629 gcc-8.5.0
arc randconfig-002-20260630 clang-23
arm allnoconfig clang-17
arm allyesconfig clang-23
arm allyesconfig gcc-16.1.0
arm defconfig gcc-16.1.0
arm randconfig-001-20260629 clang-17
arm randconfig-001-20260629 gcc-10.5.0
arm randconfig-001-20260630 clang-23
arm randconfig-002-20260629 clang-17
arm randconfig-002-20260630 clang-23
arm randconfig-003-20260629 clang-17
arm randconfig-003-20260630 clang-23
arm randconfig-004-20260629 clang-17
arm randconfig-004-20260629 gcc-16.1.0
arm randconfig-004-20260630 clang-23
arm64 allmodconfig clang-23
arm64 allnoconfig gcc-16.1.0
arm64 defconfig gcc-16.1.0
arm64 randconfig-001-20260629 gcc-16.1.0
arm64 randconfig-001-20260630 clang-23
arm64 randconfig-002-20260629 clang-22
arm64 randconfig-002-20260629 gcc-16.1.0
arm64 randconfig-002-20260630 clang-23
arm64 randconfig-003-20260629 clang-23
arm64 randconfig-003-20260629 gcc-16.1.0
arm64 randconfig-003-20260630 clang-23
arm64 randconfig-004-20260629 clang-20
arm64 randconfig-004-20260629 gcc-16.1.0
arm64 randconfig-004-20260630 clang-23
csky allmodconfig gcc-16.1.0
csky allnoconfig gcc-16.1.0
csky defconfig gcc-16.1.0
csky randconfig-001-20260629 gcc-10.5.0
csky randconfig-001-20260629 gcc-16.1.0
csky randconfig-001-20260630 clang-23
csky randconfig-002-20260629 gcc-12.5.0
csky randconfig-002-20260629 gcc-16.1.0
csky randconfig-002-20260630 clang-23
hexagon allmodconfig gcc-16.1.0
hexagon allnoconfig clang-23
hexagon defconfig gcc-16.1.0
hexagon randconfig-001 gcc-11.5.0
hexagon randconfig-001-20260629 gcc-11.5.0
hexagon randconfig-001-20260630 clang-18
hexagon randconfig-002 gcc-11.5.0
hexagon randconfig-002-20260629 gcc-11.5.0
hexagon randconfig-002-20260630 clang-18
i386 allmodconfig clang-22
i386 allnoconfig gcc-14
i386 allyesconfig clang-22
i386 buildonly-randconfig-001-20260629 clang-22
i386 buildonly-randconfig-001-20260629 gcc-14
i386 buildonly-randconfig-001-20260630 clang-22
i386 buildonly-randconfig-002-20260629 gcc-13
i386 buildonly-randconfig-002-20260629 gcc-14
i386 buildonly-randconfig-002-20260630 clang-22
i386 buildonly-randconfig-003-20260629 gcc-14
i386 buildonly-randconfig-003-20260630 clang-22
i386 buildonly-randconfig-004-20260629 clang-22
i386 buildonly-randconfig-004-20260629 gcc-14
i386 buildonly-randconfig-004-20260630 clang-22
i386 buildonly-randconfig-005-20260629 gcc-14
i386 buildonly-randconfig-005-20260630 clang-22
i386 buildonly-randconfig-006-20260629 clang-22
i386 buildonly-randconfig-006-20260629 gcc-14
i386 buildonly-randconfig-006-20260630 clang-22
i386 defconfig gcc-16.1.0
i386 randconfig-001-20260629 clang-22
i386 randconfig-001-20260630 clang-22
i386 randconfig-002-20260629 clang-22
i386 randconfig-002-20260630 clang-22
i386 randconfig-003-20260629 clang-22
i386 randconfig-003-20260630 clang-22
i386 randconfig-004-20260629 clang-22
i386 randconfig-004-20260630 clang-22
i386 randconfig-005-20260629 clang-22
i386 randconfig-005-20260630 clang-22
i386 randconfig-006-20260629 clang-22
i386 randconfig-006-20260630 clang-22
i386 randconfig-007-20260629 clang-22
i386 randconfig-007-20260630 clang-22
i386 randconfig-011-20260629 gcc-14
i386 randconfig-012-20260629 gcc-14
i386 randconfig-013-20260629 gcc-14
i386 randconfig-014-20260629 gcc-14
i386 randconfig-015-20260629 gcc-14
i386 randconfig-016-20260629 gcc-14
i386 randconfig-017-20260629 gcc-14
loongarch allmodconfig clang-23
loongarch allnoconfig clang-20
loongarch defconfig clang-23
loongarch randconfig-001 gcc-11.5.0
loongarch randconfig-001-20260629 gcc-11.5.0
loongarch randconfig-001-20260630 clang-18
loongarch randconfig-002 gcc-11.5.0
loongarch randconfig-002-20260629 gcc-11.5.0
loongarch randconfig-002-20260630 clang-18
m68k allmodconfig gcc-16.1.0
m68k allnoconfig gcc-16.1.0
m68k allyesconfig clang-23
m68k allyesconfig gcc-16.1.0
m68k defconfig clang-23
microblaze allnoconfig gcc-16.1.0
microblaze allyesconfig gcc-16.1.0
microblaze defconfig clang-23
mips allmodconfig gcc-16.1.0
mips allnoconfig gcc-16.1.0
mips allyesconfig gcc-16.1.0
mips bcm47xx_defconfig clang-23
mips malta_defconfig gcc-16.1.0
nios2 allmodconfig clang-20
nios2 allmodconfig gcc-11.5.0
nios2 allnoconfig clang-23
nios2 allnoconfig gcc-11.5.0
nios2 defconfig clang-23
nios2 randconfig-001 gcc-11.5.0
nios2 randconfig-001-20260629 gcc-11.5.0
nios2 randconfig-001-20260630 clang-18
nios2 randconfig-002 gcc-11.5.0
nios2 randconfig-002-20260629 gcc-11.5.0
nios2 randconfig-002-20260630 clang-18
openrisc allmodconfig clang-20
openrisc allmodconfig gcc-16.1.0
openrisc allnoconfig clang-23
openrisc allnoconfig gcc-16.1.0
openrisc defconfig gcc-16.1.0
parisc allmodconfig gcc-16.1.0
parisc allnoconfig clang-23
parisc allnoconfig gcc-16.1.0
parisc allyesconfig clang-17
parisc allyesconfig gcc-16.1.0
parisc defconfig gcc-16.1.0
parisc randconfig-001-20260629 gcc-9.5.0
parisc randconfig-001-20260630 clang-22
parisc randconfig-002-20260629 gcc-9.5.0
parisc randconfig-002-20260630 clang-22
parisc64 defconfig clang-23
powerpc allmodconfig gcc-16.1.0
powerpc allnoconfig clang-23
powerpc allnoconfig gcc-16.1.0
powerpc randconfig-001-20260629 gcc-9.5.0
powerpc randconfig-001-20260630 clang-22
powerpc randconfig-002-20260629 gcc-9.5.0
powerpc randconfig-002-20260630 clang-22
powerpc warp_defconfig gcc-16.1.0
powerpc wii_defconfig gcc-16.1.0
powerpc64 randconfig-001-20260629 gcc-9.5.0
powerpc64 randconfig-001-20260630 clang-22
powerpc64 randconfig-002-20260629 gcc-9.5.0
powerpc64 randconfig-002-20260630 clang-22
riscv allmodconfig clang-23
riscv allnoconfig clang-23
riscv allnoconfig gcc-16.1.0
riscv allyesconfig clang-23
riscv defconfig clang-23
riscv defconfig gcc-16.1.0
riscv randconfig-001 clang-17
riscv randconfig-001-20260629 clang-17
riscv randconfig-001-20260629 gcc-12.5.0
riscv randconfig-001-20260630 gcc-9.5.0
riscv randconfig-002 clang-17
riscv randconfig-002-20260629 clang-17
riscv randconfig-002-20260630 gcc-9.5.0
s390 allmodconfig clang-17
s390 allmodconfig clang-23
s390 allnoconfig clang-23
s390 allyesconfig gcc-16.1.0
s390 defconfig gcc-16.1.0
s390 randconfig-001 clang-17
s390 randconfig-001-20260629 clang-17
s390 randconfig-001-20260629 gcc-8.5.0
s390 randconfig-001-20260630 gcc-9.5.0
s390 randconfig-002 clang-17
s390 randconfig-002-20260629 clang-17
s390 randconfig-002-20260629 clang-23
s390 randconfig-002-20260630 gcc-9.5.0
sh allmodconfig gcc-16.1.0
sh allnoconfig clang-23
sh allnoconfig gcc-16.1.0
sh allyesconfig clang-17
sh allyesconfig gcc-16.1.0
sh defconfig gcc-14
sh randconfig-001 clang-17
sh randconfig-001-20260629 clang-17
sh randconfig-001-20260629 gcc-10.5.0
sh randconfig-001-20260630 gcc-9.5.0
sh randconfig-002 clang-17
sh randconfig-002-20260629 clang-17
sh randconfig-002-20260629 gcc-12.5.0
sh randconfig-002-20260630 gcc-9.5.0
sparc allnoconfig clang-23
sparc allnoconfig gcc-16.1.0
sparc defconfig gcc-16.1.0
sparc randconfig-001-20260629 gcc-15.2.0
sparc randconfig-001-20260630 clang-17
sparc randconfig-002-20260629 gcc-15.2.0
sparc randconfig-002-20260630 clang-17
sparc64 allmodconfig clang-20
sparc64 defconfig gcc-14
sparc64 randconfig-001-20260629 gcc-15.2.0
sparc64 randconfig-001-20260630 clang-17
sparc64 randconfig-002-20260629 gcc-15.2.0
sparc64 randconfig-002-20260630 clang-17
um allmodconfig clang-17
um allnoconfig clang-17
um allnoconfig clang-23
um allyesconfig gcc-14
um allyesconfig gcc-16.1.0
um defconfig gcc-14
um i386_defconfig gcc-14
um randconfig-001-20260629 gcc-15.2.0
um randconfig-001-20260630 clang-17
um randconfig-002-20260629 gcc-15.2.0
um randconfig-002-20260630 clang-17
um x86_64_defconfig gcc-14
x86_64 allmodconfig clang-22
x86_64 allnoconfig clang-22
x86_64 allnoconfig clang-23
x86_64 allyesconfig clang-22
x86_64 buildonly-randconfig-001-20260629 clang-22
x86_64 buildonly-randconfig-001-20260630 clang-22
x86_64 buildonly-randconfig-002-20260629 clang-22
x86_64 buildonly-randconfig-002-20260630 clang-22
x86_64 buildonly-randconfig-003-20260629 clang-22
x86_64 buildonly-randconfig-003-20260630 clang-22
x86_64 buildonly-randconfig-004-20260629 clang-22
x86_64 buildonly-randconfig-004-20260630 clang-22
x86_64 buildonly-randconfig-005-20260629 clang-22
x86_64 buildonly-randconfig-005-20260630 clang-22
x86_64 buildonly-randconfig-006-20260629 clang-22
x86_64 buildonly-randconfig-006-20260630 clang-22
x86_64 defconfig gcc-14
x86_64 kexec clang-22
x86_64 randconfig-001-20260629 gcc-14
x86_64 randconfig-001-20260630 gcc-14
x86_64 randconfig-002-20260629 clang-22
x86_64 randconfig-002-20260629 gcc-14
x86_64 randconfig-002-20260630 gcc-14
x86_64 randconfig-003-20260629 gcc-14
x86_64 randconfig-003-20260630 gcc-14
x86_64 randconfig-004-20260629 gcc-14
x86_64 randconfig-004-20260630 gcc-14
x86_64 randconfig-005-20260629 clang-22
x86_64 randconfig-005-20260629 gcc-14
x86_64 randconfig-005-20260630 gcc-14
x86_64 randconfig-006-20260629 gcc-14
x86_64 randconfig-006-20260630 gcc-14
x86_64 randconfig-011-20260629 clang-22
x86_64 randconfig-011-20260629 gcc-13
x86_64 randconfig-011-20260630 gcc-14
x86_64 randconfig-012-20260629 clang-22
x86_64 randconfig-012-20260629 gcc-13
x86_64 randconfig-012-20260630 gcc-14
x86_64 randconfig-013-20260629 clang-22
x86_64 randconfig-013-20260629 gcc-13
x86_64 randconfig-013-20260630 gcc-14
x86_64 randconfig-014-20260629 clang-22
x86_64 randconfig-014-20260629 gcc-13
x86_64 randconfig-014-20260630 gcc-14
x86_64 randconfig-015-20260629 gcc-13
x86_64 randconfig-015-20260630 gcc-14
x86_64 randconfig-016-20260629 gcc-13
x86_64 randconfig-016-20260629 gcc-14
x86_64 randconfig-016-20260630 gcc-14
x86_64 randconfig-071-20260629 clang-22
x86_64 randconfig-071-20260630 clang-22
x86_64 randconfig-072-20260629 clang-22
x86_64 randconfig-072-20260630 clang-22
x86_64 randconfig-073-20260629 clang-22
x86_64 randconfig-073-20260630 clang-22
x86_64 randconfig-074-20260629 clang-22
x86_64 randconfig-074-20260630 clang-22
x86_64 randconfig-075-20260629 clang-22
x86_64 randconfig-075-20260630 clang-22
x86_64 randconfig-076-20260629 clang-22
x86_64 randconfig-076-20260630 clang-22
x86_64 rhel-9.4 clang-22
x86_64 rhel-9.4-bpf gcc-14
x86_64 rhel-9.4-func clang-22
x86_64 rhel-9.4-kselftests clang-22
x86_64 rhel-9.4-kunit gcc-14
x86_64 rhel-9.4-ltp gcc-14
x86_64 rhel-9.4-rust clang-22
xtensa allnoconfig clang-23
xtensa allnoconfig gcc-16.1.0
xtensa allyesconfig clang-20
xtensa allyesconfig gcc-16.1.0
xtensa randconfig-001-20260629 gcc-15.2.0
xtensa randconfig-001-20260630 clang-17
xtensa randconfig-002-20260629 gcc-15.2.0
xtensa randconfig-002-20260630 clang-17
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* [brgl:gpio/for-current] BUILD SUCCESS 2ed2e359dea752e7758d29a423033031a0b96584
From: kernel test robot @ 2026-06-29 20:16 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: linux-gpio
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-current
branch HEAD: 2ed2e359dea752e7758d29a423033031a0b96584 Merge tag 'v7.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into gpio/for-current
elapsed time: 751m
configs tested: 319
configs skipped: 6
The following configs have been built successfully.
More configs may be tested in the coming days.
tested configs:
alpha allnoconfig gcc-16.1.0
alpha allyesconfig gcc-16.1.0
alpha defconfig gcc-16.1.0
arc allmodconfig clang-23
arc allmodconfig gcc-16.1.0
arc allnoconfig gcc-16.1.0
arc allyesconfig clang-23
arc allyesconfig gcc-16.1.0
arc defconfig gcc-16.1.0
arc randconfig-001-20260629 clang-17
arc randconfig-001-20260629 gcc-16.1.0
arc randconfig-001-20260630 clang-23
arc randconfig-002-20260629 clang-17
arc randconfig-002-20260629 gcc-8.5.0
arc randconfig-002-20260630 clang-23
arm allnoconfig clang-17
arm allyesconfig clang-23
arm allyesconfig gcc-16.1.0
arm defconfig gcc-16.1.0
arm randconfig-001-20260629 clang-17
arm randconfig-001-20260629 gcc-10.5.0
arm randconfig-001-20260630 clang-23
arm randconfig-002-20260629 clang-17
arm randconfig-002-20260630 clang-23
arm randconfig-003-20260629 clang-17
arm randconfig-003-20260630 clang-23
arm randconfig-004-20260629 clang-17
arm randconfig-004-20260629 gcc-16.1.0
arm randconfig-004-20260630 clang-23
arm64 allmodconfig clang-23
arm64 allnoconfig gcc-16.1.0
arm64 defconfig gcc-16.1.0
arm64 randconfig-001-20260629 gcc-16.1.0
arm64 randconfig-001-20260630 clang-23
arm64 randconfig-002-20260629 clang-22
arm64 randconfig-002-20260629 gcc-16.1.0
arm64 randconfig-002-20260630 clang-23
arm64 randconfig-003-20260629 clang-23
arm64 randconfig-003-20260629 gcc-16.1.0
arm64 randconfig-003-20260630 clang-23
arm64 randconfig-004-20260629 clang-20
arm64 randconfig-004-20260629 gcc-16.1.0
arm64 randconfig-004-20260630 clang-23
csky allmodconfig gcc-16.1.0
csky allnoconfig gcc-16.1.0
csky defconfig gcc-16.1.0
csky randconfig-001-20260629 gcc-10.5.0
csky randconfig-001-20260629 gcc-16.1.0
csky randconfig-001-20260630 clang-23
csky randconfig-002-20260629 gcc-12.5.0
csky randconfig-002-20260629 gcc-16.1.0
csky randconfig-002-20260630 clang-23
hexagon allmodconfig clang-23
hexagon allmodconfig gcc-16.1.0
hexagon allnoconfig clang-23
hexagon defconfig gcc-16.1.0
hexagon randconfig-001 gcc-11.5.0
hexagon randconfig-001-20260629 clang-22
hexagon randconfig-001-20260629 gcc-11.5.0
hexagon randconfig-001-20260630 clang-18
hexagon randconfig-002 gcc-11.5.0
hexagon randconfig-002-20260629 clang-23
hexagon randconfig-002-20260629 gcc-11.5.0
hexagon randconfig-002-20260630 clang-18
i386 allmodconfig clang-22
i386 allmodconfig gcc-14
i386 allnoconfig gcc-14
i386 allyesconfig clang-22
i386 allyesconfig gcc-14
i386 buildonly-randconfig-001-20260629 clang-22
i386 buildonly-randconfig-001-20260629 gcc-14
i386 buildonly-randconfig-001-20260630 clang-22
i386 buildonly-randconfig-002-20260629 gcc-13
i386 buildonly-randconfig-002-20260629 gcc-14
i386 buildonly-randconfig-002-20260630 clang-22
i386 buildonly-randconfig-003-20260629 gcc-14
i386 buildonly-randconfig-003-20260630 clang-22
i386 buildonly-randconfig-004-20260629 clang-22
i386 buildonly-randconfig-004-20260629 gcc-14
i386 buildonly-randconfig-004-20260630 clang-22
i386 buildonly-randconfig-005-20260629 gcc-14
i386 buildonly-randconfig-005-20260630 clang-22
i386 buildonly-randconfig-006-20260629 clang-22
i386 buildonly-randconfig-006-20260629 gcc-14
i386 buildonly-randconfig-006-20260630 clang-22
i386 defconfig gcc-16.1.0
i386 randconfig-001-20260629 clang-22
i386 randconfig-001-20260630 clang-22
i386 randconfig-002-20260629 clang-22
i386 randconfig-002-20260630 clang-22
i386 randconfig-003-20260629 clang-22
i386 randconfig-003-20260630 clang-22
i386 randconfig-004-20260629 clang-22
i386 randconfig-004-20260630 clang-22
i386 randconfig-005-20260629 clang-22
i386 randconfig-005-20260630 clang-22
i386 randconfig-006-20260629 clang-22
i386 randconfig-006-20260630 clang-22
i386 randconfig-007-20260629 clang-22
i386 randconfig-007-20260630 clang-22
i386 randconfig-011-20260629 gcc-14
i386 randconfig-011-20260630 gcc-12
i386 randconfig-012-20260629 gcc-14
i386 randconfig-012-20260630 gcc-12
i386 randconfig-013-20260629 gcc-14
i386 randconfig-013-20260630 gcc-12
i386 randconfig-014-20260629 gcc-14
i386 randconfig-014-20260630 gcc-12
i386 randconfig-015-20260629 gcc-14
i386 randconfig-015-20260630 gcc-12
i386 randconfig-016-20260629 gcc-14
i386 randconfig-016-20260630 gcc-12
i386 randconfig-017-20260629 gcc-14
i386 randconfig-017-20260630 gcc-12
loongarch allmodconfig clang-19
loongarch allmodconfig clang-23
loongarch allnoconfig clang-20
loongarch defconfig clang-23
loongarch randconfig-001 gcc-11.5.0
loongarch randconfig-001-20260629 gcc-11.5.0
loongarch randconfig-001-20260629 gcc-12.5.0
loongarch randconfig-001-20260630 clang-18
loongarch randconfig-002 gcc-11.5.0
loongarch randconfig-002-20260629 clang-23
loongarch randconfig-002-20260629 gcc-11.5.0
loongarch randconfig-002-20260630 clang-18
m68k allmodconfig gcc-16.1.0
m68k allnoconfig gcc-16.1.0
m68k allyesconfig clang-23
m68k allyesconfig gcc-16.1.0
m68k defconfig clang-23
microblaze allnoconfig gcc-16.1.0
microblaze allyesconfig gcc-16.1.0
microblaze defconfig clang-23
mips allmodconfig gcc-16.1.0
mips allnoconfig gcc-16.1.0
mips allyesconfig gcc-16.1.0
mips bcm47xx_defconfig clang-23
mips malta_defconfig gcc-16.1.0
nios2 allmodconfig clang-20
nios2 allmodconfig gcc-11.5.0
nios2 allnoconfig clang-23
nios2 allnoconfig gcc-11.5.0
nios2 defconfig clang-23
nios2 randconfig-001 gcc-11.5.0
nios2 randconfig-001-20260629 gcc-11.5.0
nios2 randconfig-001-20260630 clang-18
nios2 randconfig-002 gcc-11.5.0
nios2 randconfig-002-20260629 gcc-11.5.0
nios2 randconfig-002-20260629 gcc-8.5.0
nios2 randconfig-002-20260630 clang-18
openrisc allmodconfig clang-20
openrisc allmodconfig gcc-16.1.0
openrisc allnoconfig clang-23
openrisc allnoconfig gcc-16.1.0
openrisc defconfig gcc-16.1.0
parisc allmodconfig gcc-16.1.0
parisc allnoconfig clang-23
parisc allnoconfig gcc-16.1.0
parisc allyesconfig clang-17
parisc allyesconfig gcc-16.1.0
parisc defconfig gcc-16.1.0
parisc randconfig-001-20260629 gcc-9.5.0
parisc randconfig-001-20260630 clang-22
parisc randconfig-002-20260629 gcc-9.5.0
parisc randconfig-002-20260630 clang-22
parisc64 defconfig clang-23
powerpc allmodconfig gcc-16.1.0
powerpc allnoconfig clang-23
powerpc allnoconfig gcc-16.1.0
powerpc randconfig-001-20260629 gcc-9.5.0
powerpc randconfig-001-20260630 clang-22
powerpc randconfig-002-20260629 gcc-9.5.0
powerpc randconfig-002-20260630 clang-22
powerpc warp_defconfig gcc-16.1.0
powerpc wii_defconfig gcc-16.1.0
powerpc64 randconfig-001-20260629 gcc-9.5.0
powerpc64 randconfig-001-20260630 clang-22
powerpc64 randconfig-002-20260629 gcc-9.5.0
powerpc64 randconfig-002-20260630 clang-22
riscv allmodconfig clang-23
riscv allnoconfig clang-23
riscv allnoconfig gcc-16.1.0
riscv allyesconfig clang-23
riscv defconfig clang-23
riscv defconfig gcc-16.1.0
riscv randconfig-001 clang-17
riscv randconfig-001-20260629 clang-17
riscv randconfig-001-20260629 gcc-12.5.0
riscv randconfig-001-20260630 gcc-9.5.0
riscv randconfig-002 clang-17
riscv randconfig-002-20260629 clang-17
riscv randconfig-002-20260630 gcc-9.5.0
s390 allmodconfig clang-17
s390 allmodconfig clang-23
s390 allnoconfig clang-23
s390 allyesconfig gcc-16.1.0
s390 defconfig gcc-16.1.0
s390 randconfig-001 clang-17
s390 randconfig-001-20260629 clang-17
s390 randconfig-001-20260629 gcc-8.5.0
s390 randconfig-001-20260630 gcc-9.5.0
s390 randconfig-002 clang-17
s390 randconfig-002-20260629 clang-17
s390 randconfig-002-20260629 clang-23
s390 randconfig-002-20260630 gcc-9.5.0
sh allmodconfig gcc-16.1.0
sh allnoconfig clang-23
sh allnoconfig gcc-16.1.0
sh allyesconfig clang-17
sh allyesconfig gcc-16.1.0
sh defconfig gcc-14
sh randconfig-001 clang-17
sh randconfig-001-20260629 clang-17
sh randconfig-001-20260629 gcc-10.5.0
sh randconfig-001-20260630 gcc-9.5.0
sh randconfig-002 clang-17
sh randconfig-002-20260629 clang-17
sh randconfig-002-20260629 gcc-12.5.0
sh randconfig-002-20260630 gcc-9.5.0
sparc allnoconfig clang-23
sparc allnoconfig gcc-16.1.0
sparc defconfig gcc-16.1.0
sparc randconfig-001-20260629 gcc-15.2.0
sparc randconfig-001-20260630 clang-17
sparc randconfig-002-20260629 gcc-15.2.0
sparc randconfig-002-20260630 clang-17
sparc64 allmodconfig clang-20
sparc64 defconfig gcc-14
sparc64 randconfig-001-20260629 gcc-15.2.0
sparc64 randconfig-001-20260630 clang-17
sparc64 randconfig-002-20260629 gcc-15.2.0
sparc64 randconfig-002-20260630 clang-17
um allmodconfig clang-17
um allnoconfig clang-17
um allnoconfig clang-23
um allyesconfig gcc-14
um allyesconfig gcc-16.1.0
um defconfig gcc-14
um i386_defconfig gcc-14
um randconfig-001-20260629 gcc-15.2.0
um randconfig-001-20260630 clang-17
um randconfig-002-20260629 gcc-15.2.0
um randconfig-002-20260630 clang-17
um x86_64_defconfig gcc-14
x86_64 allmodconfig clang-22
x86_64 allnoconfig clang-22
x86_64 allnoconfig clang-23
x86_64 allyesconfig clang-22
x86_64 buildonly-randconfig-001-20260629 clang-22
x86_64 buildonly-randconfig-001-20260630 clang-22
x86_64 buildonly-randconfig-002-20260629 clang-22
x86_64 buildonly-randconfig-002-20260629 gcc-14
x86_64 buildonly-randconfig-002-20260630 clang-22
x86_64 buildonly-randconfig-003-20260629 clang-22
x86_64 buildonly-randconfig-003-20260629 gcc-14
x86_64 buildonly-randconfig-003-20260630 clang-22
x86_64 buildonly-randconfig-004-20260629 clang-22
x86_64 buildonly-randconfig-004-20260630 clang-22
x86_64 buildonly-randconfig-005-20260629 clang-22
x86_64 buildonly-randconfig-005-20260630 clang-22
x86_64 buildonly-randconfig-006-20260629 clang-22
x86_64 buildonly-randconfig-006-20260630 clang-22
x86_64 defconfig gcc-14
x86_64 kexec clang-22
x86_64 randconfig-001-20260629 gcc-14
x86_64 randconfig-001-20260630 gcc-14
x86_64 randconfig-002-20260629 gcc-14
x86_64 randconfig-002-20260630 gcc-14
x86_64 randconfig-003-20260629 gcc-14
x86_64 randconfig-003-20260630 gcc-14
x86_64 randconfig-004-20260629 gcc-14
x86_64 randconfig-004-20260630 gcc-14
x86_64 randconfig-005-20260629 gcc-14
x86_64 randconfig-005-20260630 gcc-14
x86_64 randconfig-006-20260629 gcc-14
x86_64 randconfig-006-20260630 gcc-14
x86_64 randconfig-011-20260629 gcc-13
x86_64 randconfig-011-20260630 gcc-14
x86_64 randconfig-012-20260629 gcc-13
x86_64 randconfig-012-20260630 gcc-14
x86_64 randconfig-013-20260629 gcc-13
x86_64 randconfig-013-20260630 gcc-14
x86_64 randconfig-014-20260629 gcc-13
x86_64 randconfig-014-20260630 gcc-14
x86_64 randconfig-015-20260629 gcc-13
x86_64 randconfig-015-20260630 gcc-14
x86_64 randconfig-016-20260629 gcc-13
x86_64 randconfig-016-20260629 gcc-14
x86_64 randconfig-016-20260630 gcc-14
x86_64 randconfig-071-20260629 clang-22
x86_64 randconfig-071-20260630 clang-22
x86_64 randconfig-072-20260629 clang-22
x86_64 randconfig-072-20260630 clang-22
x86_64 randconfig-073-20260629 clang-22
x86_64 randconfig-073-20260629 gcc-14
x86_64 randconfig-073-20260630 clang-22
x86_64 randconfig-074-20260629 clang-22
x86_64 randconfig-074-20260630 clang-22
x86_64 randconfig-075-20260629 clang-22
x86_64 randconfig-075-20260629 gcc-14
x86_64 randconfig-075-20260630 clang-22
x86_64 randconfig-076-20260629 clang-22
x86_64 randconfig-076-20260630 clang-22
x86_64 rhel-9.4 clang-22
x86_64 rhel-9.4-bpf gcc-14
x86_64 rhel-9.4-func clang-22
x86_64 rhel-9.4-kselftests clang-22
x86_64 rhel-9.4-kunit gcc-14
x86_64 rhel-9.4-ltp gcc-14
x86_64 rhel-9.4-rust clang-22
xtensa allnoconfig clang-23
xtensa allnoconfig gcc-16.1.0
xtensa allyesconfig clang-20
xtensa allyesconfig gcc-16.1.0
xtensa randconfig-001-20260629 gcc-15.2.0
xtensa randconfig-001-20260630 clang-17
xtensa randconfig-002-20260629 gcc-15.2.0
xtensa randconfig-002-20260630 clang-17
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* [brgl:pwrseq/for-next] BUILD SUCCESS 2f3096466fce5aa6de51fa24fb8cbfe71e135804
From: kernel test robot @ 2026-06-29 20:52 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: linux-gpio
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git pwrseq/for-next
branch HEAD: 2f3096466fce5aa6de51fa24fb8cbfe71e135804 Merge tag 'v7.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into pwrseq/for-next
elapsed time: 787m
configs tested: 348
configs skipped: 4
The following configs have been built successfully.
More configs may be tested in the coming days.
tested configs:
alpha allnoconfig gcc-16.1.0
alpha allyesconfig gcc-16.1.0
alpha defconfig gcc-16.1.0
arc allmodconfig clang-23
arc allmodconfig gcc-16.1.0
arc allnoconfig gcc-16.1.0
arc allyesconfig clang-23
arc allyesconfig gcc-16.1.0
arc defconfig gcc-16.1.0
arc randconfig-001 gcc-8.5.0
arc randconfig-001-20260629 clang-17
arc randconfig-001-20260629 gcc-16.1.0
arc randconfig-001-20260630 clang-23
arc randconfig-002 gcc-8.5.0
arc randconfig-002-20260629 clang-17
arc randconfig-002-20260629 gcc-8.5.0
arc randconfig-002-20260630 clang-23
arm allnoconfig clang-17
arm allnoconfig gcc-16.1.0
arm allyesconfig clang-23
arm allyesconfig gcc-16.1.0
arm defconfig gcc-16.1.0
arm randconfig-001 gcc-16.1.0
arm randconfig-001-20260629 clang-17
arm randconfig-001-20260629 gcc-10.5.0
arm randconfig-001-20260630 clang-23
arm randconfig-002 gcc-15.2.0
arm randconfig-002-20260629 clang-17
arm randconfig-002-20260630 clang-23
arm randconfig-003 clang-23
arm randconfig-003-20260629 clang-17
arm randconfig-003-20260630 clang-23
arm randconfig-004 gcc-13.4.0
arm randconfig-004-20260629 clang-17
arm randconfig-004-20260629 gcc-16.1.0
arm randconfig-004-20260630 clang-23
arm64 allmodconfig clang-23
arm64 allnoconfig gcc-16.1.0
arm64 defconfig gcc-16.1.0
arm64 randconfig-001-20260629 gcc-16.1.0
arm64 randconfig-001-20260630 clang-23
arm64 randconfig-002-20260629 clang-22
arm64 randconfig-002-20260629 gcc-16.1.0
arm64 randconfig-002-20260630 clang-23
arm64 randconfig-003-20260629 clang-23
arm64 randconfig-003-20260629 gcc-16.1.0
arm64 randconfig-003-20260630 clang-23
arm64 randconfig-004-20260629 clang-20
arm64 randconfig-004-20260629 gcc-16.1.0
arm64 randconfig-004-20260630 clang-23
csky allmodconfig gcc-16.1.0
csky allnoconfig gcc-16.1.0
csky defconfig gcc-16.1.0
csky randconfig-001-20260629 gcc-10.5.0
csky randconfig-001-20260629 gcc-16.1.0
csky randconfig-001-20260630 clang-23
csky randconfig-002-20260629 gcc-12.5.0
csky randconfig-002-20260629 gcc-16.1.0
csky randconfig-002-20260630 clang-23
hexagon allmodconfig clang-23
hexagon allmodconfig gcc-16.1.0
hexagon allnoconfig clang-23
hexagon allnoconfig gcc-16.1.0
hexagon defconfig gcc-16.1.0
hexagon randconfig-001 gcc-11.5.0
hexagon randconfig-001-20260629 clang-22
hexagon randconfig-001-20260629 gcc-11.5.0
hexagon randconfig-001-20260630 clang-18
hexagon randconfig-002 gcc-11.5.0
hexagon randconfig-002-20260629 clang-23
hexagon randconfig-002-20260629 gcc-11.5.0
hexagon randconfig-002-20260630 clang-18
i386 allmodconfig clang-22
i386 allmodconfig gcc-14
i386 allnoconfig gcc-14
i386 allnoconfig gcc-16.1.0
i386 allyesconfig clang-22
i386 allyesconfig gcc-14
i386 buildonly-randconfig-001-20260629 clang-22
i386 buildonly-randconfig-001-20260629 gcc-14
i386 buildonly-randconfig-001-20260630 clang-22
i386 buildonly-randconfig-002-20260629 gcc-13
i386 buildonly-randconfig-002-20260629 gcc-14
i386 buildonly-randconfig-002-20260630 clang-22
i386 buildonly-randconfig-003-20260629 gcc-14
i386 buildonly-randconfig-003-20260630 clang-22
i386 buildonly-randconfig-004-20260629 clang-22
i386 buildonly-randconfig-004-20260629 gcc-14
i386 buildonly-randconfig-004-20260630 clang-22
i386 buildonly-randconfig-005-20260629 gcc-14
i386 buildonly-randconfig-005-20260630 clang-22
i386 buildonly-randconfig-006-20260629 clang-22
i386 buildonly-randconfig-006-20260629 gcc-14
i386 buildonly-randconfig-006-20260630 clang-22
i386 defconfig gcc-16.1.0
i386 randconfig-001-20260629 clang-22
i386 randconfig-001-20260630 clang-22
i386 randconfig-002-20260629 clang-22
i386 randconfig-002-20260630 clang-22
i386 randconfig-003-20260629 clang-22
i386 randconfig-003-20260630 clang-22
i386 randconfig-004-20260629 clang-22
i386 randconfig-004-20260630 clang-22
i386 randconfig-005-20260629 clang-22
i386 randconfig-005-20260630 clang-22
i386 randconfig-006-20260629 clang-22
i386 randconfig-006-20260630 clang-22
i386 randconfig-007-20260629 clang-22
i386 randconfig-007-20260630 clang-22
i386 randconfig-011-20260629 gcc-14
i386 randconfig-011-20260630 gcc-12
i386 randconfig-012-20260629 gcc-14
i386 randconfig-012-20260630 gcc-12
i386 randconfig-013-20260629 gcc-14
i386 randconfig-013-20260630 gcc-12
i386 randconfig-014-20260629 gcc-14
i386 randconfig-014-20260630 gcc-12
i386 randconfig-015-20260629 clang-22
i386 randconfig-015-20260629 gcc-14
i386 randconfig-015-20260630 gcc-12
i386 randconfig-016-20260629 clang-22
i386 randconfig-016-20260629 gcc-14
i386 randconfig-016-20260630 gcc-12
i386 randconfig-017-20260629 clang-22
i386 randconfig-017-20260629 gcc-14
i386 randconfig-017-20260630 gcc-12
loongarch allmodconfig clang-23
loongarch allnoconfig clang-20
loongarch allnoconfig gcc-16.1.0
loongarch defconfig clang-23
loongarch randconfig-001 gcc-11.5.0
loongarch randconfig-001-20260629 gcc-11.5.0
loongarch randconfig-001-20260629 gcc-12.5.0
loongarch randconfig-001-20260630 clang-18
loongarch randconfig-002 gcc-11.5.0
loongarch randconfig-002-20260629 clang-23
loongarch randconfig-002-20260629 gcc-11.5.0
loongarch randconfig-002-20260630 clang-18
m68k allmodconfig gcc-16.1.0
m68k allnoconfig gcc-16.1.0
m68k allyesconfig clang-23
m68k allyesconfig gcc-16.1.0
m68k defconfig clang-23
microblaze allnoconfig gcc-16.1.0
microblaze allyesconfig gcc-16.1.0
microblaze defconfig clang-23
mips allmodconfig gcc-16.1.0
mips allnoconfig gcc-16.1.0
mips allyesconfig gcc-16.1.0
mips bcm47xx_defconfig clang-23
mips malta_defconfig gcc-16.1.0
nios2 allmodconfig clang-20
nios2 allnoconfig clang-23
nios2 allnoconfig gcc-11.5.0
nios2 defconfig clang-23
nios2 randconfig-001 gcc-11.5.0
nios2 randconfig-001-20260629 gcc-11.5.0
nios2 randconfig-001-20260630 clang-18
nios2 randconfig-002 gcc-11.5.0
nios2 randconfig-002-20260629 gcc-11.5.0
nios2 randconfig-002-20260629 gcc-8.5.0
nios2 randconfig-002-20260630 clang-18
openrisc allmodconfig clang-20
openrisc allmodconfig gcc-16.1.0
openrisc allnoconfig clang-23
openrisc allnoconfig gcc-16.1.0
openrisc defconfig gcc-16.1.0
parisc allmodconfig gcc-16.1.0
parisc allnoconfig clang-23
parisc allnoconfig gcc-16.1.0
parisc allyesconfig clang-17
parisc allyesconfig gcc-16.1.0
parisc defconfig gcc-16.1.0
parisc randconfig-001 gcc-8.5.0
parisc randconfig-001-20260629 gcc-9.5.0
parisc randconfig-001-20260630 clang-22
parisc randconfig-002 gcc-12.5.0
parisc randconfig-002-20260629 gcc-11.5.0
parisc randconfig-002-20260629 gcc-9.5.0
parisc randconfig-002-20260630 clang-22
parisc64 defconfig clang-23
powerpc allmodconfig gcc-16.1.0
powerpc allnoconfig clang-23
powerpc allnoconfig gcc-16.1.0
powerpc randconfig-001 gcc-10.5.0
powerpc randconfig-001-20260629 gcc-10.5.0
powerpc randconfig-001-20260629 gcc-9.5.0
powerpc randconfig-001-20260630 clang-22
powerpc randconfig-002 gcc-8.5.0
powerpc randconfig-002-20260629 gcc-8.5.0
powerpc randconfig-002-20260629 gcc-9.5.0
powerpc randconfig-002-20260630 clang-22
powerpc warp_defconfig gcc-16.1.0
powerpc wii_defconfig gcc-16.1.0
powerpc64 randconfig-001 clang-17
powerpc64 randconfig-001-20260629 gcc-8.5.0
powerpc64 randconfig-001-20260629 gcc-9.5.0
powerpc64 randconfig-001-20260630 clang-22
powerpc64 randconfig-002 clang-23
powerpc64 randconfig-002-20260629 gcc-8.5.0
powerpc64 randconfig-002-20260629 gcc-9.5.0
powerpc64 randconfig-002-20260630 clang-22
riscv allmodconfig clang-23
riscv allnoconfig clang-23
riscv allnoconfig gcc-16.1.0
riscv allyesconfig clang-23
riscv defconfig clang-23
riscv defconfig gcc-16.1.0
riscv randconfig-001 clang-17
riscv randconfig-001-20260629 clang-17
riscv randconfig-001-20260629 gcc-12.5.0
riscv randconfig-001-20260630 gcc-9.5.0
riscv randconfig-002 clang-17
riscv randconfig-002-20260629 clang-17
riscv randconfig-002-20260630 gcc-9.5.0
s390 allmodconfig clang-17
s390 allmodconfig clang-23
s390 allnoconfig clang-23
s390 allyesconfig gcc-16.1.0
s390 defconfig clang-18
s390 defconfig gcc-16.1.0
s390 randconfig-001 clang-17
s390 randconfig-001-20260629 clang-17
s390 randconfig-001-20260629 gcc-8.5.0
s390 randconfig-001-20260630 gcc-9.5.0
s390 randconfig-002 clang-17
s390 randconfig-002-20260629 clang-17
s390 randconfig-002-20260629 clang-23
s390 randconfig-002-20260630 gcc-9.5.0
sh allmodconfig gcc-16.1.0
sh allnoconfig clang-23
sh allnoconfig gcc-16.1.0
sh allyesconfig clang-17
sh allyesconfig gcc-16.1.0
sh defconfig gcc-14
sh randconfig-001 clang-17
sh randconfig-001-20260629 clang-17
sh randconfig-001-20260629 gcc-10.5.0
sh randconfig-001-20260630 gcc-9.5.0
sh randconfig-002 clang-17
sh randconfig-002-20260629 clang-17
sh randconfig-002-20260629 gcc-12.5.0
sh randconfig-002-20260630 gcc-9.5.0
sparc allnoconfig clang-23
sparc allnoconfig gcc-16.1.0
sparc defconfig gcc-16.1.0
sparc randconfig-001-20260629 gcc-15.2.0
sparc randconfig-001-20260630 clang-17
sparc randconfig-002-20260629 gcc-15.2.0
sparc randconfig-002-20260630 clang-17
sparc64 allmodconfig clang-20
sparc64 defconfig gcc-14
sparc64 randconfig-001-20260629 gcc-15.2.0
sparc64 randconfig-001-20260630 clang-17
sparc64 randconfig-002-20260629 gcc-15.2.0
sparc64 randconfig-002-20260630 clang-17
um allmodconfig clang-17
um allnoconfig clang-17
um allnoconfig clang-23
um allyesconfig gcc-14
um allyesconfig gcc-16.1.0
um defconfig gcc-14
um i386_defconfig gcc-14
um randconfig-001-20260629 gcc-15.2.0
um randconfig-001-20260630 clang-17
um randconfig-002-20260629 gcc-15.2.0
um randconfig-002-20260630 clang-17
um x86_64_defconfig gcc-14
x86_64 allmodconfig clang-22
x86_64 allnoconfig clang-22
x86_64 allnoconfig clang-23
x86_64 allyesconfig clang-22
x86_64 buildonly-randconfig-001-20260629 clang-22
x86_64 buildonly-randconfig-001-20260630 clang-22
x86_64 buildonly-randconfig-002-20260629 clang-22
x86_64 buildonly-randconfig-002-20260629 gcc-14
x86_64 buildonly-randconfig-002-20260630 clang-22
x86_64 buildonly-randconfig-003-20260629 clang-22
x86_64 buildonly-randconfig-003-20260629 gcc-14
x86_64 buildonly-randconfig-003-20260630 clang-22
x86_64 buildonly-randconfig-004-20260629 clang-22
x86_64 buildonly-randconfig-004-20260630 clang-22
x86_64 buildonly-randconfig-005-20260629 clang-22
x86_64 buildonly-randconfig-005-20260630 clang-22
x86_64 buildonly-randconfig-006-20260629 clang-22
x86_64 buildonly-randconfig-006-20260630 clang-22
x86_64 defconfig gcc-14
x86_64 kexec clang-22
x86_64 randconfig-001-20260629 gcc-14
x86_64 randconfig-001-20260630 gcc-14
x86_64 randconfig-002-20260629 clang-22
x86_64 randconfig-002-20260629 gcc-14
x86_64 randconfig-002-20260630 gcc-14
x86_64 randconfig-003-20260629 gcc-14
x86_64 randconfig-003-20260630 gcc-14
x86_64 randconfig-004-20260629 gcc-14
x86_64 randconfig-004-20260630 gcc-14
x86_64 randconfig-005-20260629 clang-22
x86_64 randconfig-005-20260629 gcc-14
x86_64 randconfig-005-20260630 gcc-14
x86_64 randconfig-006-20260629 gcc-14
x86_64 randconfig-006-20260630 gcc-14
x86_64 randconfig-011-20260629 clang-22
x86_64 randconfig-011-20260629 gcc-13
x86_64 randconfig-011-20260630 gcc-14
x86_64 randconfig-012-20260629 clang-22
x86_64 randconfig-012-20260629 gcc-13
x86_64 randconfig-012-20260630 gcc-14
x86_64 randconfig-013-20260629 clang-22
x86_64 randconfig-013-20260629 gcc-13
x86_64 randconfig-013-20260630 gcc-14
x86_64 randconfig-014-20260629 clang-22
x86_64 randconfig-014-20260629 gcc-13
x86_64 randconfig-014-20260630 gcc-14
x86_64 randconfig-015-20260629 gcc-13
x86_64 randconfig-015-20260630 gcc-14
x86_64 randconfig-016-20260629 gcc-13
x86_64 randconfig-016-20260629 gcc-14
x86_64 randconfig-016-20260630 gcc-14
x86_64 randconfig-071-20260629 clang-22
x86_64 randconfig-071-20260630 clang-22
x86_64 randconfig-072-20260629 clang-22
x86_64 randconfig-072-20260630 clang-22
x86_64 randconfig-073-20260629 clang-22
x86_64 randconfig-073-20260629 gcc-14
x86_64 randconfig-073-20260630 clang-22
x86_64 randconfig-074-20260629 clang-22
x86_64 randconfig-074-20260630 clang-22
x86_64 randconfig-075-20260629 clang-22
x86_64 randconfig-075-20260629 gcc-14
x86_64 randconfig-075-20260630 clang-22
x86_64 randconfig-076-20260629 clang-22
x86_64 randconfig-076-20260630 clang-22
x86_64 rhel-9.4 clang-22
x86_64 rhel-9.4-bpf gcc-14
x86_64 rhel-9.4-func clang-22
x86_64 rhel-9.4-kselftests clang-22
x86_64 rhel-9.4-kunit gcc-14
x86_64 rhel-9.4-ltp gcc-14
x86_64 rhel-9.4-rust clang-22
xtensa allnoconfig clang-23
xtensa allnoconfig gcc-16.1.0
xtensa allyesconfig clang-20
xtensa allyesconfig gcc-16.1.0
xtensa randconfig-001-20260629 gcc-15.2.0
xtensa randconfig-001-20260630 clang-17
xtensa randconfig-002-20260629 gcc-15.2.0
xtensa randconfig-002-20260630 clang-17
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* [PATCH RFC] gpio: loongson-64bit: Add back the support for gsi_idx_map
From: Miao Wang via B4 Relay @ 2026-06-29 21:05 UTC (permalink / raw)
To: Yinbo Zhu, Linus Walleij, Bartosz Golaszewski, Hongchen Zhang,
Liu Peibao, Juxin Gao
Cc: Huacai Chen, Jianmin Lv, WANG Xuerui, Jiaxun Yang, linux-gpio,
Miao Wang
From: Miao Wang <shankerwangmiao@gmail.com>
This patch adds back the support for gsi_idx_map, which is used in the
ACPI DSDT table to describe the mapping between the GPIO line number to
the index of the interrupt number in the declared interrupt resources.
This property was removed in Loongson CPU Universal Specification for
Interface Between PC/Server System Firmware and Kernel v4.1 in November,
2023, but still in use in firmwares released this year. A sample of
an affected DSDT entry from a 3C6000 board I'm currently using is:
Device (GPO1) {
Name (_HID, "LOON000F")
Name (_CRS, ResourceTemplate () {
QWordMemory ( // Omitted, not related
)
Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) {
0x00000010, 0x00000011, 0x00000012, 0x00000013,
0x00000014, 0x00000015, 0x00000016, 0x00000017,
}
Name (_DSD, Package (0x02) {
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301")
Package (0x03) {
Package (0x02) { "gpio_base", 0x50 } // Ignored by the driver
Package (0x02) { "ngpios", 0x20 }
Package (0x02) { "gsi_idx_map", Package (0x20) {
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7,
}}
}
}
}
As can be seen in the DSDT entry, the mapping is essential for obtaining
the IRQ number from a GPIO line number. Otherwise, when IRQ is requested
for the line numbers largers than 7, it will fail with -ENXIO.
The code in this patch is mostly picked from the version 5 of Yinbo's
original patch.
Fixes: 7944d3b7fe86 ("gpio: loongson: add gpio driver support")
Signed-off-by: Miao Wang <shankerwangmiao@gmail.com>
---
drivers/gpio/gpio-loongson-64bit.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/gpio/gpio-loongson-64bit.c b/drivers/gpio/gpio-loongson-64bit.c
index 0fdf15faa344d2db0a1cf52dc52c3f58aabef49c..bff7d70e7470ea930ba29504533f11fa92e17620 100644
--- a/drivers/gpio/gpio-loongson-64bit.c
+++ b/drivers/gpio/gpio-loongson-64bit.c
@@ -46,6 +46,8 @@ struct loongson_gpio_chip {
spinlock_t lock;
void __iomem *reg_base;
const struct loongson_gpio_chip_data *chip_data;
+ u16 *gsi_idx_map;
+ int mapsize;
};
static inline struct loongson_gpio_chip *to_loongson_gpio_chip(struct gpio_chip *chip)
@@ -145,6 +147,12 @@ static int loongson_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
writeb(1, lgpio->reg_base + lgpio->chip_data->inten_offset + offset);
}
+ if (lgpio->gsi_idx_map != NULL) {
+ if (offset >= lgpio->mapsize)
+ return -EINVAL;
+ offset = lgpio->gsi_idx_map[offset];
+ }
+
return platform_get_irq(pdev, offset);
}
@@ -326,6 +334,23 @@ static int loongson_gpio_init(struct platform_device *pdev, struct loongson_gpio
lgpio->chip.gc.to_irq = loongson_gpio_to_irq;
}
+ lgpio->mapsize = device_property_read_u16_array(&pdev->dev, "gsi_idx_map", NULL, 0);
+ if (lgpio->mapsize > 0) {
+ lgpio->gsi_idx_map = devm_kcalloc(&pdev->dev, lgpio->mapsize,
+ sizeof(*lgpio->gsi_idx_map), GFP_KERNEL);
+ if (!lgpio->gsi_idx_map)
+ return -ENOMEM;
+
+ ret = device_property_read_u16_array(&pdev->dev, "gsi_idx_map",
+ lgpio->gsi_idx_map, lgpio->mapsize);
+ if (ret != 0)
+ return dev_err_probe(&pdev->dev, ret, "failed to read gsi_idx_map\n");
+ dev_warn(&pdev->dev, "gsi_idx_map property is deprecated, consider upgrading your firmware\n");
+ } else {
+ lgpio->gsi_idx_map = NULL;
+ lgpio->mapsize = 0;
+ }
+
return devm_gpiochip_add_data(&pdev->dev, &lgpio->chip.gc, lgpio);
}
---
base-commit: 4edcdefd4083ae04b1a5656f4be6cd83ae919ef4
change-id: 20260630-loongson-gpio-090bb159d0e4
Best regards,
--
Miao Wang <shankerwangmiao@gmail.com>
^ permalink raw reply related
* [brgl:pinctrl-qcom/for-next] BUILD SUCCESS b49024d79fb7304f646003fcd8846ef26dea7e92
From: kernel test robot @ 2026-06-29 23:16 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: linux-gpio
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git pinctrl-qcom/for-next
branch HEAD: b49024d79fb7304f646003fcd8846ef26dea7e92 Merge tag 'v7.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into pinctrl-qcom/for-next
elapsed time: 931m
configs tested: 333
configs skipped: 11
The following configs have been built successfully.
More configs may be tested in the coming days.
tested configs:
alpha allnoconfig gcc-16.1.0
alpha allyesconfig gcc-16.1.0
alpha defconfig gcc-16.1.0
arc allmodconfig clang-23
arc allmodconfig gcc-16.1.0
arc allnoconfig gcc-16.1.0
arc allyesconfig clang-23
arc allyesconfig gcc-16.1.0
arc defconfig gcc-16.1.0
arc randconfig-001-20260629 clang-17
arc randconfig-001-20260629 gcc-16.1.0
arc randconfig-001-20260630 clang-23
arc randconfig-002-20260629 clang-17
arc randconfig-002-20260629 gcc-8.5.0
arc randconfig-002-20260630 clang-23
arm allnoconfig clang-17
arm allnoconfig gcc-16.1.0
arm allyesconfig clang-23
arm allyesconfig gcc-16.1.0
arm defconfig gcc-16.1.0
arm randconfig-001-20260629 clang-17
arm randconfig-001-20260629 gcc-10.5.0
arm randconfig-001-20260630 clang-23
arm randconfig-002-20260629 clang-17
arm randconfig-002-20260630 clang-23
arm randconfig-003-20260629 clang-17
arm randconfig-003-20260630 clang-23
arm randconfig-004-20260629 clang-17
arm randconfig-004-20260629 gcc-16.1.0
arm randconfig-004-20260630 clang-23
arm64 allmodconfig clang-23
arm64 allnoconfig gcc-16.1.0
arm64 defconfig gcc-16.1.0
arm64 randconfig-001-20260629 gcc-16.1.0
arm64 randconfig-001-20260630 clang-23
arm64 randconfig-002-20260629 gcc-16.1.0
arm64 randconfig-002-20260630 clang-23
arm64 randconfig-003-20260629 clang-23
arm64 randconfig-003-20260629 gcc-16.1.0
arm64 randconfig-003-20260630 clang-23
arm64 randconfig-004-20260629 gcc-16.1.0
arm64 randconfig-004-20260630 clang-23
csky allmodconfig gcc-16.1.0
csky allnoconfig gcc-16.1.0
csky defconfig gcc-16.1.0
csky randconfig-001-20260629 gcc-10.5.0
csky randconfig-001-20260629 gcc-16.1.0
csky randconfig-001-20260630 clang-23
csky randconfig-002-20260629 gcc-12.5.0
csky randconfig-002-20260629 gcc-16.1.0
csky randconfig-002-20260630 clang-23
hexagon allmodconfig clang-23
hexagon allmodconfig gcc-16.1.0
hexagon allnoconfig clang-23
hexagon allnoconfig gcc-16.1.0
hexagon defconfig gcc-16.1.0
hexagon randconfig-001 gcc-11.5.0
hexagon randconfig-001-20260629 clang-22
hexagon randconfig-001-20260629 gcc-11.5.0
hexagon randconfig-001-20260630 clang-18
hexagon randconfig-002 gcc-11.5.0
hexagon randconfig-002-20260629 clang-23
hexagon randconfig-002-20260629 gcc-11.5.0
hexagon randconfig-002-20260630 clang-18
i386 allmodconfig clang-22
i386 allmodconfig gcc-14
i386 allnoconfig gcc-14
i386 allnoconfig gcc-16.1.0
i386 allyesconfig clang-22
i386 allyesconfig gcc-14
i386 buildonly-randconfig-001-20260629 clang-22
i386 buildonly-randconfig-001-20260629 gcc-14
i386 buildonly-randconfig-001-20260630 clang-22
i386 buildonly-randconfig-002-20260629 gcc-13
i386 buildonly-randconfig-002-20260629 gcc-14
i386 buildonly-randconfig-002-20260630 clang-22
i386 buildonly-randconfig-003-20260629 gcc-14
i386 buildonly-randconfig-003-20260630 clang-22
i386 buildonly-randconfig-004-20260629 clang-22
i386 buildonly-randconfig-004-20260629 gcc-14
i386 buildonly-randconfig-004-20260630 clang-22
i386 buildonly-randconfig-005-20260629 gcc-14
i386 buildonly-randconfig-005-20260630 clang-22
i386 buildonly-randconfig-006-20260629 clang-22
i386 buildonly-randconfig-006-20260629 gcc-14
i386 buildonly-randconfig-006-20260630 clang-22
i386 defconfig gcc-16.1.0
i386 randconfig-001-20260629 clang-22
i386 randconfig-001-20260630 clang-22
i386 randconfig-002-20260629 clang-22
i386 randconfig-002-20260630 clang-22
i386 randconfig-003-20260629 clang-22
i386 randconfig-003-20260630 clang-22
i386 randconfig-004-20260629 clang-22
i386 randconfig-004-20260630 clang-22
i386 randconfig-005-20260629 clang-22
i386 randconfig-005-20260630 clang-22
i386 randconfig-006-20260629 clang-22
i386 randconfig-006-20260630 clang-22
i386 randconfig-007-20260629 clang-22
i386 randconfig-007-20260630 clang-22
i386 randconfig-011-20260629 gcc-14
i386 randconfig-011-20260630 gcc-12
i386 randconfig-012-20260629 gcc-14
i386 randconfig-012-20260630 gcc-12
i386 randconfig-013-20260629 gcc-14
i386 randconfig-013-20260630 gcc-12
i386 randconfig-014-20260629 gcc-14
i386 randconfig-014-20260630 gcc-12
i386 randconfig-015-20260629 gcc-14
i386 randconfig-015-20260630 gcc-12
i386 randconfig-016-20260629 gcc-14
i386 randconfig-016-20260630 gcc-12
i386 randconfig-017-20260629 gcc-14
i386 randconfig-017-20260630 gcc-12
loongarch allmodconfig clang-19
loongarch allmodconfig clang-23
loongarch allnoconfig clang-20
loongarch allnoconfig gcc-16.1.0
loongarch defconfig clang-23
loongarch randconfig-001 gcc-11.5.0
loongarch randconfig-001-20260629 gcc-11.5.0
loongarch randconfig-001-20260629 gcc-12.5.0
loongarch randconfig-001-20260630 clang-18
loongarch randconfig-002 gcc-11.5.0
loongarch randconfig-002-20260629 clang-23
loongarch randconfig-002-20260629 gcc-11.5.0
loongarch randconfig-002-20260630 clang-18
m68k allmodconfig gcc-16.1.0
m68k allnoconfig gcc-16.1.0
m68k allyesconfig clang-23
m68k allyesconfig gcc-16.1.0
m68k defconfig clang-23
microblaze allnoconfig gcc-16.1.0
microblaze allyesconfig gcc-16.1.0
microblaze defconfig clang-23
mips allmodconfig gcc-16.1.0
mips allnoconfig gcc-16.1.0
mips allyesconfig gcc-16.1.0
mips bcm47xx_defconfig clang-23
mips malta_defconfig gcc-16.1.0
mips malta_kvm_defconfig gcc-16.1.0
nios2 allmodconfig clang-20
nios2 allmodconfig gcc-11.5.0
nios2 allnoconfig clang-23
nios2 allnoconfig gcc-11.5.0
nios2 defconfig clang-23
nios2 randconfig-001 gcc-11.5.0
nios2 randconfig-001-20260629 gcc-11.5.0
nios2 randconfig-001-20260630 clang-18
nios2 randconfig-002 gcc-11.5.0
nios2 randconfig-002-20260629 gcc-11.5.0
nios2 randconfig-002-20260629 gcc-8.5.0
nios2 randconfig-002-20260630 clang-18
openrisc allmodconfig clang-20
openrisc allmodconfig gcc-11.5.0
openrisc allnoconfig clang-23
openrisc allnoconfig gcc-16.1.0
openrisc defconfig gcc-16.1.0
parisc allmodconfig gcc-16.1.0
parisc allnoconfig clang-23
parisc allnoconfig gcc-16.1.0
parisc allyesconfig clang-17
parisc allyesconfig gcc-16.1.0
parisc defconfig gcc-16.1.0
parisc randconfig-001-20260629 gcc-9.5.0
parisc randconfig-001-20260630 clang-22
parisc randconfig-002-20260629 gcc-9.5.0
parisc randconfig-002-20260630 clang-22
parisc64 defconfig clang-23
powerpc allmodconfig gcc-16.1.0
powerpc allnoconfig clang-23
powerpc allnoconfig gcc-16.1.0
powerpc randconfig-001-20260629 gcc-9.5.0
powerpc randconfig-001-20260630 clang-22
powerpc randconfig-002-20260629 gcc-9.5.0
powerpc randconfig-002-20260630 clang-22
powerpc warp_defconfig gcc-16.1.0
powerpc wii_defconfig gcc-16.1.0
powerpc64 randconfig-001-20260629 gcc-9.5.0
powerpc64 randconfig-001-20260630 clang-22
powerpc64 randconfig-002-20260629 gcc-9.5.0
powerpc64 randconfig-002-20260630 clang-22
riscv allmodconfig clang-23
riscv allnoconfig clang-23
riscv allnoconfig gcc-16.1.0
riscv allyesconfig clang-23
riscv defconfig clang-23
riscv defconfig gcc-16.1.0
riscv randconfig-001 clang-17
riscv randconfig-001 gcc-13.4.0
riscv randconfig-001-20260629 clang-17
riscv randconfig-001-20260629 gcc-12.5.0
riscv randconfig-001-20260630 gcc-9.5.0
riscv randconfig-002 clang-17
riscv randconfig-002-20260629 clang-17
riscv randconfig-002-20260630 gcc-9.5.0
s390 allmodconfig clang-17
s390 allmodconfig clang-23
s390 allnoconfig clang-23
s390 allyesconfig gcc-16.1.0
s390 defconfig gcc-16.1.0
s390 randconfig-001 clang-17
s390 randconfig-001 gcc-15.2.0
s390 randconfig-001-20260629 clang-17
s390 randconfig-001-20260629 gcc-8.5.0
s390 randconfig-001-20260630 gcc-9.5.0
s390 randconfig-002 clang-17
s390 randconfig-002 clang-18
s390 randconfig-002-20260629 clang-17
s390 randconfig-002-20260629 clang-23
s390 randconfig-002-20260630 gcc-9.5.0
sh allmodconfig gcc-16.1.0
sh allnoconfig clang-23
sh allnoconfig gcc-16.1.0
sh allyesconfig clang-17
sh allyesconfig gcc-16.1.0
sh defconfig gcc-14
sh kfr2r09_defconfig gcc-16.1.0
sh randconfig-001 clang-17
sh randconfig-001 gcc-14.3.0
sh randconfig-001-20260629 clang-17
sh randconfig-001-20260629 gcc-10.5.0
sh randconfig-001-20260630 gcc-9.5.0
sh randconfig-002 clang-17
sh randconfig-002 gcc-9.5.0
sh randconfig-002-20260629 clang-17
sh randconfig-002-20260629 gcc-12.5.0
sh randconfig-002-20260630 gcc-9.5.0
sparc allnoconfig clang-23
sparc allnoconfig gcc-16.1.0
sparc defconfig gcc-16.1.0
sparc randconfig-001-20260629 gcc-15.2.0
sparc randconfig-001-20260630 clang-17
sparc randconfig-002-20260629 gcc-15.2.0
sparc randconfig-002-20260630 clang-17
sparc64 allmodconfig clang-20
sparc64 defconfig gcc-14
sparc64 randconfig-001-20260629 gcc-15.2.0
sparc64 randconfig-001-20260630 clang-17
sparc64 randconfig-002-20260629 gcc-15.2.0
sparc64 randconfig-002-20260630 clang-17
um allmodconfig clang-17
um allnoconfig clang-17
um allnoconfig clang-23
um allyesconfig gcc-14
um allyesconfig gcc-16.1.0
um defconfig gcc-14
um i386_defconfig gcc-14
um randconfig-001-20260629 gcc-15.2.0
um randconfig-001-20260630 clang-17
um randconfig-002-20260629 gcc-15.2.0
um randconfig-002-20260630 clang-17
um x86_64_defconfig gcc-14
x86_64 allmodconfig clang-22
x86_64 allnoconfig clang-22
x86_64 allnoconfig clang-23
x86_64 allyesconfig clang-22
x86_64 buildonly-randconfig-001-20260629 clang-22
x86_64 buildonly-randconfig-001-20260630 clang-22
x86_64 buildonly-randconfig-002-20260629 clang-22
x86_64 buildonly-randconfig-002-20260630 clang-22
x86_64 buildonly-randconfig-003-20260629 clang-22
x86_64 buildonly-randconfig-003-20260630 clang-22
x86_64 buildonly-randconfig-004-20260629 clang-22
x86_64 buildonly-randconfig-004-20260630 clang-22
x86_64 buildonly-randconfig-005-20260629 clang-22
x86_64 buildonly-randconfig-005-20260630 clang-22
x86_64 buildonly-randconfig-006-20260629 clang-22
x86_64 buildonly-randconfig-006-20260630 clang-22
x86_64 defconfig gcc-14
x86_64 kexec clang-22
x86_64 randconfig-001-20260629 gcc-14
x86_64 randconfig-001-20260630 gcc-14
x86_64 randconfig-002-20260629 clang-22
x86_64 randconfig-002-20260629 gcc-14
x86_64 randconfig-002-20260630 gcc-14
x86_64 randconfig-003-20260629 gcc-14
x86_64 randconfig-003-20260630 gcc-14
x86_64 randconfig-004-20260629 gcc-14
x86_64 randconfig-004-20260630 gcc-14
x86_64 randconfig-005-20260629 clang-22
x86_64 randconfig-005-20260629 gcc-14
x86_64 randconfig-005-20260630 gcc-14
x86_64 randconfig-006-20260629 gcc-14
x86_64 randconfig-006-20260630 gcc-14
x86_64 randconfig-011-20260629 gcc-13
x86_64 randconfig-011-20260630 gcc-14
x86_64 randconfig-012-20260629 gcc-13
x86_64 randconfig-012-20260630 gcc-14
x86_64 randconfig-013-20260629 gcc-13
x86_64 randconfig-013-20260630 gcc-14
x86_64 randconfig-014-20260629 gcc-13
x86_64 randconfig-014-20260630 gcc-14
x86_64 randconfig-015-20260629 gcc-13
x86_64 randconfig-015-20260630 gcc-14
x86_64 randconfig-016-20260629 gcc-13
x86_64 randconfig-016-20260630 gcc-14
x86_64 randconfig-071 gcc-14
x86_64 randconfig-071-20260629 clang-22
x86_64 randconfig-071-20260630 clang-22
x86_64 randconfig-072 gcc-14
x86_64 randconfig-072-20260629 clang-22
x86_64 randconfig-072-20260630 clang-22
x86_64 randconfig-073 clang-22
x86_64 randconfig-073-20260629 clang-22
x86_64 randconfig-073-20260629 gcc-14
x86_64 randconfig-073-20260630 clang-22
x86_64 randconfig-074 gcc-14
x86_64 randconfig-074-20260629 clang-22
x86_64 randconfig-074-20260630 clang-22
x86_64 randconfig-075 gcc-13
x86_64 randconfig-075-20260629 clang-22
x86_64 randconfig-075-20260629 gcc-14
x86_64 randconfig-075-20260630 clang-22
x86_64 randconfig-076 clang-22
x86_64 randconfig-076-20260629 clang-22
x86_64 randconfig-076-20260630 clang-22
x86_64 rhel-9.4 clang-22
x86_64 rhel-9.4-bpf gcc-14
x86_64 rhel-9.4-func clang-22
x86_64 rhel-9.4-kselftests clang-22
x86_64 rhel-9.4-kunit gcc-14
x86_64 rhel-9.4-ltp gcc-14
x86_64 rhel-9.4-rust clang-22
xtensa allnoconfig clang-23
xtensa allnoconfig gcc-16.1.0
xtensa allyesconfig clang-20
xtensa allyesconfig gcc-11.5.0
xtensa randconfig-001-20260629 gcc-15.2.0
xtensa randconfig-001-20260630 clang-17
xtensa randconfig-002-20260629 gcc-15.2.0
xtensa randconfig-002-20260630 clang-17
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* Re: [PATCH v3 3/8] irqchip/qcom-pdc: Remove pdc_enable_intr() wrapper
From: Maulik Shah (mkshah) @ 2026-06-30 3:52 UTC (permalink / raw)
To: Val Packett, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Thomas Gleixner, Linus Walleij
Cc: linux-arm-msm, linux-kernel, devicetree, linux-gpio, Sneh Mankad
In-Reply-To: <5e59c3a3-b492-40f0-9db1-5ef9f95d77b6@packett.cool>
On 6/28/2026 11:24 PM, Val Packett wrote:
>
> On 6/16/26 6:25 AM, Maulik Shah wrote:
[...]
> whoops..
>
> [ 0.197090] BUG: spinlock bad magic on CPU#7, swapper/0/1
> [ 0.197104] lock: 0xffff0001022e37b0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
> [ 0.197122] CPU: 7 UID: 0 PID: 1 Comm: swapper/0 Not tainted 7.1.0-next-20260626-uwu+ #128 PREEMPT(full)
> [ 0.197129] Hardware name: motorola Motorola Edge 30 (Tianma)/Motorola Edge 30 (Tianma), BIOS 2026.07-rc2-g432bcf301c03-dirty 07/01/2026
> [ 0.197133] Call trace:
> [ 0.197135] show_stack+0x24/0x38 (C)
> [ 0.197148] __dump_stack+0x28/0x38
> [ 0.197156] dump_stack_lvl+0x7c/0xa8
> [ 0.197165] dump_stack+0x18/0x30
> [ 0.197172] spin_dump+0x7c/0x98
> [ 0.197179] do_raw_spin_lock+0xa4/0x140
> [ 0.197189] _raw_spin_lock+0x2c/0x40
> [ 0.197195] pdc_enable_intr_bank+0x40/0x128
> [ 0.197201] qcom_pdc_probe+0x3bc/0x520
>
> Gotta also move the spinlock init to before the call to pdc_setup_pin_mapping..
Yes, Moving spinlock will be added in v4 of series.
Thanks,
Maulik
^ permalink raw reply
* Re: [PATCH 2/5] software node: add fw_devlink support
From: Herve Codina @ 2026-06-30 6:16 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Bartosz Golaszewski, Brendan Higgins, David Gow, Rae Moar,
Daniel Scally, Heikki Krogerus, Sakari Ailus, Bartosz Golaszewski,
Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Linus Walleij, Dmitry Torokhov, linux-kernel, linux-kselftest,
kunit-dev, linux-acpi, driver-core, linux-gpio
In-Reply-To: <akKSYKH2vyXMVcox@ashevche-desk.local>
Hi All,
On Mon, 29 Jun 2026 18:42:24 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> +Cc: Herve, to just ask the situation with one series that adds nice helper.
>
...
>
> Doesn't Herve's patch(es) add some helpers for this?
> https://lore.kernel.org/lkml/20260511155930.34604-2-herve.codina@bootlin.com/
>
> Ah, still not applied :-( Perhaps it can be applied as just part that brings
> fw_devlink_set_device()?
Yes, still not applied.
I plan to send a new iteration of the series rebased on v7.2-rc1 and I Hope
it will be applied in this cycle.
Best regards,
Hervé
^ permalink raw reply
* Re: [PATCH RFC] gpio: loongson-64bit: Add back the support for gsi_idx_map
From: Bartosz Golaszewski @ 2026-06-30 7:45 UTC (permalink / raw)
To: shankerwangmiao
Cc: Miao Wang via B4 Relay, Huacai Chen, Jianmin Lv, WANG Xuerui,
Jiaxun Yang, linux-gpio, Yinbo Zhu, Linus Walleij,
Bartosz Golaszewski, Hongchen Zhang, Liu Peibao, Juxin Gao,
Mika Westerberg, Andy Shevchenko
In-Reply-To: <20260630-loongson-gpio-v1-1-576908831fa0@gmail.com>
On Mon, 29 Jun 2026 23:05:28 +0200, Miao Wang via B4 Relay
<devnull+shankerwangmiao.gmail.com@kernel.org> said:
> From: Miao Wang <shankerwangmiao@gmail.com>
>
> This patch adds back the support for gsi_idx_map, which is used in the
> ACPI DSDT table to describe the mapping between the GPIO line number to
> the index of the interrupt number in the declared interrupt resources.
>
> This property was removed in Loongson CPU Universal Specification for
> Interface Between PC/Server System Firmware and Kernel v4.1 in November,
> 2023, but still in use in firmwares released this year. A sample of
> an affected DSDT entry from a 3C6000 board I'm currently using is:
>
> Device (GPO1) {
> Name (_HID, "LOON000F")
> Name (_CRS, ResourceTemplate () {
> QWordMemory ( // Omitted, not related
> )
> Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, ) {
> 0x00000010, 0x00000011, 0x00000012, 0x00000013,
> 0x00000014, 0x00000015, 0x00000016, 0x00000017,
> }
> Name (_DSD, Package (0x02) {
> ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301")
> Package (0x03) {
> Package (0x02) { "gpio_base", 0x50 } // Ignored by the driver
> Package (0x02) { "ngpios", 0x20 }
> Package (0x02) { "gsi_idx_map", Package (0x20) {
> 0, 1, 2, 3, 4, 5, 6, 7,
> 0, 1, 2, 3, 4, 5, 6, 7,
> 0, 1, 2, 3, 4, 5, 6, 7,
> 0, 1, 2, 3, 4, 5, 6, 7,
> }}
> }
> }
> }
>
> As can be seen in the DSDT entry, the mapping is essential for obtaining
> the IRQ number from a GPIO line number. Otherwise, when IRQ is requested
> for the line numbers largers than 7, it will fail with -ENXIO.
>
> The code in this patch is mostly picked from the version 5 of Yinbo's
> original patch.
>
> Fixes: 7944d3b7fe86 ("gpio: loongson: add gpio driver support")
> Signed-off-by: Miao Wang <shankerwangmiao@gmail.com>
Cc'ing ACPI GPIO maintainers.
Bart
^ permalink raw reply
* Re: [PATCH v5 0/5] Add support for AAEON SRG-IMX8P MCU
From: Bartosz Golaszewski @ 2026-06-30 7:47 UTC (permalink / raw)
To: Thomas Perrot
Cc: devicetree, linux-kernel, linux-gpio, imx, linux-arm-kernel,
linux-watchdog, Thomas Petazzoni, Miquel Raynal,
Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski,
Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Linus Walleij, Bartosz Golaszewski, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam,
Jérémie Dautheribes, Wim Van Sebroeck, Lee Jones
In-Reply-To: <31477953aace52bb6594461e82ddf99493af2329.camel@bootlin.com>
On Mon, 29 Jun 2026 18:04:59 +0200, Thomas Perrot
<thomas.perrot@bootlin.com> said:
> Hello Guenter,
>
> On Sat, 2026-04-11 at 17:12 -0700, Guenter Roeck wrote:
>> snip
>>
>> Sashiko has some interesting feedback that might be worth looking
>> into.
>>
>> https://sashiko.dev/#/patchset/20260408-dev-b4-aaeon-mcu-driver-v5-0-ad98bd481668%40bootlin.com
>>
>
> Thanks for the pointer. I went through all findings and addressed the
> valid ones in v6:
>
Did I miss anything? I don't see the v6 neither in my inbox nor on lore.
Bart
^ permalink raw reply
* Re: [PATCH] gpio-f7188x: Add support for NCT6126D version B
From: Bartosz Golaszewski @ 2026-06-30 7:48 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Henning Schild, Simon Guinot,
Paul Louvel
Cc: Bartosz Golaszewski, linux-gpio, linux-kernel, Thomas Petazzoni,
stable
In-Reply-To: <20260629-gpio-f7188x-nct6126d-version-b-v1-1-a06226c02a2d@bootlin.com>
On Mon, 29 Jun 2026 16:07:02 +0200, Paul Louvel wrote:
> The Nuvoton NCT6126D Super-I/O is available in two hardware revisions.
> According to the manufacturer datasheet revision 2.4, version A reports
> chip ID 0xD283, while version B reports chip ID 0xD284.
>
> The driver currently only recognizes only the version A ID. Version B
> only contains hardware fixes unrelated to the GPIO functionality, so it
> can be supported by simply adding its chip ID without any other driver
> changes.
>
> [...]
Applied, thanks!
[1/1] gpio-f7188x: Add support for NCT6126D version B
https://git.kernel.org/brgl/c/9a6c0b6ea12746d50cf53d59a7e05fd83f974bda
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply
* Re: [PATCH 00/13] treewide: replace linux/gpio.h
From: Bartosz Golaszewski @ 2026-06-30 7:53 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linux-gpio, Arnd Bergmann, Bartosz Golaszewski, Andrew Lunn,
Sebastian Hesselbarth, Gregory Clement, Frank Li, Robert Jarzmik,
Krzysztof Kozlowski, Greg Ungerer, Thomas Bogendoerfer,
Hauke Mehrtens, Rafał Miłecki, Yoshinori Sato,
John Paul Adrian Glaubitz, Linus Walleij, Dmitry Torokhov,
Jakub Kicinski, Paolo Abeni, Dominik Brodowski, linux-kernel,
linux-arm-kernel, linux-samsung-soc, patches, linux-m68k,
linux-mips, linux-sh, linux-input, linux-media, netdev,
linux-sunxi, linux-phy, linux-rockchip, linux-sound
In-Reply-To: <20260629132633.1300009-1-arnd@kernel.org>
On Mon, 29 Jun 2026 15:26:20 +0200, Arnd Bergmann <arnd@kernel.org> said:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The linux/gpio.h header used to be the global definition for the gpio
> interfaces, with 1100 users back in linux-3.17. In linux-7.2, only about
> 130 of those remain, so this series cleans out the rest.
>
> In each subsystem, we can replace the header either with
> linux/gpio/consumer.h for users of the modern gpio descriptor interface,
> or linux/gpio/legacy.h for the few remaining users of the old number
> based interface.
>
> All patches in this series can get applied independently, so my
> preference would be for each subsystem maintainer to apply these
> directly, with the rest going into the gpio tree at some point.
>
> The final patch here obviously needs to wait for all the others
> to get merged first.
>
> Arnd
Thanks for doing this Arnd!
For the series:
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply
* [brgl:gpio/for-next] BUILD SUCCESS 45bd4e25f81f3afb550f04376a54f4c5e1d5ab11
From: kernel test robot @ 2026-06-30 8:20 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: linux-gpio
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
branch HEAD: 45bd4e25f81f3afb550f04376a54f4c5e1d5ab11 gpio: amd-fch: switch to guard() notation
elapsed time: 732m
configs tested: 204
configs skipped: 2
The following configs have been built successfully.
More configs may be tested in the coming days.
tested configs:
alpha allnoconfig gcc-16.1.0
alpha allyesconfig gcc-16.1.0
alpha defconfig gcc-16.1.0
arc allmodconfig clang-23
arc allnoconfig gcc-16.1.0
arc allyesconfig clang-23
arc defconfig gcc-16.1.0
arc randconfig-001-20260630 clang-23
arc randconfig-002-20260630 clang-23
arc vdk_hs38_smp_defconfig gcc-16.1.0
arm allnoconfig gcc-16.1.0
arm allyesconfig clang-23
arm defconfig gcc-16.1.0
arm randconfig-001-20260630 clang-23
arm randconfig-002-20260630 clang-23
arm randconfig-003-20260630 clang-23
arm randconfig-004-20260630 clang-23
arm64 allmodconfig clang-23
arm64 allnoconfig gcc-16.1.0
arm64 defconfig gcc-16.1.0
arm64 randconfig-001-20260630 clang-23
arm64 randconfig-002-20260630 clang-23
arm64 randconfig-003-20260630 clang-23
arm64 randconfig-004-20260630 clang-23
csky allmodconfig gcc-16.1.0
csky allnoconfig gcc-16.1.0
csky defconfig gcc-16.1.0
csky randconfig-001-20260630 clang-23
csky randconfig-002-20260630 clang-23
hexagon allmodconfig gcc-16.1.0
hexagon allnoconfig gcc-16.1.0
hexagon defconfig gcc-16.1.0
hexagon randconfig-001-20260630 clang-18
hexagon randconfig-002-20260630 clang-18
i386 allmodconfig clang-22
i386 allnoconfig gcc-16.1.0
i386 allyesconfig clang-22
i386 buildonly-randconfig-001-20260630 clang-22
i386 buildonly-randconfig-002-20260630 clang-22
i386 buildonly-randconfig-003-20260630 clang-22
i386 buildonly-randconfig-004-20260630 clang-22
i386 buildonly-randconfig-005-20260630 clang-22
i386 buildonly-randconfig-006-20260630 clang-22
i386 defconfig gcc-16.1.0
i386 randconfig-001 clang-22
i386 randconfig-001-20260630 clang-22
i386 randconfig-002 clang-22
i386 randconfig-002-20260630 clang-22
i386 randconfig-003 clang-22
i386 randconfig-003-20260630 clang-22
i386 randconfig-004 clang-22
i386 randconfig-004-20260630 clang-22
i386 randconfig-005 clang-22
i386 randconfig-005-20260630 clang-22
i386 randconfig-006 clang-22
i386 randconfig-006-20260630 clang-22
i386 randconfig-007 clang-22
i386 randconfig-007-20260630 clang-22
i386 randconfig-011-20260630 gcc-12
i386 randconfig-012-20260630 gcc-12
i386 randconfig-013-20260630 gcc-12
i386 randconfig-014-20260630 gcc-12
i386 randconfig-015-20260630 gcc-12
i386 randconfig-016-20260630 gcc-12
i386 randconfig-017-20260630 gcc-12
loongarch allmodconfig clang-23
loongarch allnoconfig gcc-16.1.0
loongarch defconfig clang-23
loongarch randconfig-001-20260630 clang-18
loongarch randconfig-002-20260630 clang-18
m68k allmodconfig gcc-16.1.0
m68k allnoconfig gcc-16.1.0
m68k allyesconfig clang-23
m68k defconfig clang-23
microblaze allnoconfig gcc-16.1.0
microblaze allyesconfig gcc-16.1.0
microblaze defconfig clang-23
mips allmodconfig gcc-16.1.0
mips allnoconfig gcc-16.1.0
mips allyesconfig gcc-16.1.0
mips malta_kvm_defconfig gcc-16.1.0
mips qi_lb60_defconfig clang-17
nios2 allmodconfig clang-20
nios2 allnoconfig clang-23
nios2 defconfig clang-23
nios2 randconfig-001-20260630 clang-18
nios2 randconfig-002-20260630 clang-18
openrisc allmodconfig clang-20
openrisc allnoconfig clang-23
openrisc defconfig gcc-16.1.0
parisc allmodconfig gcc-16.1.0
parisc allnoconfig clang-23
parisc allyesconfig clang-17
parisc defconfig gcc-16.1.0
parisc randconfig-001 clang-22
parisc randconfig-001-20260630 clang-22
parisc randconfig-002 clang-22
parisc randconfig-002-20260630 clang-22
parisc64 defconfig clang-23
powerpc allmodconfig gcc-16.1.0
powerpc allnoconfig clang-23
powerpc randconfig-001 clang-22
powerpc randconfig-001-20260630 clang-22
powerpc randconfig-002 clang-22
powerpc randconfig-002-20260630 clang-22
powerpc warp_defconfig gcc-16.1.0
powerpc64 randconfig-001 clang-22
powerpc64 randconfig-001-20260630 clang-22
powerpc64 randconfig-002 clang-22
powerpc64 randconfig-002-20260630 clang-22
riscv alldefconfig gcc-16.1.0
riscv allmodconfig clang-23
riscv allnoconfig clang-23
riscv allyesconfig clang-23
riscv defconfig gcc-16.1.0
riscv randconfig-001-20260630 gcc-9.5.0
riscv randconfig-002-20260630 gcc-9.5.0
s390 allmodconfig clang-17
s390 allnoconfig clang-23
s390 allyesconfig gcc-16.1.0
s390 defconfig gcc-16.1.0
s390 randconfig-001-20260630 gcc-9.5.0
s390 randconfig-002-20260630 gcc-9.5.0
sh allmodconfig gcc-16.1.0
sh allnoconfig clang-23
sh allyesconfig clang-17
sh defconfig gcc-14
sh randconfig-001-20260630 gcc-9.5.0
sh randconfig-002-20260630 gcc-9.5.0
sh rsk7201_defconfig gcc-16.1.0
sparc allnoconfig clang-23
sparc defconfig gcc-16.1.0
sparc randconfig-001-20260630 clang-17
sparc randconfig-002-20260630 clang-17
sparc64 allmodconfig clang-20
sparc64 defconfig gcc-14
sparc64 randconfig-001-20260630 clang-17
sparc64 randconfig-002-20260630 clang-17
um allmodconfig clang-17
um allnoconfig clang-23
um allyesconfig gcc-16.1.0
um defconfig gcc-14
um i386_defconfig gcc-14
um randconfig-001-20260630 clang-17
um randconfig-002-20260630 clang-17
um x86_64_defconfig gcc-14
x86_64 allmodconfig clang-22
x86_64 allnoconfig clang-23
x86_64 allyesconfig clang-22
x86_64 buildonly-randconfig-001 clang-22
x86_64 buildonly-randconfig-001-20260630 clang-22
x86_64 buildonly-randconfig-002 clang-22
x86_64 buildonly-randconfig-002-20260630 clang-22
x86_64 buildonly-randconfig-003 clang-22
x86_64 buildonly-randconfig-003-20260630 clang-22
x86_64 buildonly-randconfig-004 clang-22
x86_64 buildonly-randconfig-004-20260630 clang-22
x86_64 buildonly-randconfig-005 clang-22
x86_64 buildonly-randconfig-005-20260630 clang-22
x86_64 buildonly-randconfig-006 clang-22
x86_64 buildonly-randconfig-006-20260630 clang-22
x86_64 defconfig gcc-14
x86_64 kexec clang-22
x86_64 randconfig-001 gcc-14
x86_64 randconfig-001-20260630 gcc-14
x86_64 randconfig-002 gcc-14
x86_64 randconfig-002-20260630 gcc-14
x86_64 randconfig-003 gcc-14
x86_64 randconfig-003-20260630 gcc-14
x86_64 randconfig-004 gcc-14
x86_64 randconfig-004-20260630 gcc-14
x86_64 randconfig-005 gcc-14
x86_64 randconfig-005-20260630 gcc-14
x86_64 randconfig-006 gcc-14
x86_64 randconfig-006-20260630 gcc-14
x86_64 randconfig-011 gcc-14
x86_64 randconfig-011-20260630 gcc-14
x86_64 randconfig-012 gcc-14
x86_64 randconfig-012-20260630 gcc-14
x86_64 randconfig-013 gcc-14
x86_64 randconfig-013-20260630 gcc-14
x86_64 randconfig-014 gcc-14
x86_64 randconfig-014-20260630 gcc-14
x86_64 randconfig-015 gcc-14
x86_64 randconfig-015-20260630 gcc-14
x86_64 randconfig-016 gcc-14
x86_64 randconfig-016-20260630 gcc-14
x86_64 randconfig-071-20260630 clang-22
x86_64 randconfig-072-20260630 clang-22
x86_64 randconfig-073-20260630 clang-22
x86_64 randconfig-074-20260630 clang-22
x86_64 randconfig-075-20260630 clang-22
x86_64 randconfig-076-20260630 clang-22
x86_64 rhel-9.4 clang-22
x86_64 rhel-9.4-bpf gcc-14
x86_64 rhel-9.4-func clang-22
x86_64 rhel-9.4-kselftests clang-22
x86_64 rhel-9.4-kunit gcc-14
x86_64 rhel-9.4-ltp gcc-14
x86_64 rhel-9.4-rust clang-22
xtensa allnoconfig clang-23
xtensa allyesconfig clang-20
xtensa randconfig-001-20260630 clang-17
xtensa randconfig-002-20260630 clang-17
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply
* Re: [PATCH v2 1/2] gpio: shared-proxy: always serialize with a sleeping mutex
From: Viacheslav @ 2026-06-30 9:20 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Marek Szyprowski, Diederik de Haas, linux-gpio, linux-arm-kernel,
linux-amlogic, linux-kernel, Linus Walleij
In-Reply-To: <CAMRc=McgB0gYfvE1KMXkNFnMgx6ahKoMFb2pi0_AF03m4BDk_g@mail.gmail.com>
Hi!
29.06.2026 20:06, Bartosz Golaszewski wrote:
> On Thu, 25 Jun 2026 13:57:17 +0200, Viacheslav Bocharov <v@baodeep.com> said:
>> The shared GPIO descriptor used either a mutex or a spinlock, chosen at
>> runtime from the underlying chip's can_sleep:
>>
... snip ...
>>
>> @@ -32,7 +34,7 @@ gpio_shared_proxy_set_unlocked(struct gpio_shared_proxy_data *proxy,
>
> I was about to apply it but then realized that it can be simplified further.
> The set_func() argument in gpio_shared_proxy_set_unlocked() is no longer
> needed and can be replaced with a direct call to gpiod_set_value_cansleep().
Good catch! This would even remove the extra fuss with the GPIO state.
> Would you mind sending a v3 with that included?
Yes, I'll prepare the updates and send v3.
>
> Thanks,
> Bartosz
Best regards,
Viacheslav
^ permalink raw reply
* [PATCH v3 0/2] gpio: fix sleeping-in-atomic in shared-proxy; restore meson non-sleeping
From: Viacheslav Bocharov @ 2026-06-30 10:15 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Marek Szyprowski, Robin Murphy, Diederik de Haas, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel
gpio-shared-proxy chooses its descriptor lock (mutex vs spinlock) from
the underlying chip's can_sleep, but under that lock it calls config and
direction ops that reach sleeping pinctrl paths. On a controller with
non-sleeping MMIO value ops the lock is a spinlock, so a sleeping call
runs from atomic context:
BUG: sleeping function called from invalid context
... pinctrl_gpio_set_config <- gpiochip_generic_config
<- gpio_shared_proxy_set_config (voting spinlock held)
<- ... <- mmc_pwrseq_simple_probe
This was reported on Khadas VIM3 and worked around for Amlogic by
commit 28f240683871 ("pinctrl: meson: mark the GPIO controller as
sleeping"), which marked the whole meson controller sleeping. That
workaround broke atomic value-path consumers: w1-gpio (1-Wire bitbang)
no longer detects devices, because its IRQ-disabled read slot calls the
non-cansleep gpiod_*_value() and now hits WARN_ON(can_sleep) per bit.
Patch 1 fixes the proxy locking generically (always a sleeping mutex).
Patch 2 then restores meson can_sleep=false, fixing 1-Wire.
Patch 1 has a trade-off: a proxied GPIO becomes sleeping, so consumers
gating on gpiod_cansleep() change behaviour. No current device needs
atomic (non-cansleep) value access on a shared GPIO -- every report
(Khadas VIM3, ODROID-M1, my test on JetHub D1+) is a shared reset line
(eMMC/SDIO pwrseq or PCIe reset) driven through the cansleep accessors,
which is what the proxy exists to vote on; bit-banging that needs atomic
access cannot work through voting anyway. An alternative that keeps
atomic value access (split locking) is possible but adds a second lock
and new race windows, so this series takes the simpler mutex-only
approach.
The two are a unit: patch 2 must not be applied without patch 1,
otherwise the original VIM3 splat returns on boards that share a meson
GPIO -- please keep the order. I have not Cc'd stable; I will request
stable backports separately once both patches have landed.
Changes since v2:
- gpio: shared-proxy: drop the set_func callback from
gpio_shared_proxy_set_unlocked() and call gpiod_set_value_cansleep()
directly. The shared direction_output path drives the already-output
line through the value setter instead of re-issuing
gpiod_direction_output() (equivalent, minus a redundant per-edge
re-assert of drive config/bias). No change to the voting/value
behaviour.
Changes since v1:
- gpio: shared-proxy: open-code the descriptor mutex; drop the
gpio_shared_desc_lock guard and the gpio_shared_lockdep_assert()
helper, move the mutex rationale to the can_sleep assignment.
v1: https://lore.kernel.org/linux-gpio/20260610153329.937833-1-v@baodeep.com/
v2: https://lore.kernel.org/linux-gpio/20260625115718.1678991-1-v@baodeep.com/
Viacheslav Bocharov (2):
gpio: shared-proxy: always serialize with a sleeping mutex
pinctrl: meson: restore non-sleeping GPIO access
drivers/gpio/gpio-shared-proxy.c | 76 ++++++++++-----------------
drivers/gpio/gpiolib-shared.c | 9 +---
drivers/gpio/gpiolib-shared.h | 28 +---------
drivers/pinctrl/meson/pinctrl-meson.c | 2 +-
4 files changed, 33 insertions(+), 82 deletions(-)
base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
--
2.54.0
^ permalink raw reply
* [PATCH v3 1/2] gpio: shared-proxy: always serialize with a sleeping mutex
From: Viacheslav Bocharov @ 2026-06-30 10:15 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Marek Szyprowski, Robin Murphy, Diederik de Haas, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel
In-Reply-To: <20260630101545.800625-1-v@baodeep.com>
The shared GPIO descriptor used either a mutex or a spinlock, chosen at
runtime from the underlying chip's can_sleep:
shared_desc->can_sleep = gpiod_cansleep(shared_desc->desc);
... if (can_sleep) mutex_lock(); else spin_lock_irqsave();
can_sleep describes only the value path (->get/->set). Under the same
lock, however, the proxy may call gpiod_set_config() and
gpiod_direction_*(), which can reach pinctrl paths that take a mutex
(e.g. gpiod_set_config() -> gpiochip_generic_config() ->
pinctrl_gpio_set_config()), independent of can_sleep. On a controller
with non-sleeping MMIO value ops the descriptor lock was a spinlock, so
the sleeping pinctrl call ran from atomic context. Reproduced on an
Amlogic A113X board with the workaround from commit 28f240683871
("pinctrl: meson: mark the GPIO controller as sleeping") reverted; the
original Khadas VIM3 report hit the same path:
BUG: sleeping function called from invalid context
__mutex_lock
pinctrl_get_device_gpio_range
pinctrl_gpio_set_config
gpiochip_generic_config
gpiod_set_config
gpio_shared_proxy_set_config <- voting spinlock held
...
mmc_pwrseq_simple_probe
The spinlock existed to take the value vote from atomic context, but the
vote and the (possibly sleeping) control operations share the same state
and lock, so this scheme cannot serialize config under a mutex and still
offer atomic value access. Always serialize the shared descriptor with a
mutex instead and mark the proxy a sleeping gpiochip, driving the
underlying GPIO through the cansleep value accessors: those are valid
for both sleeping and non-sleeping chips, so value access keeps working
on fast controllers, at the cost of no longer being atomic.
With every vote edge now driven through the cansleep value setter,
gpio_shared_proxy_set_unlocked() no longer needs a per-call setter: drop
its set_func callback and call gpiod_set_value_cansleep() directly. The
shared direction_output path reaches it only once the line is already an
output, so driving the value there is equivalent to re-issuing
gpiod_direction_output(), without the redundant per-edge re-assertion of
drive config and bias.
This is observable: consumers gating on gpiod_cansleep() take their
sleeping branch on a proxied GPIO (mmc-pwrseq-emmc skips its
emergency-restart reset handler; its normal reset is unaffected), and
consumers that reject sleeping GPIOs (pwm-gpio, ps2-gpio, ...) would
fail to probe. Such atomic users do not share a pin through the proxy,
whose purpose is voting on shared reset/enable lines. The same narrowing
already applies on Amlogic since that workaround, and rockchip
addressed the identical splat per-driver in commit 7ca497be0016 ("gpio:
rockchip: Stop calling pinctrl for set_direction"); fixing the proxy
addresses the locking error once, for every controller.
The lock type was added by commit a060b8c511ab ("gpiolib: implement
low-level, shared GPIO support"); the sleeping call under it arrived with
the proxy driver.
Fixes: e992d54c6f97 ("gpio: shared-proxy: implement the shared GPIO proxy driver")
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
Closes: https://lore.kernel.org/all/00107523-7737-4b92-a785-14ce4e93b8cb@samsung.com/
Signed-off-by: Viacheslav Bocharov <v@baodeep.com>
---
v2 -> v3: drop the set_func callback from gpio_shared_proxy_set_unlocked()
and call gpiod_set_value_cansleep() directly; the shared
direction_output path drives the already-output line via the
value setter instead of re-issuing gpiod_direction_output().
v1 -> v2: open-code the descriptor mutex; drop the gpio_shared_desc_lock
guard and the gpio_shared_lockdep_assert() helper, use
guard(mutex) and lockdep_assert_held() directly; move the
mutex rationale from the header to the can_sleep assignment in
probe.
v1: https://lore.kernel.org/linux-gpio/20260610153329.937833-2-v@baodeep.com/
v2: https://lore.kernel.org/linux-gpio/20260625115718.1678991-2-v@baodeep.com/
drivers/gpio/gpio-shared-proxy.c | 76 ++++++++++++--------------------
drivers/gpio/gpiolib-shared.c | 9 +---
drivers/gpio/gpiolib-shared.h | 28 +-----------
3 files changed, 32 insertions(+), 81 deletions(-)
diff --git a/drivers/gpio/gpio-shared-proxy.c b/drivers/gpio/gpio-shared-proxy.c
index 6941e4be6cf1..10ca2ef77ef3 100644
--- a/drivers/gpio/gpio-shared-proxy.c
+++ b/drivers/gpio/gpio-shared-proxy.c
@@ -9,8 +9,10 @@
#include <linux/err.h>
#include <linux/gpio/consumer.h>
#include <linux/gpio/driver.h>
+#include <linux/lockdep.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
+#include <linux/mutex.h>
#include <linux/string_choices.h>
#include <linux/types.h>
@@ -24,15 +26,13 @@ struct gpio_shared_proxy_data {
};
static int
-gpio_shared_proxy_set_unlocked(struct gpio_shared_proxy_data *proxy,
- int (*set_func)(struct gpio_desc *desc, int value),
- int value)
+gpio_shared_proxy_set_unlocked(struct gpio_shared_proxy_data *proxy, int value)
{
struct gpio_shared_desc *shared_desc = proxy->shared_desc;
struct gpio_desc *desc = shared_desc->desc;
int ret = 0;
- gpio_shared_lockdep_assert(shared_desc);
+ lockdep_assert_held(&shared_desc->mutex);
if (value) {
/* User wants to set value to high. */
@@ -46,7 +46,7 @@ gpio_shared_proxy_set_unlocked(struct gpio_shared_proxy_data *proxy,
* Current value is low, need to actually set value
* to high.
*/
- ret = set_func(desc, 1);
+ ret = gpiod_set_value_cansleep(desc, 1);
if (ret)
goto out;
}
@@ -65,7 +65,7 @@ gpio_shared_proxy_set_unlocked(struct gpio_shared_proxy_data *proxy,
/* We previously voted for high. */
if (shared_desc->highcnt == 1) {
/* This is the last remaining vote for high, set value to low. */
- ret = set_func(desc, 0);
+ ret = gpiod_set_value_cansleep(desc, 0);
if (ret)
goto out;
}
@@ -89,7 +89,7 @@ static int gpio_shared_proxy_request(struct gpio_chip *gc, unsigned int offset)
struct gpio_shared_proxy_data *proxy = gpiochip_get_data(gc);
struct gpio_shared_desc *shared_desc = proxy->shared_desc;
- guard(gpio_shared_desc_lock)(shared_desc);
+ guard(mutex)(&shared_desc->mutex);
proxy->shared_desc->usecnt++;
@@ -105,11 +105,10 @@ static void gpio_shared_proxy_free(struct gpio_chip *gc, unsigned int offset)
struct gpio_shared_desc *shared_desc = proxy->shared_desc;
int ret;
- guard(gpio_shared_desc_lock)(shared_desc);
+ guard(mutex)(&shared_desc->mutex);
if (proxy->voted_high) {
- ret = gpio_shared_proxy_set_unlocked(proxy,
- shared_desc->can_sleep ? gpiod_set_value_cansleep : gpiod_set_value, 0);
+ ret = gpio_shared_proxy_set_unlocked(proxy, 0);
if (ret)
dev_err(proxy->dev,
"Failed to unset the shared GPIO value on release: %d\n", ret);
@@ -129,7 +128,7 @@ static int gpio_shared_proxy_set_config(struct gpio_chip *gc,
struct gpio_desc *desc = shared_desc->desc;
int ret;
- guard(gpio_shared_desc_lock)(shared_desc);
+ guard(mutex)(&shared_desc->mutex);
if (shared_desc->usecnt > 1) {
if (shared_desc->cfg != cfg) {
@@ -157,7 +156,7 @@ static int gpio_shared_proxy_direction_input(struct gpio_chip *gc,
struct gpio_desc *desc = shared_desc->desc;
int dir;
- guard(gpio_shared_desc_lock)(shared_desc);
+ guard(mutex)(&shared_desc->mutex);
if (shared_desc->usecnt == 1) {
dev_dbg(proxy->dev,
@@ -187,7 +186,7 @@ static int gpio_shared_proxy_direction_output(struct gpio_chip *gc,
struct gpio_desc *desc = shared_desc->desc;
int ret, dir;
- guard(gpio_shared_desc_lock)(shared_desc);
+ guard(mutex)(&shared_desc->mutex);
if (shared_desc->usecnt == 1) {
dev_dbg(proxy->dev,
@@ -219,14 +218,7 @@ static int gpio_shared_proxy_direction_output(struct gpio_chip *gc,
return -EPERM;
}
- return gpio_shared_proxy_set_unlocked(proxy, gpiod_direction_output, value);
-}
-
-static int gpio_shared_proxy_get(struct gpio_chip *gc, unsigned int offset)
-{
- struct gpio_shared_proxy_data *proxy = gpiochip_get_data(gc);
-
- return gpiod_get_value(proxy->shared_desc->desc);
+ return gpio_shared_proxy_set_unlocked(proxy, value);
}
static int gpio_shared_proxy_get_cansleep(struct gpio_chip *gc,
@@ -237,29 +229,14 @@ static int gpio_shared_proxy_get_cansleep(struct gpio_chip *gc,
return gpiod_get_value_cansleep(proxy->shared_desc->desc);
}
-static int gpio_shared_proxy_do_set(struct gpio_shared_proxy_data *proxy,
- int (*set_func)(struct gpio_desc *desc, int value),
- int value)
-{
- guard(gpio_shared_desc_lock)(proxy->shared_desc);
-
- return gpio_shared_proxy_set_unlocked(proxy, set_func, value);
-}
-
-static int gpio_shared_proxy_set(struct gpio_chip *gc, unsigned int offset,
- int value)
-{
- struct gpio_shared_proxy_data *proxy = gpiochip_get_data(gc);
-
- return gpio_shared_proxy_do_set(proxy, gpiod_set_value, value);
-}
-
static int gpio_shared_proxy_set_cansleep(struct gpio_chip *gc,
unsigned int offset, int value)
{
struct gpio_shared_proxy_data *proxy = gpiochip_get_data(gc);
- return gpio_shared_proxy_do_set(proxy, gpiod_set_value_cansleep, value);
+ guard(mutex)(&proxy->shared_desc->mutex);
+
+ return gpio_shared_proxy_set_unlocked(proxy, value);
}
static int gpio_shared_proxy_get_direction(struct gpio_chip *gc,
@@ -302,20 +279,25 @@ static int gpio_shared_proxy_probe(struct auxiliary_device *adev,
gc->label = dev_name(dev);
gc->parent = dev;
gc->owner = THIS_MODULE;
- gc->can_sleep = shared_desc->can_sleep;
+ /*
+ * Under the descriptor mutex the proxy may call
+ * gpiod_set_config()/gpiod_direction_*(), which can reach pinctrl
+ * paths that take a mutex (e.g. gpiod_set_config() ->
+ * gpiochip_generic_config() -> pinctrl_gpio_set_config()), independent
+ * of the underlying chip's can_sleep. So the descriptor lock must be a
+ * mutex and the proxy gpiochip is therefore always sleeping; drive the
+ * underlying GPIO through the cansleep value accessors, which are valid
+ * for both sleeping and non-sleeping chips.
+ */
+ gc->can_sleep = true;
gc->request = gpio_shared_proxy_request;
gc->free = gpio_shared_proxy_free;
gc->set_config = gpio_shared_proxy_set_config;
gc->direction_input = gpio_shared_proxy_direction_input;
gc->direction_output = gpio_shared_proxy_direction_output;
- if (gc->can_sleep) {
- gc->set = gpio_shared_proxy_set_cansleep;
- gc->get = gpio_shared_proxy_get_cansleep;
- } else {
- gc->set = gpio_shared_proxy_set;
- gc->get = gpio_shared_proxy_get;
- }
+ gc->set = gpio_shared_proxy_set_cansleep;
+ gc->get = gpio_shared_proxy_get_cansleep;
gc->get_direction = gpio_shared_proxy_get_direction;
gc->to_irq = gpio_shared_proxy_to_irq;
diff --git a/drivers/gpio/gpiolib-shared.c b/drivers/gpio/gpiolib-shared.c
index de72776fb154..495bd3d0ddf0 100644
--- a/drivers/gpio/gpiolib-shared.c
+++ b/drivers/gpio/gpiolib-shared.c
@@ -627,8 +627,7 @@ static void gpio_shared_release(struct kref *kref)
shared_desc = entry->shared_desc;
gpio_device_put(shared_desc->desc->gdev);
- if (shared_desc->can_sleep)
- mutex_destroy(&shared_desc->mutex);
+ mutex_destroy(&shared_desc->mutex);
kfree(shared_desc);
entry->shared_desc = NULL;
}
@@ -659,11 +658,7 @@ gpiod_shared_desc_create(struct gpio_shared_entry *entry)
}
shared_desc->desc = &gdev->descs[entry->offset];
- shared_desc->can_sleep = gpiod_cansleep(shared_desc->desc);
- if (shared_desc->can_sleep)
- mutex_init(&shared_desc->mutex);
- else
- spin_lock_init(&shared_desc->spinlock);
+ mutex_init(&shared_desc->mutex);
return shared_desc;
}
diff --git a/drivers/gpio/gpiolib-shared.h b/drivers/gpio/gpiolib-shared.h
index 15e72a8dcdb1..bbdc0ab7b647 100644
--- a/drivers/gpio/gpiolib-shared.h
+++ b/drivers/gpio/gpiolib-shared.h
@@ -3,10 +3,7 @@
#ifndef __LINUX_GPIO_SHARED_H
#define __LINUX_GPIO_SHARED_H
-#include <linux/cleanup.h>
-#include <linux/lockdep.h>
#include <linux/mutex.h>
-#include <linux/spinlock.h>
struct gpio_device;
struct gpio_desc;
@@ -42,35 +39,12 @@ static inline int gpio_shared_add_proxy_lookup(struct device *consumer,
struct gpio_shared_desc {
struct gpio_desc *desc;
- bool can_sleep;
unsigned long cfg;
unsigned int usecnt;
unsigned int highcnt;
- union {
- struct mutex mutex;
- spinlock_t spinlock;
- };
+ struct mutex mutex; /* serializes all proxy operations on this descriptor */
};
struct gpio_shared_desc *devm_gpiod_shared_get(struct device *dev);
-DEFINE_LOCK_GUARD_1(gpio_shared_desc_lock, struct gpio_shared_desc,
- if (_T->lock->can_sleep)
- mutex_lock(&_T->lock->mutex);
- else
- spin_lock_irqsave(&_T->lock->spinlock, _T->flags),
- if (_T->lock->can_sleep)
- mutex_unlock(&_T->lock->mutex);
- else
- spin_unlock_irqrestore(&_T->lock->spinlock, _T->flags),
- unsigned long flags)
-
-static inline void gpio_shared_lockdep_assert(struct gpio_shared_desc *shared_desc)
-{
- if (shared_desc->can_sleep)
- lockdep_assert_held(&shared_desc->mutex);
- else
- lockdep_assert_held(&shared_desc->spinlock);
-}
-
#endif /* __LINUX_GPIO_SHARED_H */
--
2.54.0
^ permalink raw reply related
* [PATCH v3 2/2] pinctrl: meson: restore non-sleeping GPIO access
From: Viacheslav Bocharov @ 2026-06-30 10:15 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski
Cc: Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Marek Szyprowski, Robin Murphy, Diederik de Haas, linux-gpio,
linux-arm-kernel, linux-amlogic, linux-kernel
In-Reply-To: <20260630101545.800625-1-v@baodeep.com>
Commit 28f240683871 ("pinctrl: meson: mark the GPIO controller as
sleeping") set gpio_chip.can_sleep = true to work around
gpio-shared-proxy holding a spinlock across a sleeping pinctrl config
path. That locking bug is now fixed in the shared-proxy itself ("gpio:
shared-proxy: always serialize with a sleeping mutex"), so the
controller-wide workaround is no longer needed; the meson GPIO
controller does not sleep.
meson_gpio_get/set/direction_* access MMIO through regmap. The
regmap_mmio bus uses fast I/O (spinlock) locking, so these value
callbacks do not contain sleeping operations. Since gpio_chip.can_sleep
describes the get/set value path, restore can_sleep = false.
Marking the controller sleeping also broke atomic value consumers such
as w1-gpio (1-Wire bitbang): w1_io.c runs its read time slot under
local_irq_save() and uses the non-cansleep gpiod_set_value() /
gpiod_get_value(), which with can_sleep=true trigger WARN_ON(can_sleep)
in gpiolib on every transferred bit (from w1_gpio_write_bit() /
w1_gpio_read_bit() via w1_reset_bus() and w1_search()). The printk and
stack dump inside the IRQs-off, microsecond-scale time slot destroy the
bit timing, so reset/presence detection and ROM search fail: the bus
master registers but w1_master_slave_count stays at 0 and no devices
are found. Verified on an Amlogic A113X board (DS18B20 on GPIOA_14):
with can_sleep restored to false the warnings are gone and the sensor
is detected and read again.
This must not be applied or backported without the shared-proxy locking
fix above; otherwise the original Khadas VIM3 splat returns on boards
that genuinely share a meson GPIO.
Fixes: 28f240683871 ("pinctrl: meson: mark the GPIO controller as sleeping")
Link: https://lore.kernel.org/all/20260105150509.56537-1-bartosz.golaszewski@oss.qualcomm.com/
Signed-off-by: Viacheslav Bocharov <v@baodeep.com>
---
drivers/pinctrl/meson/pinctrl-meson.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index 4507dc8b5563..18295b15ecd9 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -619,7 +619,7 @@ static int meson_gpiolib_register(struct meson_pinctrl *pc)
pc->chip.set = meson_gpio_set;
pc->chip.base = -1;
pc->chip.ngpio = pc->data->num_pins;
- pc->chip.can_sleep = true;
+ pc->chip.can_sleep = false;
ret = gpiochip_add_data(&pc->chip, pc);
if (ret) {
--
2.54.0
^ permalink raw reply related
* [PATCH v8 0/8] lan966x pci device: Add support for SFPs, PCI part
From: Herve Codina @ 2026-06-30 10:27 UTC (permalink / raw)
To: Andrew Lunn, Rob Herring, Saravana Kannan, Greg Kroah-Hartman,
Rafael J. Wysocki, Danilo Krummrich, Bjorn Helgaas, David Rhodes,
Richard Fitzgerald, Charles Keepax, Linus Walleij, Len Brown,
Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
Vishal Verma, Dan Williams, Ira Weiny, Li Ming, Lizhi Hou,
Herve Codina
Cc: driver-core, linux-kernel, linux-pci, linux-sound, patches,
linux-gpio, linux-acpi, linux-cxl, Allan Nielsen, Horatiu Vultur,
Daniel Machon, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni
Hi,
Previously, I sent a big picture series adding support for SFP ports
available on the LAN966x PCI device [0].
In this series patches touch several parts and sub-system in the kernel.
Reviews have be done and it makes sense to split the series and send
parts separately.
This current series is the extraction of patches related to issues in
the PCI subsystem. It has to be seen as a continuation of the big
picture series but related to this specific core part.
Patches 1 to 6 introduce and use fw_devlink_set_device() in already
existing code. No functional change but the introduction of the
fw_devlink_set_device() wrapper.
Patches 7 and 8 fix fw_devlink issues specific to PCI and the
device-tree nodes created during enumeration.
[0] https://lore.kernel.org/all/20260325143555.451852-1-herve.codina@bootlin.com/
Best regards,
Hervé
Changes:
v7 -> v8
v7: https://lore.kernel.org/all/20260511155930.34604-1-herve.codina@bootlin.com/
Rebase on top of v7.2-rc1
- patches 4 and 5
Add 'Reviewed-by: Andy Shevchenko'
- Other Patches
No other changes
v6 -> v7
Rebase on top of v7.1-rc1
- Patch 1
Add Cc stable. Needed for patches 11 and 12
- Patches 2 to 5
No changes
- Patch 6
Add Cc stable. Needed for patch 13
Add 'Acked-by: Bjorn Helgaas'
- Patch 7
Fix a typo in commit log
Add Fixes tag + Cc stable
Add 'Acked-by: Bjorn Helgaas'
- Patch 8
Add Fixes tag + Cc stable
Add 'Acked-by: Bjorn Helgaas'
Older iterations:
Patches 6 to 13 in the big picture series
https://lore.kernel.org/all/20260325143555.451852-1-herve.codina@bootlin.com/
Herve Codina (8):
driver core: fw_devlink: Introduce fw_devlink_set_device()
drivers: core: Use fw_devlink_set_device()
pinctrl: cs42l43: Use fw_devlink_set_device()
cxl/test: Use device_set_node()
cxl/test: Use fw_devlink_set_device()
PCI: of: Use fw_devlink_set_device()
PCI: of: Set fwnode device of newly created PCI device nodes
PCI: of: Remove fwnode_dev_initialized() call for a PCI root bridge
node
drivers/base/core.c | 4 ++--
drivers/pci/of.c | 10 ++++++++--
drivers/pinctrl/cirrus/pinctrl-cs42l43.c | 2 +-
include/linux/fwnode.h | 6 ++++++
tools/testing/cxl/test/cxl.c | 4 ++--
5 files changed, 19 insertions(+), 7 deletions(-)
--
2.54.0
^ permalink raw reply
* [PATCH v8 1/8] driver core: fw_devlink: Introduce fw_devlink_set_device()
From: Herve Codina @ 2026-06-30 10:27 UTC (permalink / raw)
To: Andrew Lunn, Rob Herring, Saravana Kannan, Greg Kroah-Hartman,
Rafael J. Wysocki, Danilo Krummrich, Bjorn Helgaas, David Rhodes,
Richard Fitzgerald, Charles Keepax, Linus Walleij, Len Brown,
Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
Vishal Verma, Dan Williams, Ira Weiny, Li Ming, Lizhi Hou,
Herve Codina
Cc: driver-core, linux-kernel, linux-pci, linux-sound, patches,
linux-gpio, linux-acpi, linux-cxl, Allan Nielsen, Horatiu Vultur,
Daniel Machon, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni,
stable, Ulf Hansson
In-Reply-To: <20260630102804.413563-1-herve.codina@bootlin.com>
Setting fwnode->dev is specific to fw_devlink.
In order to avoid having a direct 'fwnode->dev = dev;' in several
place in the kernel, introduce fw_devlink_set_device() helper to perform
this operation.
Having this helper allows to hide the fwnode devlink related stuff
behind the helper.
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
Cc stable because used by other patches with Fixes + Cc stable
---
include/linux/fwnode.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
index 4e86e6990d28..31538f54b1ca 100644
--- a/include/linux/fwnode.h
+++ b/include/linux/fwnode.h
@@ -256,4 +256,10 @@ void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode);
void fw_devlink_refresh_fwnode(struct fwnode_handle *fwnode);
bool fw_devlink_is_strict(void);
+static inline void fw_devlink_set_device(struct fwnode_handle *fwnode,
+ struct device *dev)
+{
+ fwnode->dev = dev;
+}
+
#endif
--
2.54.0
^ permalink raw reply related
* [PATCH v8 2/8] drivers: core: Use fw_devlink_set_device()
From: Herve Codina @ 2026-06-30 10:27 UTC (permalink / raw)
To: Andrew Lunn, Rob Herring, Saravana Kannan, Greg Kroah-Hartman,
Rafael J. Wysocki, Danilo Krummrich, Bjorn Helgaas, David Rhodes,
Richard Fitzgerald, Charles Keepax, Linus Walleij, Len Brown,
Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
Vishal Verma, Dan Williams, Ira Weiny, Li Ming, Lizhi Hou,
Herve Codina
Cc: driver-core, linux-kernel, linux-pci, linux-sound, patches,
linux-gpio, linux-acpi, linux-cxl, Allan Nielsen, Horatiu Vultur,
Daniel Machon, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni,
Ulf Hansson
In-Reply-To: <20260630102804.413563-1-herve.codina@bootlin.com>
The code set directly fwnode->dev field.
Use the dedicated fw_devlink_set_device() helper to perform this
operation.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/base/core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 4d026682944f..c205125344cf 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -3750,7 +3750,7 @@ int device_add(struct device *dev)
* device and the driver sync_state callback is called for this device.
*/
if (dev->fwnode && !dev->fwnode->dev) {
- dev->fwnode->dev = dev;
+ fw_devlink_set_device(dev->fwnode, dev);
fw_devlink_link_device(dev);
}
@@ -3925,7 +3925,7 @@ void device_del(struct device *dev)
device_unlock(dev);
if (dev->fwnode && dev->fwnode->dev == dev)
- dev->fwnode->dev = NULL;
+ fw_devlink_set_device(dev->fwnode, NULL);
/* Notify clients of device removal. This call must come
* before dpm_sysfs_remove().
--
2.54.0
^ permalink raw reply related
* [PATCH v8 3/8] pinctrl: cs42l43: Use fw_devlink_set_device()
From: Herve Codina @ 2026-06-30 10:27 UTC (permalink / raw)
To: Andrew Lunn, Rob Herring, Saravana Kannan, Greg Kroah-Hartman,
Rafael J. Wysocki, Danilo Krummrich, Bjorn Helgaas, David Rhodes,
Richard Fitzgerald, Charles Keepax, Linus Walleij, Len Brown,
Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
Vishal Verma, Dan Williams, Ira Weiny, Li Ming, Lizhi Hou,
Herve Codina
Cc: driver-core, linux-kernel, linux-pci, linux-sound, patches,
linux-gpio, linux-acpi, linux-cxl, Allan Nielsen, Horatiu Vultur,
Daniel Machon, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni
In-Reply-To: <20260630102804.413563-1-herve.codina@bootlin.com>
The code set directly fwnode->dev field.
Use the dedicated fw_devlink_set_device() helper to perform this
operation.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Acked-by: Linus Walleij <linusw@kernel.org>
---
drivers/pinctrl/cirrus/pinctrl-cs42l43.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/cirrus/pinctrl-cs42l43.c b/drivers/pinctrl/cirrus/pinctrl-cs42l43.c
index 8990fab0446c..563070aba3d8 100644
--- a/drivers/pinctrl/cirrus/pinctrl-cs42l43.c
+++ b/drivers/pinctrl/cirrus/pinctrl-cs42l43.c
@@ -576,7 +576,7 @@ static int cs42l43_pin_probe(struct platform_device *pdev)
return ret;
if (!child->dev)
- child->dev = priv->dev;
+ fw_devlink_set_device(child, priv->dev);
fwnode = child;
}
}
--
2.54.0
^ permalink raw reply related
* [PATCH v8 4/8] cxl/test: Use device_set_node()
From: Herve Codina @ 2026-06-30 10:27 UTC (permalink / raw)
To: Andrew Lunn, Rob Herring, Saravana Kannan, Greg Kroah-Hartman,
Rafael J. Wysocki, Danilo Krummrich, Bjorn Helgaas, David Rhodes,
Richard Fitzgerald, Charles Keepax, Linus Walleij, Len Brown,
Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
Vishal Verma, Dan Williams, Ira Weiny, Li Ming, Lizhi Hou,
Herve Codina
Cc: driver-core, linux-kernel, linux-pci, linux-sound, patches,
linux-gpio, linux-acpi, linux-cxl, Allan Nielsen, Horatiu Vultur,
Daniel Machon, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni,
Jonathan Cameron
In-Reply-To: <20260630102804.413563-1-herve.codina@bootlin.com>
The code set directly dev->fwnode.
Use the dedicated helper to perform this operation.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
tools/testing/cxl/test/cxl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c
index ef92dd35e030..69da0727362b 100644
--- a/tools/testing/cxl/test/cxl.c
+++ b/tools/testing/cxl/test/cxl.c
@@ -1528,7 +1528,7 @@ static void mock_companion(struct acpi_device *adev, struct device *dev)
{
device_initialize(&adev->dev);
fwnode_init(&adev->fwnode, NULL);
- dev->fwnode = &adev->fwnode;
+ device_set_node(dev, &adev->fwnode);
adev->fwnode.dev = dev;
}
--
2.54.0
^ permalink raw reply related
* [PATCH v8 5/8] cxl/test: Use fw_devlink_set_device()
From: Herve Codina @ 2026-06-30 10:27 UTC (permalink / raw)
To: Andrew Lunn, Rob Herring, Saravana Kannan, Greg Kroah-Hartman,
Rafael J. Wysocki, Danilo Krummrich, Bjorn Helgaas, David Rhodes,
Richard Fitzgerald, Charles Keepax, Linus Walleij, Len Brown,
Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
Vishal Verma, Dan Williams, Ira Weiny, Li Ming, Lizhi Hou,
Herve Codina
Cc: driver-core, linux-kernel, linux-pci, linux-sound, patches,
linux-gpio, linux-acpi, linux-cxl, Allan Nielsen, Horatiu Vultur,
Daniel Machon, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni,
Jonathan Cameron
In-Reply-To: <20260630102804.413563-1-herve.codina@bootlin.com>
The code set directly fwnode.dev field.
Use the dedicated fw_devlink_set_device() helper to perform this
operation.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
tools/testing/cxl/test/cxl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/cxl/test/cxl.c b/tools/testing/cxl/test/cxl.c
index 69da0727362b..95e39dfc6ec9 100644
--- a/tools/testing/cxl/test/cxl.c
+++ b/tools/testing/cxl/test/cxl.c
@@ -1529,7 +1529,7 @@ static void mock_companion(struct acpi_device *adev, struct device *dev)
device_initialize(&adev->dev);
fwnode_init(&adev->fwnode, NULL);
device_set_node(dev, &adev->fwnode);
- adev->fwnode.dev = dev;
+ fw_devlink_set_device(&adev->fwnode, dev);
}
#ifndef SZ_64G
--
2.54.0
^ permalink raw reply related
* [PATCH v8 6/8] PCI: of: Use fw_devlink_set_device()
From: Herve Codina @ 2026-06-30 10:28 UTC (permalink / raw)
To: Andrew Lunn, Rob Herring, Saravana Kannan, Greg Kroah-Hartman,
Rafael J. Wysocki, Danilo Krummrich, Bjorn Helgaas, David Rhodes,
Richard Fitzgerald, Charles Keepax, Linus Walleij, Len Brown,
Andy Shevchenko, Daniel Scally, Heikki Krogerus, Sakari Ailus,
Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
Vishal Verma, Dan Williams, Ira Weiny, Li Ming, Lizhi Hou,
Herve Codina
Cc: driver-core, linux-kernel, linux-pci, linux-sound, patches,
linux-gpio, linux-acpi, linux-cxl, Allan Nielsen, Horatiu Vultur,
Daniel Machon, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni,
stable
In-Reply-To: <20260630102804.413563-1-herve.codina@bootlin.com>
The code set directly fwnode.dev field.
Use the dedicated fw_devlink_set_device() helper to perform this
operation.
Cc: stable@vger.kernel.org
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
---
Cc stable because used by other patches with Fixes + Cc stable
---
drivers/pci/of.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/of.c b/drivers/pci/of.c
index 8b18c4ba845c..ee9eb384b377 100644
--- a/drivers/pci/of.c
+++ b/drivers/pci/of.c
@@ -803,7 +803,7 @@ void of_pci_make_host_bridge_node(struct pci_host_bridge *bridge)
* bus. Avoid any new device creation.
*/
of_node_set_flag(np, OF_POPULATED);
- np->fwnode.dev = &bridge->dev;
+ fw_devlink_set_device(&np->fwnode, &bridge->dev);
fwnode_dev_initialized(&np->fwnode, true);
ret = of_changeset_apply(cset);
--
2.54.0
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox