linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] irqchip: tegra: fix wrong data being passed as the irqdomain chip data
@ 2015-05-09 20:06 Lucas Stach
       [not found] ` <1431202014-3136-1-git-send-email-dev-8ppwABl0HbeELgA04lAiVw@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Lucas Stach @ 2015-05-09 20:06 UTC (permalink / raw)
  To: Thomas Gleixner, Jason Cooper, Marc Zyngier
  Cc: Stephen Warren, Thierry Reding, Alexandre Courbot, linux-kernel,
	linux-tegra

The irq chip functions use the irq chipdata directly as the base register
address of the controller, so this should be passed in instead of a pointer
to the array address holding the base address.

This fixes Tegra20 CPUidle as now the un-/masking of IRQs at the LIC level
works again, but more importantly it fixes the resulting memory corruption.

Signed-off-by: Lucas Stach <dev@lynxeye.de>
---
This is an important fix and should go into 4.1.
---
 drivers/irqchip/irq-tegra.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-tegra.c b/drivers/irqchip/irq-tegra.c
index 51c485d..f67bbd8 100644
--- a/drivers/irqchip/irq-tegra.c
+++ b/drivers/irqchip/irq-tegra.c
@@ -264,7 +264,7 @@ static int tegra_ictlr_domain_alloc(struct irq_domain *domain,
 
 		irq_domain_set_hwirq_and_chip(domain, virq + i, hwirq + i,
 					      &tegra_ictlr_chip,
-					      &info->base[ictlr]);
+					      info->base[ictlr]);
 	}
 
 	parent_args = *args;
-- 
2.1.0

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

* Re: [PATCH] irqchip: tegra: fix wrong data being passed as the irqdomain chip data
       [not found] ` <1431202014-3136-1-git-send-email-dev-8ppwABl0HbeELgA04lAiVw@public.gmane.org>
@ 2015-05-13  9:35   ` Thierry Reding
  2015-05-13 22:18   ` Stephen Warren
  1 sibling, 0 replies; 3+ messages in thread
From: Thierry Reding @ 2015-05-13  9:35 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Thomas Gleixner, Jason Cooper, Marc Zyngier, Stephen Warren,
	Alexandre Courbot, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

[-- Attachment #1: Type: text/plain, Size: 1368 bytes --]

On Sat, May 09, 2015 at 10:06:54PM +0200, Lucas Stach wrote:
> The irq chip functions use the irq chipdata directly as the base register
> address of the controller, so this should be passed in instead of a pointer
> to the array address holding the base address.
> 
> This fixes Tegra20 CPUidle as now the un-/masking of IRQs at the LIC level
> works again, but more importantly it fixes the resulting memory corruption.
> 
> Signed-off-by: Lucas Stach <dev-8ppwABl0HbeELgA04lAiVw@public.gmane.org>
> ---
> This is an important fix and should go into 4.1.
> ---
>  drivers/irqchip/irq-tegra.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

This does indeed fix a boot regression on Tegra20. Unfortunately this is
not exposed on any platform that uses PCIe because PCIe needs to disable
the CPUidle LP2 state as a workaround for a hardware bug. However, I was
able to reproduce the regression on TrimSlice by disabling PCIe, hence
keeping CPUidle LP2 activated. I reproduced with v4.1-rc3 and applying
this patch on top restores functionality.

Thanks for tracking this down Lucas.

I just noticed that Thomas already applied this while I was testing it,
but here goes anyway:

Tested-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Acked-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]

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

* Re: [PATCH] irqchip: tegra: fix wrong data being passed as the irqdomain chip data
       [not found] ` <1431202014-3136-1-git-send-email-dev-8ppwABl0HbeELgA04lAiVw@public.gmane.org>
  2015-05-13  9:35   ` Thierry Reding
@ 2015-05-13 22:18   ` Stephen Warren
  1 sibling, 0 replies; 3+ messages in thread
From: Stephen Warren @ 2015-05-13 22:18 UTC (permalink / raw)
  To: Lucas Stach
  Cc: Thomas Gleixner, Jason Cooper, Marc Zyngier, Thierry Reding,
	Alexandre Courbot, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA

On 05/09/2015 02:06 PM, Lucas Stach wrote:
> The irq chip functions use the irq chipdata directly as the base register
> address of the controller, so this should be passed in instead of a pointer
> to the array address holding the base address.
>
> This fixes Tegra20 CPUidle as now the un-/masking of IRQs at the LIC level
> works again, but more importantly it fixes the resulting memory corruption.

Tested-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

Tested on NVIDIA Seaboard (which is affected by the bug in the default 
configuration/DT) with the patch applied on to of 4.1-rc3.

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

end of thread, other threads:[~2015-05-13 22:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-09 20:06 [PATCH] irqchip: tegra: fix wrong data being passed as the irqdomain chip data Lucas Stach
     [not found] ` <1431202014-3136-1-git-send-email-dev-8ppwABl0HbeELgA04lAiVw@public.gmane.org>
2015-05-13  9:35   ` Thierry Reding
2015-05-13 22:18   ` Stephen Warren

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).