[U-Boot] [RFC] command/cache: Add flush_cache command

Scott Wood scottwood at freescale.com
Thu Mar 21 19:07:55 CET 2013


On 03/21/2013 12:58:37 PM, Albert ARIBAUD wrote:
> Hi Scott,
> 
> On Wed, 20 Mar 2013 17:35:51 -0500, Scott Wood
> <scottwood at freescale.com> wrote:
> 
> > On 03/20/2013 05:11:57 PM, Albert ARIBAUD wrote:
> > > Hi Scott,
> > >
> > > On Wed, 20 Mar 2013 14:36:05 -0500, Scott Wood
> > > <scottwood at freescale.com> wrote:
> > >
> > > > On 03/20/2013 02:15:19 PM, Tom Rini wrote:
> > > > > On Wed, Mar 20, 2013 at 11:43:15AM -0500, Scott Wood wrote:
> > > > > > On 03/20/2013 09:58:36 AM, Wolfgang Denk wrote:
> > > > > > >Dear Albert,
> > > > > > >
> > > > > > >In message <20130320145927.2031b913 at lilith> you wrote:
> > > > > > >>
> > > > > > >> I do understand what it does, but I still don't get why  
> it
> > > > > should be
> > > > > > >> done, since precisely payload control transfer happens
> > > through
> > > > > > >bootm and
> > > > > > >> the like which already properly flush cache.
> > > > > >
> > > > > > It doesn't always happen through bootm.  Standalone apps  
> use the
> > > > > > "go" command.
> > > > >
> > > > > So, to try and be a bit more verbose about this, for U-Boot
> > > > > applications
> > > > > which use 'go', we still need to ensure cache coherence,  
> which is
> > > why
> > > > > bootm does a cache flush, we need some way to flush in this  
> case.
> > > >
> > > > It's also an issue with using the "cpu <n> release" command.
> > > >
> > > > > And in this case you aren't better served by say bootelf ?
> > > >
> > > > That wouldn't handle the "cpu release" case.  In any case, "go"
> > > exists
> > > > and is currently the recommended way to launch a standalone
> > > application
> > > > in doc/README.standalone.
> > > >
> > > > > > It's a user command!  How can it be dead code?  I don't  
> know of
> > > a
> > > > > > way to include a human user in a patchset...
> > > > >
> > > > > Can you hightlight what exactly causes the world today to go  
> off
> > > and
> > > > > fail?  Is the hello_world example app sufficient in this case  
> or
> > > do we
> > > > > need something much larger?
> > > >
> > > > A user inside Freescale is running standalone performance test  
> apps,
> > > > using both "go" and "cpu <n> release" (since the test needs to  
> run
> > > on
> > > > all CPUs).  They are seeing cache problems running on a T4240 if
> > > they
> > > > don't have this flush.  This flush is architecturally required
> > > between
> > > > modifying/loading code and running it.
> > >
> > > Still, why make it a shell command? Since this user needs a flush  
> with
> > > "go" and "cpu release", then we should add a programmatic global  
> cache
> > > flush in the "go" and "cpu release" commands.
> >
> > Why add any new commands?  They could all be subcommands of bootm!  
> :-)
> 
> I did not say "subcommand", I said "programmatic" -- precisely, I  
> don't
> like the idea that a specific command or command form is needed to
> avoid a situation that can be avoided automatically.

bootm subcommands are programmatic in normal use cases.

> > Really, instead of adding one command, you want to modify *two*
> > commands to do the same thing separately, which involves changing  
> the
> > syntax of both commands to accept memory range information?
> 
> There is no need to change any syntax.

Then how would we know what range to flush?

-Scott


More information about the U-Boot mailing list