linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1] gpio: tegra: Fix irq_set_affinity
@ 2021-01-20  0:45 Dmitry Osipenko
  2021-01-22 12:55 ` Linus Walleij
  0 siblings, 1 reply; 3+ messages in thread
From: Dmitry Osipenko @ 2021-01-20  0:45 UTC (permalink / raw)
  To: Thierry Reding, Jonathan Hunter, Laxman Dewangan,
	Bartosz Golaszewski, Linus Walleij, Matt Merhar, Peter Geis
  Cc: linux-tegra, linux-gpio, linux-kernel

The irq_set_affinity callback should not be set if parent IRQ domain
doesn't present because gpio-tegra driver callback fails in this case,
causing a noisy error messages on system suspend:

 Disabling non-boot CPUs ...
 IRQ 26: no longer affine to CPU1
 IRQ128: set affinity failed(-22).
 IRQ130: set affinity failed(-22).
 IRQ131: set affinity failed(-22).
 IRQ 27: no longer affine to CPU2
 IRQ128: set affinity failed(-22).
 IRQ130: set affinity failed(-22).
 IRQ131: set affinity failed(-22).
 IRQ 28: no longer affine to CPU3
 IRQ128: set affinity failed(-22).
 IRQ130: set affinity failed(-22).
 IRQ131: set affinity failed(-22).
 Entering suspend state LP1

Hence just don't specify the irq_set_affinity callback if parent PMC
IRQ domain is missing. Tegra isn't capable of setting affinity per GPIO,
affinity could be set only per GPIO bank, thus there is nothing to do
for gpio-tegra in regards to CPU affinity without the parent IRQ domain.

Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30
Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30
Tested-by: Dmitry Osipenko <digetx@gmail.com> # A500 T20 and Nexus7 T30
Fixes: efcdca286eef ("gpio: tegra: Convert to gpio_irq_chip")
Reported-by: Matt Merhar <mattmerhar@protonmail.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
 drivers/gpio/gpio-tegra.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index 6c79e9d2f932..9a43129313fa 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -701,7 +701,6 @@ static int tegra_gpio_probe(struct platform_device *pdev)
 #ifdef CONFIG_PM_SLEEP
 	tgi->ic.irq_set_wake		= tegra_gpio_irq_set_wake;
 #endif
-	tgi->ic.irq_set_affinity	= tegra_gpio_irq_set_affinity;
 	tgi->ic.irq_request_resources	= tegra_gpio_irq_request_resources;
 	tgi->ic.irq_release_resources	= tegra_gpio_irq_release_resources;
 
@@ -754,6 +753,8 @@ static int tegra_gpio_probe(struct platform_device *pdev)
 
 		if (!irq->parent_domain)
 			return -EPROBE_DEFER;
+
+		tgi->ic.irq_set_affinity = tegra_gpio_irq_set_affinity;
 	}
 
 	tgi->regs = devm_platform_ioremap_resource(pdev, 0);
-- 
2.29.2


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

* Re: [PATCH v1] gpio: tegra: Fix irq_set_affinity
  2021-01-20  0:45 [PATCH v1] gpio: tegra: Fix irq_set_affinity Dmitry Osipenko
@ 2021-01-22 12:55 ` Linus Walleij
  2021-01-27 14:46   ` Bartosz Golaszewski
  0 siblings, 1 reply; 3+ messages in thread
From: Linus Walleij @ 2021-01-22 12:55 UTC (permalink / raw)
  To: Dmitry Osipenko
  Cc: Thierry Reding, Jonathan Hunter, Laxman Dewangan,
	Bartosz Golaszewski, Matt Merhar, Peter Geis, linux-tegra,
	open list:GPIO SUBSYSTEM, linux-kernel

On Wed, Jan 20, 2021 at 1:46 AM Dmitry Osipenko <digetx@gmail.com> wrote:

> The irq_set_affinity callback should not be set if parent IRQ domain
> doesn't present because gpio-tegra driver callback fails in this case,
> causing a noisy error messages on system suspend:
>
>  Disabling non-boot CPUs ...
>  IRQ 26: no longer affine to CPU1
>  IRQ128: set affinity failed(-22).
>  IRQ130: set affinity failed(-22).
>  IRQ131: set affinity failed(-22).
>  IRQ 27: no longer affine to CPU2
>  IRQ128: set affinity failed(-22).
>  IRQ130: set affinity failed(-22).
>  IRQ131: set affinity failed(-22).
>  IRQ 28: no longer affine to CPU3
>  IRQ128: set affinity failed(-22).
>  IRQ130: set affinity failed(-22).
>  IRQ131: set affinity failed(-22).
>  Entering suspend state LP1
>
> Hence just don't specify the irq_set_affinity callback if parent PMC
> IRQ domain is missing. Tegra isn't capable of setting affinity per GPIO,
> affinity could be set only per GPIO bank, thus there is nothing to do
> for gpio-tegra in regards to CPU affinity without the parent IRQ domain.
>
> Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30
> Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30
> Tested-by: Dmitry Osipenko <digetx@gmail.com> # A500 T20 and Nexus7 T30
> Fixes: efcdca286eef ("gpio: tegra: Convert to gpio_irq_chip")
> Reported-by: Matt Merhar <mattmerhar@protonmail.com>
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>

Ick, sorry for the noise!
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

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

* Re: [PATCH v1] gpio: tegra: Fix irq_set_affinity
  2021-01-22 12:55 ` Linus Walleij
@ 2021-01-27 14:46   ` Bartosz Golaszewski
  0 siblings, 0 replies; 3+ messages in thread
From: Bartosz Golaszewski @ 2021-01-27 14:46 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Dmitry Osipenko, Thierry Reding, Jonathan Hunter,
	Laxman Dewangan, Matt Merhar, Peter Geis, linux-tegra,
	open list:GPIO SUBSYSTEM, linux-kernel

On Fri, Jan 22, 2021 at 1:56 PM Linus Walleij <linus.walleij@linaro.org> wrote:
>
> On Wed, Jan 20, 2021 at 1:46 AM Dmitry Osipenko <digetx@gmail.com> wrote:
>
> > The irq_set_affinity callback should not be set if parent IRQ domain
> > doesn't present because gpio-tegra driver callback fails in this case,
> > causing a noisy error messages on system suspend:
> >
> >  Disabling non-boot CPUs ...
> >  IRQ 26: no longer affine to CPU1
> >  IRQ128: set affinity failed(-22).
> >  IRQ130: set affinity failed(-22).
> >  IRQ131: set affinity failed(-22).
> >  IRQ 27: no longer affine to CPU2
> >  IRQ128: set affinity failed(-22).
> >  IRQ130: set affinity failed(-22).
> >  IRQ131: set affinity failed(-22).
> >  IRQ 28: no longer affine to CPU3
> >  IRQ128: set affinity failed(-22).
> >  IRQ130: set affinity failed(-22).
> >  IRQ131: set affinity failed(-22).
> >  Entering suspend state LP1
> >
> > Hence just don't specify the irq_set_affinity callback if parent PMC
> > IRQ domain is missing. Tegra isn't capable of setting affinity per GPIO,
> > affinity could be set only per GPIO bank, thus there is nothing to do
> > for gpio-tegra in regards to CPU affinity without the parent IRQ domain.
> >
> > Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30
> > Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30
> > Tested-by: Dmitry Osipenko <digetx@gmail.com> # A500 T20 and Nexus7 T30
> > Fixes: efcdca286eef ("gpio: tegra: Convert to gpio_irq_chip")
> > Reported-by: Matt Merhar <mattmerhar@protonmail.com>
> > Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
>
> Ick, sorry for the noise!
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
>
> Yours,
> Linus Walleij

Patch applied, thanks!

Bartosz

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

end of thread, other threads:[~2021-01-27 14:47 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-20  0:45 [PATCH v1] gpio: tegra: Fix irq_set_affinity Dmitry Osipenko
2021-01-22 12:55 ` Linus Walleij
2021-01-27 14:46   ` Bartosz Golaszewski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).