[U-Boot] [PATCH] 8313erdb: Set guarded bit on BAT that covers the end of the address space.

Mike Frysinger vapier at gentoo.org
Tue Mar 17 19:46:54 CET 2009


On Tuesday 17 March 2009 14:18:13 Scott Wood wrote:
> Mike Frysinger wrote:
> >>> 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.

right, it depends on the pipeline.  some let the nops force the address decode 
stages to get filled so they dont get speculatively filled and then fetched.  
sounds like the ppc pipeline doesnt operate that way.

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

right, if the mappings allow speculative fetches to be turned off for certain 
regions, that's the way to go

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

i didnt mean the compiler was doing it.  i meant the compiler generates dense 
code that the hardware turns around and speculatively loads.

the change sounded like you were addressing a specific issue that was noticed, 
but other regions could still (in general) cause problems.  but i guess that 
isnt the case at all.

thanks for the info
-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/339e2fbf/attachment.pgp 


More information about the U-Boot mailing list