All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: David Laight <David.Laight@ACULAB.COM>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] powerpc/fsl-booke: Work around erratum A-006958
Date: Tue, 16 Jul 2013 13:16:40 -0500	[thread overview]
Message-ID: <1373998600.8183.334@snotra> (raw)
In-Reply-To: <AE90C24D6B3A694183C094C60CF0A2F6026B72E2@saturn3.aculab.com> (from David.Laight@ACULAB.COM on Tue Jul 16 03:28:06 2013)

On 07/16/2013 03:28:06 AM, David Laight wrote:
> > On 07/15/2013 11:53:54 AM, Scott Wood wrote:
> > > On 07/15/2013 03:45:36 AM, David Laight wrote:
> > >> Also, if the high word changes, there is no need to loop.
> > >> Just return the second value with a low word of zero
> > >> (the returned count happened while the function was active).
> > >
> > > That would be more complicated than looping.
>=20
> I'm not that familiar with the ppc instructions set, but on x86
> the equivalent instructions are synchronising ones - so can have
> performance penalties, so a few extra 'normal' instructions to
> avoid re-reading the timebase counter may be worth while.

The core manual doesn't list any special syncronization for it, though =20
it does take 4 cycles.

> The branch for the loop might also be statically predicted 'taken'
> leading to a branch misprediction penalty as well.

The branch predictor should work fine most of the time.

> > That said, it's since been confirmed internally that the low word
> > should always be zero when this happens, so we could share the Cell
> > workaround code -- as long as we do something special in the =20
> timebase
> > sync code so that we don't get stuck if the timebase happens to be
> > frozen with TBL=3D=3D0.  This would avoid the need for scratch register=
s
> > (other than CR0).
>=20
> Yes - if the actual errata is that the low word is read one clock
> later then the high word then the only illegal value is one where
> the low word is zero.

It's actually the timebase itself that is updated in the low word =20
first...

> In that case it is sufficient to reread the counter - it can't be
> wrong again!

...which means, while it *probably* won't be wrong again, I'd want a =20
statement from the hardware people that this is guaranteed if we were =20
to rely on it.

The workaround for a similar bug on Cell rereads until the lower half =20
is non-zero, which will be fine as long as we avoid the workaround in =20
timebase sync code (when the timebase is frozen).

-Scott=

      reply	other threads:[~2013-07-16 18:17 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-13  1:03 [PATCH] powerpc/fsl-booke: Work around erratum A-006958 Scott Wood
2013-07-15  6:03 ` Aneesh Kumar K.V
2013-07-15 16:55   ` Scott Wood
2013-07-15  8:45 ` David Laight
2013-07-15 16:53   ` Scott Wood
2013-07-15 22:15     ` Scott Wood
2013-07-16  8:28       ` David Laight
2013-07-16 18:16         ` Scott Wood [this message]

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=1373998600.8183.334@snotra \
    --to=scottwood@freescale.com \
    --cc=David.Laight@ACULAB.COM \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /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.