linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 4/4] ARM: apply the l2x0 Errata 769419 at run time
@ 2013-01-21 13:17 srinidhi kasagar
  2013-01-21 16:12 ` Russell King - ARM Linux
  0 siblings, 1 reply; 4+ messages in thread
From: srinidhi kasagar @ 2013-01-21 13:17 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: srinidhi kasagar <srinidhi.kasagar@stericsson.com>
---
 arch/arm/kernel/process.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index c6dec5f..c94d84f 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -39,6 +39,7 @@
 #include <asm/thread_notify.h>
 #include <asm/stacktrace.h>
 #include <asm/mach/time.h>
+#include <asm/hardware/cache-l2x0.h>
 
 #ifdef CONFIG_CC_STACKPROTECTOR
 #include <linux/stackprotector.h>
@@ -201,9 +202,11 @@ void cpu_idle(void)
 			 * to ensure we don't miss a wakeup call.
 			 */
 			local_irq_disable();
-#ifdef CONFIG_PL310_ERRATA_769419
-			wmb();
-#endif
+
+			/* Check for PL310 ERRATA 769419 */
+			if (l2x0_get_rtl_release() == L2X0_CACHE_ID_RTL_R3P0)
+				wmb();
+
 			if (hlt_counter) {
 				local_irq_enable();
 				cpu_relax();
-- 
1.7.2.dirty

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

* [PATCH 4/4] ARM: apply the l2x0 Errata 769419 at run time
  2013-01-21 13:17 [PATCH 4/4] ARM: apply the l2x0 Errata 769419 at run time srinidhi kasagar
@ 2013-01-21 16:12 ` Russell King - ARM Linux
  2013-01-22  5:59   ` Srinidhi Kasagar
  0 siblings, 1 reply; 4+ messages in thread
From: Russell King - ARM Linux @ 2013-01-21 16:12 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jan 21, 2013 at 06:47:12PM +0530, srinidhi kasagar wrote:
> Signed-off-by: srinidhi kasagar <srinidhi.kasagar@stericsson.com>
> ---
>  arch/arm/kernel/process.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
> index c6dec5f..c94d84f 100644
> --- a/arch/arm/kernel/process.c
> +++ b/arch/arm/kernel/process.c
> @@ -39,6 +39,7 @@
>  #include <asm/thread_notify.h>
>  #include <asm/stacktrace.h>
>  #include <asm/mach/time.h>
> +#include <asm/hardware/cache-l2x0.h>
>  
>  #ifdef CONFIG_CC_STACKPROTECTOR
>  #include <linux/stackprotector.h>
> @@ -201,9 +202,11 @@ void cpu_idle(void)
>  			 * to ensure we don't miss a wakeup call.
>  			 */
>  			local_irq_disable();
> -#ifdef CONFIG_PL310_ERRATA_769419
> -			wmb();
> -#endif
> +
> +			/* Check for PL310 ERRATA 769419 */
> +			if (l2x0_get_rtl_release() == L2X0_CACHE_ID_RTL_R3P0)
> +				wmb();

You have to be joking if you think that is suitable... two reasons:

1. It's a horrid layering violation.
2. l2x0_get_rtl_release() unconditionally reads from a register in the L2
   controller.  What if you don't have a L2 controller?

Is it really worth this hastle, or would it just be better to keep the
ifdef there, using the configuration symbol as a way to indicate whether
we want this work-around included in the kernel, and always have the
wmb() there if the symbol is enabled?

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

* [PATCH 4/4] ARM: apply the l2x0 Errata 769419 at run time
  2013-01-21 16:12 ` Russell King - ARM Linux
@ 2013-01-22  5:59   ` Srinidhi Kasagar
  2013-01-22  9:43     ` Russell King - ARM Linux
  0 siblings, 1 reply; 4+ messages in thread
From: Srinidhi Kasagar @ 2013-01-22  5:59 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jan 21, 2013 at 17:12:02 +0100, Russell King - ARM Linux wrote:
> On Mon, Jan 21, 2013 at 06:47:12PM +0530, srinidhi kasagar wrote:
> > Signed-off-by: srinidhi kasagar <srinidhi.kasagar@stericsson.com>
> > ---
> >  arch/arm/kernel/process.c |    9 ++++++---
> >  1 files changed, 6 insertions(+), 3 deletions(-)
> > 
> > diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
> > index c6dec5f..c94d84f 100644
> > --- a/arch/arm/kernel/process.c
> > +++ b/arch/arm/kernel/process.c
> > @@ -39,6 +39,7 @@
> >  #include <asm/thread_notify.h>
> >  #include <asm/stacktrace.h>
> >  #include <asm/mach/time.h>
> > +#include <asm/hardware/cache-l2x0.h>
> >  
> >  #ifdef CONFIG_CC_STACKPROTECTOR
> >  #include <linux/stackprotector.h>
> > @@ -201,9 +202,11 @@ void cpu_idle(void)
> >  			 * to ensure we don't miss a wakeup call.
> >  			 */
> >  			local_irq_disable();
> > -#ifdef CONFIG_PL310_ERRATA_769419
> > -			wmb();
> > -#endif
> > +
> > +			/* Check for PL310 ERRATA 769419 */
> > +			if (l2x0_get_rtl_release() == L2X0_CACHE_ID_RTL_R3P0)
> > +				wmb();
> 
> You have to be joking if you think that is suitable... two reasons:
> 
> 1. It's a horrid layering violation.
> 2. l2x0_get_rtl_release() unconditionally reads from a register in the L2
>    controller.  What if you don't have a L2 controller?

my bad, this can be fixed. Thank you.

> 
> Is it really worth this hastle, or would it just be better to keep the
> ifdef there, using the configuration symbol as a way to indicate whether
> we want this work-around included in the kernel, and always have the
> wmb() there if the symbol is enabled?
We can keep the ifdef there, my idea was to completely eliminate these
CONFIG_PL310_ERRATA_*. The problem comes when you have a single defconfig
for two platforms (ex, ST-E's 8500 and 8540) where one platform needs
this and the other don't.

regards/srinidhi

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

* [PATCH 4/4] ARM: apply the l2x0 Errata 769419 at run time
  2013-01-22  5:59   ` Srinidhi Kasagar
@ 2013-01-22  9:43     ` Russell King - ARM Linux
  0 siblings, 0 replies; 4+ messages in thread
From: Russell King - ARM Linux @ 2013-01-22  9:43 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jan 22, 2013 at 11:29:17AM +0530, Srinidhi Kasagar wrote:
> On Mon, Jan 21, 2013 at 17:12:02 +0100, Russell King - ARM Linux wrote:
> > Is it really worth this hastle, or would it just be better to keep the
> > ifdef there, using the configuration symbol as a way to indicate whether
> > we want this work-around included in the kernel, and always have the
> > wmb() there if the symbol is enabled?
> We can keep the ifdef there, my idea was to completely eliminate these
> CONFIG_PL310_ERRATA_*. The problem comes when you have a single defconfig
> for two platforms (ex, ST-E's 8500 and 8540) where one platform needs
> this and the other don't.

And the answer is... if you don't need it at all in the kernel, because
none of your platforms need it, you can eliminate it.  If one of your
platforms needs it, it's probably best to compile it in and make it
unconditional there.

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

end of thread, other threads:[~2013-01-22  9:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-21 13:17 [PATCH 4/4] ARM: apply the l2x0 Errata 769419 at run time srinidhi kasagar
2013-01-21 16:12 ` Russell King - ARM Linux
2013-01-22  5:59   ` Srinidhi Kasagar
2013-01-22  9:43     ` Russell King - ARM Linux

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