Re: [PATCH v12] i2c: designware: defer probe if child GpioInt controllers are not bound

Hardik Prakash <[email protected]>
Newsgroups org.kernel.vger.linux-i2c,org.kernel.vger.linux-gpio
Message-ID <CANTFpSVGQikgNUgwPW6hCEvCP+FWRJ3Me1jg-Uea=K2JZ4tc9Q@mail.gmail.com>
On Fri, 17 Jul 2026, Andy Shevchenko wrote:
> It's utterly wrong patch. Actually this whole saga shows how AI wastes
> more time than gains a productivity.
> ...
> So, make sure v13 is a real patch.

I am sorry for the bad patch. I will take some time to ensure all of
the feedback from v10, v11, v12 is properly incorporated and that v13
is a proper patch.

On Fri, 17 Jul 2026, Andy Shevchenko wrote:
> But this is wrong. It's a patch over v11 (basically it's a diff v11..v12).

For the next patch, should I carry the Ack over, given the underlying
content didn't change?

Thanks,
Hardik

On Fri, 17 Jul 2026 at 00:25, Andy Shevchenko
<[email protected]> wrote:
>
> On Thu, Jul 16, 2026 at 05:00:55PM +0530, Hardik Prakash wrote:
> > I2C controllers may have child devices with GpioInt resources that
> > depend on GPIO controllers being fully initialized. If the I2C
> > controller probes and enumerates children before the referenced GPIO
> > controller has completed probe, GPIO interrupts may not be properly
> > configured, leading to device failures.
> >
> > On Lenovo Yoga 7 14AGP11, the WACF2200 touchscreen (child of
> > AMDI0010:02) has a GpioInt resource pointing to GPIO 157 on the
> > pinctrl-amd controller (AMDI0030:00). When i2c-designware probes
> > AMDI0010:02 before pinctrl-amd finishes initializing, I2C transactions
> > fail with lost arbitration errors:
> >
> >   0.285952  amd_gpio_probe: registering gpiochip  <- GPIO chip visible
> >   0.287121  amd_gpio_probe: requesting parent IRQ <- probe still running
> >   0.301454  AMDI0010:02 dw_i2c_plat_probe: start  <- races here
> >   2.348157  lost arbitration
> >
> > Add a dependency check that walks ACPI child devices and defers probe
> > until any referenced GPIO controller is bound.
>
> It's utterly wrong patch. Actually this whole saga shows how AI wastes
> more time than gains a productivity.
>
> ...
>
> >       gpio_dev = gpio_device_to_device(gdev)->parent;
> > -     scoped_guard(device, gpio_dev) {
> > -             if (!device_is_bound(gpio_dev))
> > -                     return -EPROBE_DEFER; /* controller not bound yet: abort walk */
> > -     }
>
> > +     guard(device)(gpio_dev);
>
> When use guard()(), make sure it has a blank lines before and after, so it's
> visible as a separate entity.
>
> > +     if (!device_is_bound(gpio_dev))
> > +             return -EPROBE_DEFER; /* controller not bound yet: abort walk */
> >
>
> ...
>
> So, make sure v13 is a real patch.
>
> --
> With Best Regards,
> Andy Shevchenko
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.