All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Henrik Nordström" <henrik@henriknordstrom.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] ARM v7: Flush icache when executing a program with go
Date: Thu, 16 May 2013 03:54:38 +0200	[thread overview]
Message-ID: <1368669278.27007.43.camel@localhost> (raw)
In-Reply-To: <20130515193959.69aa9d64@lilith>

ons 2013-05-15 klockan 19:39 +0200 skrev Albert ARIBAUD:



> I understand all this, but what I am interested in is the root issue.
> 
> IIUC, the problem is that some code is loaded in DDR, and the CPU is
> about to jump to it, but its instruction cache is enabled so maybe some
> instructions after 'go' will be (wrongly) fetched from I-cache instead
> of being read from DDR (and fed into I-cache).

Yes.

> Nothing in this is ARMv7 specific; it could happen in an arm926ejs just
> as well. It could happen on any CPU with distinct, non-consistent I-
> and D- caches an enabled I-cache.

Correct on all accounts.

> So my suggestion is to implement the icache_flush in common/bmmt_cmd.c
> as follows:
> 
> ...
> /* just about to 'go' */
> #if CONFIG_ARM
> #if CONFIG_ICACHE
> if (icache_status())
> 	invalidate_icache_all();
> #endif /* CONFIG_ICACHE */
> #endif /* CONFIG_ARM */
> /* now go */

This style is a nightmare for adding more arches needing this, but
solves the problem today.

But there is no CONFIG_ICACHE. In ARM there is CONFIG_SYS_ICACHE_OFF but
it's not quite the same.

  reply	other threads:[~2013-05-16  1:54 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-14 14:16 [U-Boot] ARM v7: Flush icache when executing a program with go Henrik Nordström
2013-05-15 15:11 ` Albert ARIBAUD
2013-05-15 16:34   ` Henrik Nordström
2013-05-15 16:44     ` Albert ARIBAUD
2013-05-15 16:51       ` Tom Rini
2013-05-15 17:39         ` Albert ARIBAUD
2013-05-16  1:54           ` Henrik Nordström [this message]
2013-05-16  7:14             ` Wolfgang Denk
2013-05-16 13:37               ` Tom Rini
2013-05-16 15:37                 ` Henrik Nordström
2013-05-16 22:13                   ` Wolfgang Denk
2013-05-17 12:16                     ` Henrik Nordström
2013-05-20  0:55                       ` Kuo-Jung Su
2013-05-21 12:37                         ` Wolfgang Denk
2013-05-21 12:26                       ` Wolfgang Denk
2013-05-21 21:57                         ` Henrik Nordström
2013-05-21 12:38                   ` Kees Jongenburger
2013-05-21 16:45                     ` Albert ARIBAUD

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=1368669278.27007.43.camel@localhost \
    --to=henrik@henriknordstrom.net \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.