public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Mike Frysinger <vapier@gentoo.org>
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 14:07:27 -0400	[thread overview]
Message-ID: <200903171407.29266.vapier@gentoo.org> (raw)
In-Reply-To: <20090317175226.GD12636@ld0162-tx32.am.freescale.net>

On Tuesday 17 March 2009 13:52:27 Scott Wood wrote:
> On Tue, Mar 17, 2009 at 01:47:04PM -0400, Mike Frysinger wrote:
> > On Tuesday 17 March 2009 13:09:31 Scott Wood wrote:
> > > This board currently sets DBAT6 to cover all of the final 256MiB of
> > > address space; however, not all of this space is covered by a device. 
> > > In particular, flash sits at 0xfe000000-0xfe7fffff, and nothing is
> > > mapped at the far end of the address space.
> > >
> > > In zlib, there is a loop that references p[-1] if p is non-NULL.  Under
> > > some circumstances, this leads to the CPU speculatively loading from
> > > 0xfffffff8 if p is NULL.  This leads to a machine check.
> >
> > isnt that a compiler generating bad code then ?
>
> 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 */
}

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

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 ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20090317/cf151424/attachment.pgp 

  reply	other threads:[~2009-03-17 18:07 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 [this message]
2009-03-17 18:13       ` Kumar Gala
2009-03-17 18:38         ` Mike Frysinger
2009-03-17 18:18       ` Scott Wood
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=200903171407.29266.vapier@gentoo.org \
    --to=vapier@gentoo.org \
    --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