[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <8c2ef205-8e80-21e6-b8ad-f55cdb11079a@collabora.com>
Date: Fri, 18 Feb 2022 01:40:31 +0530
From: Shreeya Patel <shreeya.patel@...labora.com>
To: Bartosz Golaszewski <brgl@...ev.pl>,
Gabriel Krisman Bertazi <krisman@...labora.com>,
Andy Shevchenko <andy.shevchenko@...il.com>
Cc: Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <bgolaszewski@...libre.com>,
wsa@...nel.org, kernel@...labora.com,
"open list:GPIO SUBSYSTEM" <linux-gpio@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
kbuild test robot <lkp@...el.com>
Subject: Re: [PATCH v4] gpio: Return EPROBE_DEFER if gc->to_irq is NULL
On 10/02/22 11:30 pm, Bartosz Golaszewski wrote:
> On Thu, Feb 10, 2022 at 5:36 PM Gabriel Krisman Bertazi
> <krisman@...labora.com> wrote:
>> Shreeya Patel <shreeya.patel@...labora.com> writes:
>>
>>> We are racing the registering of .to_irq when probing the
>>> i2c driver. This results in random failure of touchscreen
>>> devices.
>>>
>>> Following errors could be seen in dmesg logs when gc->to_irq is NULL
>>>
>>> [2.101857] i2c_hid i2c-FTS3528:00: HID over i2c has not been provided an Int IRQ
>>> [2.101953] i2c_hid: probe of i2c-FTS3528:00 failed with error -22
>>>
>>> To avoid this situation, defer probing until to_irq is registered.
>>>
>>> This issue has been reported many times in past and people have been
>>> using workarounds like changing the pinctrl_amd to built-in instead
>>> of loading it as a module or by adding a softdep for pinctrl_amd into
>>> the config file.
>>>
>>> BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=209413
>>> Reviewed-by: Linus Walleij <linus.walleij@...aro.org>
>>> Reviewed-by: Andy Shevchenko <andy.shevchenko@...il.com>
>>> Reported-by: kernel test robot <lkp@...el.com>
>>> Signed-off-by: Shreeya Patel <shreeya.patel@...labora.com>
>> Hi guys,
>>
>> This seems to not have reached the Linus tree on 5.17. If I'm not
>> mistaken, it also hasn't reached linux-next as of today. Is there
>> anything I'm missing here?
>>
>> This is required to prevent spurious probe crashes of devices like this
>> FocalTech touchscreen, FT3528, when using pinctrl-amd. We've been
>> carrying it downstream for quite a while.
>>
>> Thanks,
>>
>> --
>> Gabriel Krisman Bertazi
> Hi Gabriel!
>
> My email address changed in September, that's why I didn't see the
> email you sent in November to my old one.
>
> gpiod_to_irq() can be used in context other than driver probing, I'm
> worried existing users would not know how to handle it. Also: how come
> you can get the GPIO descriptor from the provider but its interrupts
> are not yet set up?
Hi Bartosz,
We would be only changing the error code here for gpio driver race
condition.
Anything affected by this patch would have already been broken and might
be returning
-ENXIO. There is a theoretical chance that a driver exists which uses
gpiod_to_irq outside of
probe and affected by race condition. The more instructions between
gpiod_get and gpiod_to_irq
the smaller the chance of hitting the race condition though. Also
anything hitting the race condition
is broken right now and there hasn't been any issues reported so far. In
any case that system is not
fixed by this patch, it is still a good idea to apply this patch since
the proper fix is a lot more
invasive and probably might not be suitable for stable backporting. This
minimal patch does
not make things worse.
I have sent a v5 for this patch with better commit message.
Thanks,
Shreeya Patel
>
> Bart
>
Powered by blists - more mailing lists