All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drivers: core: clear wake irq in device_unbind_cleanup
@ 2024-11-11  9:21 Peng Fan (OSS)
  2024-11-12 11:41 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Peng Fan (OSS) @ 2024-11-11  9:21 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rafael J. Wysocki, open list
  Cc: Peng Fan, Dmitry Torokhov, Rob Herring, Ulf Hansson

From: Peng Fan <peng.fan@nxp.com>

With dev_pm_clear_wake_irq in device_unbind_cleanup, there is no need
to invoke dev_pm_clear_wake_irq in driver remove hook explicitly.

Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/base/dd.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index f0e4b4aba885..ea3a871bdd11 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -26,6 +26,7 @@
 #include <linux/wait.h>
 #include <linux/async.h>
 #include <linux/pm_runtime.h>
+#include <linux/pm_wakeirq.h>
 #include <linux/pinctrl/devinfo.h>
 #include <linux/slab.h>
 
@@ -556,6 +557,7 @@ static void device_unbind_cleanup(struct device *dev)
 		dev->pm_domain->dismiss(dev);
 	pm_runtime_reinit(dev);
 	dev_pm_set_driver_flags(dev, 0);
+	dev_pm_clear_wake_irq(dev);
 }
 
 static void device_remove(struct device *dev)
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] drivers: core: clear wake irq in device_unbind_cleanup
  2024-11-11  9:21 [PATCH] drivers: core: clear wake irq in device_unbind_cleanup Peng Fan (OSS)
@ 2024-11-12 11:41 ` Greg Kroah-Hartman
  2024-11-12 13:09   ` Peng Fan
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2024-11-12 11:41 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Rafael J. Wysocki, open list, Peng Fan, Dmitry Torokhov,
	Rob Herring, Ulf Hansson

On Mon, Nov 11, 2024 at 05:21:30PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> With dev_pm_clear_wake_irq in device_unbind_cleanup, there is no need
> to invoke dev_pm_clear_wake_irq in driver remove hook explicitly.
> 
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/base/dd.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/base/dd.c b/drivers/base/dd.c
> index f0e4b4aba885..ea3a871bdd11 100644
> --- a/drivers/base/dd.c
> +++ b/drivers/base/dd.c
> @@ -26,6 +26,7 @@
>  #include <linux/wait.h>
>  #include <linux/async.h>
>  #include <linux/pm_runtime.h>
> +#include <linux/pm_wakeirq.h>
>  #include <linux/pinctrl/devinfo.h>
>  #include <linux/slab.h>
>  
> @@ -556,6 +557,7 @@ static void device_unbind_cleanup(struct device *dev)
>  		dev->pm_domain->dismiss(dev);
>  	pm_runtime_reinit(dev);
>  	dev_pm_set_driver_flags(dev, 0);
> +	dev_pm_clear_wake_irq(dev);

I don't understand, you say you don't need to invoke it, yet you are
calling it here.

What commit id does this fix?  And what bug is this resolving?  What
drivers are broken without this?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH] drivers: core: clear wake irq in device_unbind_cleanup
  2024-11-12 11:41 ` Greg Kroah-Hartman
@ 2024-11-12 13:09   ` Peng Fan
  2024-11-12 13:55     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Peng Fan @ 2024-11-12 13:09 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Peng Fan (OSS)
  Cc: Rafael J. Wysocki, open list, Dmitry Torokhov, Rob Herring,
	Ulf Hansson

Hi Greg

> Subject: Re: [PATCH] drivers: core: clear wake irq in
> device_unbind_cleanup
> 
> On Mon, Nov 11, 2024 at 05:21:30PM +0800, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > With dev_pm_clear_wake_irq in device_unbind_cleanup, there is no
> need
> > to invoke dev_pm_clear_wake_irq in driver remove hook explicitly.
> >
> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > Cc: Rob Herring <robh@kernel.org>
> > Cc: Ulf Hansson <ulf.hansson@linaro.org>
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >  drivers/base/dd.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/base/dd.c b/drivers/base/dd.c index
> > f0e4b4aba885..ea3a871bdd11 100644
> > --- a/drivers/base/dd.c
> > +++ b/drivers/base/dd.c
> > @@ -26,6 +26,7 @@
> >  #include <linux/wait.h>
> >  #include <linux/async.h>
> >  #include <linux/pm_runtime.h>
> > +#include <linux/pm_wakeirq.h>
> >  #include <linux/pinctrl/devinfo.h>
> >  #include <linux/slab.h>
> >
> > @@ -556,6 +557,7 @@ static void device_unbind_cleanup(struct
> device *dev)
> >  		dev->pm_domain->dismiss(dev);
> >  	pm_runtime_reinit(dev);
> >  	dev_pm_set_driver_flags(dev, 0);
> > +	dev_pm_clear_wake_irq(dev);
> 
> I don't understand, you say you don't need to invoke it, yet you are
> calling it here.

I mean not need to invoke it in driver.remove hook. With this patch, we
could remove
https://elixir.bootlin.com/linux/v6.11.7/source/drivers/input/touchscreen/ti_am335x_tsc.c#L498
and same to other drivers.

> 
> What commit id does this fix? 

I am thinking to take this as a improvement, with core code
has this, the various drivers no need explicitly invoke it
in their own driver remove hook.

 And what bug is this resolving?  What
> drivers are broken without this?

See here:
https://lore.kernel.org/all/ZymxvLMkkktRoCXZ@google.com/

Thanks,
Peng.

> 
> thanks,
> 
> greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] drivers: core: clear wake irq in device_unbind_cleanup
  2024-11-12 13:09   ` Peng Fan
@ 2024-11-12 13:55     ` Greg Kroah-Hartman
  2024-11-12 15:05       ` Peng Fan
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2024-11-12 13:55 UTC (permalink / raw)
  To: Peng Fan
  Cc: Peng Fan (OSS), Rafael J. Wysocki, open list, Dmitry Torokhov,
	Rob Herring, Ulf Hansson

On Tue, Nov 12, 2024 at 01:09:19PM +0000, Peng Fan wrote:
> Hi Greg
> 
> > Subject: Re: [PATCH] drivers: core: clear wake irq in
> > device_unbind_cleanup
> > 
> > On Mon, Nov 11, 2024 at 05:21:30PM +0800, Peng Fan (OSS) wrote:
> > > From: Peng Fan <peng.fan@nxp.com>
> > >
> > > With dev_pm_clear_wake_irq in device_unbind_cleanup, there is no
> > need
> > > to invoke dev_pm_clear_wake_irq in driver remove hook explicitly.
> > >
> > > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > > Cc: Rob Herring <robh@kernel.org>
> > > Cc: Ulf Hansson <ulf.hansson@linaro.org>
> > > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > > ---
> > >  drivers/base/dd.c | 2 ++
> > >  1 file changed, 2 insertions(+)
> > >
> > > diff --git a/drivers/base/dd.c b/drivers/base/dd.c index
> > > f0e4b4aba885..ea3a871bdd11 100644
> > > --- a/drivers/base/dd.c
> > > +++ b/drivers/base/dd.c
> > > @@ -26,6 +26,7 @@
> > >  #include <linux/wait.h>
> > >  #include <linux/async.h>
> > >  #include <linux/pm_runtime.h>
> > > +#include <linux/pm_wakeirq.h>
> > >  #include <linux/pinctrl/devinfo.h>
> > >  #include <linux/slab.h>
> > >
> > > @@ -556,6 +557,7 @@ static void device_unbind_cleanup(struct
> > device *dev)
> > >  		dev->pm_domain->dismiss(dev);
> > >  	pm_runtime_reinit(dev);
> > >  	dev_pm_set_driver_flags(dev, 0);
> > > +	dev_pm_clear_wake_irq(dev);
> > 
> > I don't understand, you say you don't need to invoke it, yet you are
> > calling it here.
> 
> I mean not need to invoke it in driver.remove hook. With this patch, we
> could remove
> https://elixir.bootlin.com/linux/v6.11.7/source/drivers/input/touchscreen/ti_am335x_tsc.c#L498
> and same to other drivers.

But you did not say that, and you would need to make this as part of a
series.

Also, are you sure that ll drivers want to clear this irq flag?  What is
wrong with just doing it explicitly in the drivers that need it?

> > 
> > What commit id does this fix? 
> 
> I am thinking to take this as a improvement, with core code
> has this, the various drivers no need explicitly invoke it
> in their own driver remove hook.
> 
>  And what bug is this resolving?  What
> > drivers are broken without this?
> 
> See here:
> https://lore.kernel.org/all/ZymxvLMkkktRoCXZ@google.com/

Again, this seems to be a per-driver thing.  What do you break if you
attempt to do this for all drivers?  What about drivers that share irqs?

How was this tested?  On what platfoms?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH] drivers: core: clear wake irq in device_unbind_cleanup
  2024-11-12 13:55     ` Greg Kroah-Hartman
@ 2024-11-12 15:05       ` Peng Fan
  0 siblings, 0 replies; 5+ messages in thread
From: Peng Fan @ 2024-11-12 15:05 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Peng Fan (OSS), Rafael J. Wysocki, open list, Dmitry Torokhov,
	Rob Herring, Ulf Hansson

> Subject: Re: [PATCH] drivers: core: clear wake irq in
> device_unbind_cleanup
> 
> On Tue, Nov 12, 2024 at 01:09:19PM +0000, Peng Fan wrote:
> > Hi Greg
> >
> > > Subject: Re: [PATCH] drivers: core: clear wake irq in
> > > device_unbind_cleanup
> > >
> > > On Mon, Nov 11, 2024 at 05:21:30PM +0800, Peng Fan (OSS)
> wrote:
> > > > From: Peng Fan <peng.fan@nxp.com>
> > > >
> > > > With dev_pm_clear_wake_irq in device_unbind_cleanup, there is
> no
> > > need
> > > > to invoke dev_pm_clear_wake_irq in driver remove hook
> explicitly.
> > > >
> > > > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > > > Cc: Rob Herring <robh@kernel.org>
> > > > Cc: Ulf Hansson <ulf.hansson@linaro.org>
> > > > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > > > ---
> > > >  drivers/base/dd.c | 2 ++
> > > >  1 file changed, 2 insertions(+)
> > > >
> > > > diff --git a/drivers/base/dd.c b/drivers/base/dd.c index
> > > > f0e4b4aba885..ea3a871bdd11 100644
> > > > --- a/drivers/base/dd.c
> > > > +++ b/drivers/base/dd.c
> > > > @@ -26,6 +26,7 @@
> > > >  #include <linux/wait.h>
> > > >  #include <linux/async.h>
> > > >  #include <linux/pm_runtime.h>
> > > > +#include <linux/pm_wakeirq.h>
> > > >  #include <linux/pinctrl/devinfo.h>  #include <linux/slab.h>
> > > >
> > > > @@ -556,6 +557,7 @@ static void device_unbind_cleanup(struct
> > > device *dev)
> > > >  		dev->pm_domain->dismiss(dev);
> > > >  	pm_runtime_reinit(dev);
> > > >  	dev_pm_set_driver_flags(dev, 0);
> > > > +	dev_pm_clear_wake_irq(dev);
> > >
> > > I don't understand, you say you don't need to invoke it, yet you are
> > > calling it here.
> >
> > I mean not need to invoke it in driver.remove hook. With this patch,
> > we could remove
> >https://elixir.bootlin.com/linux/v6.11.7/source/drivers/input/touchscreen/ti_am335x_tsc.c#L498
> > and same to other drivers.
> 
> But you did not say that, and you would need to make this as part of a
> series.

Sorry if I not describe clearly in commit log.

There are many drivers are invoking clear wake irq in their remove hook.
I was thinking that if this patch got accepted, I could write a patch
to clean up the various drivers.

> 
> Also, are you sure that ll drivers want to clear this irq flag?

Without clear the flag, module test will report a kernel that
wake irq already initialized.

  What is
> wrong with just doing it explicitly in the drivers that need it?

Nothing wrong.
Dmitry commented on my patch to see whether the clear wake
irq could be done in driver core or not. So I did this patch.

> 
> > >
> > > What commit id does this fix?
> >
> > I am thinking to take this as a improvement, with core code has this,
> > the various drivers no need explicitly invoke it in their own driver
> > remove hook.
> >
> >  And what bug is this resolving?  What
> > > drivers are broken without this?
> >
> > See here:
> >https://lore.kernel.org/all/ZymxvLMkkktRoCXZ@google.com/
> 
> Again, this seems to be a per-driver thing. 

If driver not set wake irq, clear wake irq does no harm.
If driver set wake irq, clear wake irq in driver core could avoid
various drivers doing this work.

 What do you break if you
> attempt to do this for all drivers?  

I could not guarantee on this. Sorry.

> What about drivers that share irqs?

From my understanding, wake irq here is per device, not
related to shared irq.

Rafael, Ulf may help comment.

> 
> How was this tested?  On what platfoms?

Test on NXP i.MX9 platform.

Anyway I put this patch as an optimization, if you
think it is improper, I will go back to do a fix
in the 
drivers/input/misc/nxp-bbnsm-pwrkey.c

Thanks,
Peng.

> 
> thanks,
> 
> greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-11-12 15:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-11  9:21 [PATCH] drivers: core: clear wake irq in device_unbind_cleanup Peng Fan (OSS)
2024-11-12 11:41 ` Greg Kroah-Hartman
2024-11-12 13:09   ` Peng Fan
2024-11-12 13:55     ` Greg Kroah-Hartman
2024-11-12 15:05       ` Peng Fan

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.