From: Horatiu Vultur <horatiu.vultur@microchip.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: "open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
Linus Walleij <linus.walleij@linaro.org>,
Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
Subject: Re: [PATCH v3] pinctrl: ocelot: Fix interrupt controller
Date: Thu, 15 Sep 2022 13:33:33 +0200 [thread overview]
Message-ID: <20220915113333.uwgazi6hoeskpeoi@soft-dev3-1.localhost> (raw)
In-Reply-To: <CAHp75VfNjQTVjsjWNJ1oOGuovxt_=ZEZrEfTvj=-Ym9R_ZzPoQ@mail.gmail.com>
The 09/09/2022 18:09, Andy Shevchenko wrote:
>
> On Fri, Sep 9, 2022 at 5:55 PM Horatiu Vultur
> <horatiu.vultur@microchip.com> wrote:
>
> Thanks for an update, my comments below.
Thanks for all the help and sorry for late reply.
>
> ...
>
> > - dev_set_drvdata(dev, info->map);
> > + dev_set_drvdata(dev, info);
>
> I would also change it to platform_set_drvdata() to keep symmetry with
> ->remove().
Yes, I will change this.
>
> ...
>
> > +static int ocelot_pinctrl_remove(struct platform_device *pdev)
> > +{
> > + struct ocelot_pinctrl *info = platform_get_drvdata(pdev);
>
> > + destroy_workqueue(info->wq);
>
> Is it a synchronous operation? Anyway, what does guarantee that after
> this no other task can schedule a new work due to unmasking an
> interrupt? I think you need to be sure your device is quiescent before
> killing that workqueue. Something like synchronize_irq() +
> disable_irq() or equivalent? (I don't know for sure, you need to
> investigate it yourself and find the best suitable way).
I have look at descriptions of the functions (synchronize_irq(),
disable_irq()) and I think is enough to use only disable_irq().
I also tried something but it didn't have the expected result so I would
need to look more into this. I tried to use disable_irq on returned irq
inside ocelot_gpiochip_register but I was still getting interrupts after
that.
Also I was thinking actually to use gpiochip_remove() here in
ocelot_pinctrl_remove() before calling destroy_workqueue(). But then I
might have problems inside ocelot_irq_work(). I need to check more this.
>
> > + return 0;
> > +}
>
> --
> With Best Regards,
> Andy Shevchenko
--
/Horatiu
next prev parent reply other threads:[~2022-09-15 11:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-09 14:59 [PATCH v3] pinctrl: ocelot: Fix interrupt controller Horatiu Vultur
2022-09-09 15:09 ` Andy Shevchenko
2022-09-15 11:33 ` Horatiu Vultur [this message]
2022-09-14 13:02 ` Linus Walleij
2022-09-15 11:22 ` Horatiu Vultur
2022-09-18 18:55 ` Linus Walleij
2022-09-20 12:06 ` Michael Walle
2022-09-20 12:28 ` Linus Walleij
2022-09-20 12:34 ` Michael Walle
2022-09-20 14:25 ` Michael Walle
2022-09-20 19:30 ` Horatiu Vultur
2022-10-06 11:43 ` Michael Walle
2022-10-07 9:49 ` Horatiu Vultur
2022-10-13 7:30 ` Michael Walle
2022-10-13 14:11 ` Horatiu Vultur
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220915113333.uwgazi6hoeskpeoi@soft-dev3-1.localhost \
--to=horatiu.vultur@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=andy.shevchenko@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.