All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Kocialkowski <contact@paulk.fr>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] omap3: ARM Cortex-A8 errata workarounds config option
Date: Sun, 22 Feb 2015 17:02:30 +0100	[thread overview]
Message-ID: <1424620950.2452.20.camel@collins> (raw)
In-Reply-To: <1424619912.2452.14.camel@collins>

Le dimanche 22 f?vrier 2015 ? 16:45 +0100, Paul Kocialkowski a ?crit :
> > > Workarounds applied in omap3_setup_aux_cr are only necessary for ARM core
> > > revisions prior to r3p2 (such as OMAP35xx but apparently not OMAP36xx and
> > > DM37xx)
> > 
> > If this is true, I can see some (potential) problems with the patch.
> > Please, check out my thoughts on this below.
> 
> In any case, those workarounds were already enabled before, so it won't
> cause any regression. As it is now, the patch doesn't change anything,
> it just opens up the possibility of not using
> CONFIG_SYS_ARM_CORTEXA8_ERRATA for a board that doesn't need the
> workarounds and has them disabled in the kernel.
> 
> > > and require similar workarounds in the kernel, or it will cause numerous
> > > segmentation faults. This allows (when the option is not used) properly booting
> > > kernels that do not include the workaround.
> > > 
> > > Follow-up to the discussion from July 2013:
> > > http://lists.denx.de/pipermail/u-boot/2013-July/158377.html
> > > 
> > > Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
> > > ---
> > >  README                             | 8 ++++++++
> > >  arch/arm/cpu/armv7/omap3/board.c   | 2 ++
> > >  include/configs/am3517_crane.h     | 2 ++
> > >  include/configs/am3517_evm.h       | 2 ++
> > >  include/configs/cm_t35.h           | 2 ++
> > >  include/configs/cm_t3517.h         | 2 ++
> > >  include/configs/dig297.h           | 2 ++
> > >  include/configs/mcx.h              | 2 ++
> > >  include/configs/nokia_rx51.h       | 2 ++
> > >  include/configs/omap3_evm_common.h | 2 ++
> > >  include/configs/omap3_logic.h      | 2 ++
> > >  include/configs/omap3_mvblx.h      | 2 ++
> > >  include/configs/omap3_pandora.h    | 2 ++
> > >  include/configs/omap3_sdp3430.h    | 2 ++
> > >  include/configs/omap3_zoom1.h      | 2 ++
> > >  include/configs/tam3517-common.h   | 2 ++
> > >  include/configs/tao3530.h          | 2 ++
> > >  include/configs/ti_omap3_common.h  | 2 ++
> > >  include/configs/tricorder.h        | 2 ++
> > >  19 files changed, 44 insertions(+)
> > > 
> > > diff --git a/README b/README
> > > index ba57dc5..a39420d 100644
> > > --- a/README
> > > +++ b/README
> > > @@ -621,6 +621,14 @@ The following options need to be configured:
> > >  		exists, unlike the similar options in the Linux kernel. Do not
> > >  		set these options unless they apply!
> > >  
> > > +		CONFIG_SYS_ARM_CORTEXA8_ERRATA
> > > +
> > > +		Enables workarounds for ARM Cortex-A8 errata 454179, 430973
> > > +		and 621766. This is only necessary for ARM core revisions prior
> > > +		to r3p2. Enabling those workarounds requires to enable the same
> > > +		workarounds in the kernel, or it will cause multiple
> > > +		segmentation faults. This is currently only effective on OMAP3.
> > > +
> > >  - Driver Model
> > >  		Driver model is a new framework for devices in U-Boot
> > >  		introduced in early 2014. U-Boot is being progressively
> > > diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c
> > > index 90d6ae7..813f35b 100644
> > > --- a/arch/arm/cpu/armv7/omap3/board.c
> > > +++ b/arch/arm/cpu/armv7/omap3/board.c
> > > @@ -246,8 +246,10 @@ void s_init(void)
> > >  
> > >  	try_unlock_memory();
> > >  
> > > +#ifdef CONFIG_SYS_ARM_CORTEXA8_ERRATA
> > >  	/* Errata workarounds */
> > >  	omap3_setup_aux_cr();
> > 
> > Can we have the revision dynamically checked instead of/along with
> > introducing a config option?
> > We have boards, OMAP3 based, which are supported by the same board file
> > and the same config file, see below.
> 
> After carefully looking at it, I think dynamically checking the revision
> might be the cleanest way to do this.
> 
> I was afraid that, in the case where the workarounds are disabled in
> u-boot but enabled in Linux, the same various segmentation faults would
> happen, but they apparently don't, as I just tested.
> 
> Thus, checking the revision should work best. According to the code in
> Linux, this only affects r1p* ARM core revisions, so that's what I'll be
> checking against.

Looking at the Linux code more closely, it shows that erratum 430973
only affects r1p* and erratum 458693 only affects r2p0.

Now in U-Boot, everything is mixed together and while erratum 458693 is
not mentionned, it does set the L1NEON bit to 1 like the workaround for
erratum 458693 does in Linux.

What do you think I should do here? Follow the Linux way (split it up)
or settle on applying both things for revisions <= r2p0.

> Thanks for your comments!
> 
> > > +#endif
> > >  
> > >  #ifndef CONFIG_SYS_L2CACHE_OFF
> > >  	/* Invalidate L2-cache from secure mode */
> > 
> > [...]
> > 
> > > diff --git a/include/configs/cm_t35.h b/include/configs/cm_t35.h
> > > index b2a9f35..150b419 100644
> > > --- a/include/configs/cm_t35.h
> > > +++ b/include/configs/cm_t35.h
> > > @@ -38,6 +38,8 @@
> > >  #define CONFIG_DISPLAY_CPUINFO
> > >  #define CONFIG_DISPLAY_BOARDINFO
> > >  
> > > +#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
> > 
> > This config file is used for both cm-t35 and cm-t3730.
> > cm-t35 has OMAP3530, but cm-t3730 has DM3730. 
> > The same U-Boot binary is used for both boards.
> > 
> > > +
> > >  /* Clock Defines */
> > >  #define V_OSCK			26000000	/* Clock output from T2 */
> > >  #define V_SCLK			(V_OSCK >> 1)
> > 
> > [...]
> > 
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150222/1572486e/attachment.sig>

  parent reply	other threads:[~2015-02-22 16:02 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-22 11:36 [U-Boot] [PATCH] omap3: ARM Cortex-A8 errata workarounds config option Paul Kocialkowski
2015-02-22 12:06 ` Igor Grinberg
2015-02-22 15:45   ` Paul Kocialkowski
2015-02-22 15:55     ` Paul Kocialkowski
2015-02-22 16:02     ` Paul Kocialkowski [this message]
2015-02-22 16:42       ` [U-Boot] [PATCH v2] omap3: Variant and revision checks for ARM Cortex-A8 errata workarounds Paul Kocialkowski
2015-02-23 11:09         ` Igor Grinberg
2015-02-23 15:07           ` Paul Kocialkowski
2015-02-23 19:16             ` [U-Boot] [PATCH] " Paul Kocialkowski
2015-02-23 22:21               ` Tom Rini
2015-02-23 22:43                 ` Nishanth Menon
2015-02-24 12:02                   ` Paul Kocialkowski
2015-02-24 15:22                     ` Nishanth Menon
2015-02-24 16:09                       ` Paul Kocialkowski
2015-02-24 23:02                         ` Nishanth Menon

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=1424620950.2452.20.camel@collins \
    --to=contact@paulk.fr \
    --cc=u-boot@lists.denx.de \
    /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.