public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] 8313erdb: Set guarded bit on BAT that covers the end of the address space.
Date: Tue, 17 Mar 2009 13:18:13 -0500	[thread overview]
Message-ID: <49BFE965.40904@freescale.com> (raw)
In-Reply-To: <200903171407.29266.vapier@gentoo.org>

Mike Frysinger wrote:
>> No.  The dereference was on a not-taken side of a conditional branch.
> 
> you mean in the shadow ?  so something like:
> p = NULL;
> if (p != NULL) {
> 	/* this is the shadow region */
> }

Yes.

>>> if C code is doing ptr checks, the compiler should make sure that
>>> pointer is not dereferenced at all if the hardware cannot suffer the
>>> consequences, even speculatively.
>> There is no reasonable way for the compiler to prevent such speculative
>> accesses.  Non-memory-like mappings must have the guarded bit set.  That
>> is what the bit is there for.
> 
> if the hardware doesnt have a way of preventing it, then the compiler must nop 
> bad accesses that are unknown.

The hardware *does* have a way of preventing it.  It's the guarded bit. :-)

I don't know of any amount of "nop" instructions that would be 
architecturally guaranteed to avoid this -- they're no-ops, not syncs 
(despite how some other architectures use them).  They can be discarded 
as fast as the chip can decode them.

Adding an isync instruction should avoid it, but that's a heavy 
performance penalty.  Why pay it for all accesses rather than just those 
which are not memory-like (and can be flagged as such in the TLB)?

> i'm not sure your example proves your position.  if you have a region that 
> cannot stand speculative access, how do you handle bad pointer checking if the 
> compiler may generate code that'll speculatively hit it at any time ?

The compiler is not speculatively doing anything.  It is the CPU -- and 
the guarded bit tells it to not do that.

-Scott

  parent reply	other threads:[~2009-03-17 18:18 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-17 17:09 [U-Boot] [PATCH] 8313erdb: Set guarded bit on BAT that covers the end of the address space Scott Wood
2009-03-17 17:43 ` Anton Vorontsov
2009-03-17 19:49   ` Scott Wood
2009-03-17 20:12     ` Anton Vorontsov
2009-03-17 17:47 ` Mike Frysinger
2009-03-17 17:52   ` Scott Wood
2009-03-17 18:07     ` Mike Frysinger
2009-03-17 18:13       ` Kumar Gala
2009-03-17 18:38         ` Mike Frysinger
2009-03-17 18:18       ` Scott Wood [this message]
2009-03-17 18:46         ` Mike Frysinger
2009-03-17 19:11           ` Scott Wood
2009-03-18 12:53           ` Jerry Van Baren
2009-03-18  7:41 ` Norbert van Bolhuis
2009-03-23  9:51   ` Liu Dave-R63238
2009-03-30 22:56 ` Kim Phillips

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=49BFE965.40904@freescale.com \
    --to=scottwood@freescale.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox