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] [RFC] command/cache: Add flush_cache command
Date: Thu, 21 Mar 2013 13:22:37 -0500	[thread overview]
Message-ID: <1363890157.31522.14@snotra> (raw)
In-Reply-To: <20130321133732.209BC200547@gemini.denx.de> (from wd@denx.de on Thu Mar 21 08:37:32 2013)

On 03/21/2013 08:37:32 AM, Wolfgang Denk wrote:
> Dear Tom,
> 
> In message <20130321122923.GB26945@bill-the-cat> you wrote:
> >
> > > Not really. Only a tiny fraction of users will ever run any  
> standalone
> > > applications, so please let's save the memory footprint for the
> > > overwhelming majority of users who do not need that.
> >
> > Well, can we run into this problem on ARM (v7 or v8) systems as  
> well?
> 
> Probably.
> 
> But I wonder what the exact usage szenario is that will trigger the
> problem.  If I understand correctly, this can only happen when you
> perform a (manual) memory copy (either between different locations in
> RAM, or from parallel NOR flash to RAM) of the code you are going to
> run.

Yes, the person who is seeing this problem is copying code from flash  
to RAM.

> As far as I understand all other ways to load any such code (over the
> network or from storage devices) already make sure to run  
> flush_cache()
> after any such load operation.

A lot of places seem to have it, but it seems not everywhere.  I'm not  
aware of such a flush for NAND reads.

We could instead try to make sure everything, including commands like  
"cp" and "mm", flush cache when they're done.  This approach is more  
user friendly, though it has a higher risk of missing some code path.

> Scott: is my understanding correct that you only need this because
> you are performing such memory copy ops manually?  From where / to
> where are you copying, and why?

As above it's from flash (I assume NOR) to RAM.  The "why" is to be  
able to run the code from RAM. :-P

> Thinking about alternatives:
> 
> - eventually we should discourage the use of "go"; it may be
>   conveniend when you know what you are doing, but if it's casuing
>   such problems we might be better off recommending to use
>   proper IH_TYPE_STANDALONE legacy images in combination with the
>   bootm command instead.

That or bootelf, sure.  I think there still should be some way to do it  
manually, though.  bootm/bootelf probably wouldn't work for this use  
case because it involves releasing other cores after the image is  
copied/flushed, but before u-boot gives up control on the boot core.

> - Also, instead of adding a new command, this could probably be
>   scripted; I guess this should be roughly equivalent?
> 
>   	setenv flush_cache 'dc off;ic off;dc on;ic on'

This assumes that we support those cache operations, that they affect  
all relevant caches (on 85xx it only flushes L1, but at least on newer  
chips L2 is relevant as well), and that there are no errata or  
architectural limitations to running with caches off.

-Scott

  reply	other threads:[~2013-03-21 18:22 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-19 20:29 [U-Boot] [RFC] command/cache: Add flush_cache command York Sun
2013-03-19 22:01 ` Albert ARIBAUD
2013-03-19 22:07   ` York Sun
2013-03-19 23:32     ` Scott Wood
2013-03-20 13:59       ` Albert ARIBAUD
2013-03-20 14:58         ` Wolfgang Denk
2013-03-20 16:43           ` Scott Wood
2013-03-20 17:38             ` Albert ARIBAUD
2013-03-20 18:16               ` Scott Wood
2013-03-20 19:15             ` Tom Rini
2013-03-20 19:36               ` Scott Wood
2013-03-20 19:59                 ` Tom Rini
2013-03-20 21:31                   ` Scott Wood
2013-03-21  5:42                     ` Wolfgang Denk
2013-03-21  5:39                   ` Wolfgang Denk
2013-03-21 12:29                     ` Tom Rini
2013-03-21 13:37                       ` Wolfgang Denk
2013-03-21 18:22                         ` Scott Wood [this message]
2013-03-21 19:25                           ` Wolfgang Denk
2013-03-21 20:34                             ` Scott Wood
2013-03-22  6:30                               ` Albert ARIBAUD
2013-03-22 12:17                                 ` Tom Rini
2013-03-22 14:03                                   ` Wolfgang Denk
2013-03-22 14:29                                     ` Tom Rini
2013-03-22 15:57                                       ` Albert ARIBAUD
2013-03-22 16:48                                       ` Scott Wood
2013-03-22 17:19                                         ` Tom Rini
2013-03-22 20:39                                       ` Wolfgang Denk
2013-03-20 22:11                 ` Albert ARIBAUD
2013-03-20 22:35                   ` Scott Wood
2013-03-20 23:33                     ` Michael Cashwell
2013-03-20 23:48                       ` Scott Wood
2013-03-21  0:27                         ` Michael Cashwell
2013-03-21  0:31                           ` Scott Wood
2013-03-21  5:02                             ` Sricharan R
2013-03-21 18:51                               ` Scott Wood
2013-03-21 17:58                     ` Albert ARIBAUD
2013-03-21 18:07                       ` Scott Wood
2013-03-21 19:21                         ` Wolfgang Denk
2013-03-20 19:40               ` York Sun
2013-03-20 14:51 ` Wolfgang Denk
2013-03-20 16:44   ` Scott Wood
2013-04-03 14:02 ` Jim Chargin
2013-04-18 17:09   ` Scott Wood

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=1363890157.31522.14@snotra \
    --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