public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Sughosh Ganu <urwithsughosh@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2 V2] arm926: Flush the data cache before disabling it.
Date: Fri, 13 Jan 2012 13:56:18 +0530	[thread overview]
Message-ID: <20120113082618.GA1557@Hardy> (raw)
In-Reply-To: <CABkLObrx09BbOM=eHgS0b=Hkoux=i7iT0je452ThJ1SGVSMMug@mail.gmail.com>

hi Christian,

On Fri Jan 13, 2012 at 09:06:26AM +0100, Christian Riesch wrote:
> Hi Sughosh,
> I had a look at the patch and I tried to understand what's going on
> here (I must confess that I didn't know anything about this cache
> stuff).

  Ok, thanks for taking time off to understand this issue.

> 
> On Tue, Jan 10, 2012 at 7:12 PM, Sughosh Ganu <urwithsughosh@gmail.com> wrote:
> > The current implementation invalidates the cache instead of flushing
> > it. This causes problems on platforms where the spl/u-boot is already
> > loaded to the RAM, with caches enabled by a first stage bootloader.
> >
> > The V bit of the cp15's control register c1 is set to the value of
> > VINITHI on reset. Do not clear this bit by default, as there are SOC's
> > with no valid memory region at 0x0.
> [...]
> > diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
> > index 6a09c02..6e261c2 100644
> > --- a/arch/arm/cpu/arm926ejs/start.S
> > +++ b/arch/arm/cpu/arm926ejs/start.S
> > @@ -355,17 +355,20 @@ _dynsym_start_ofs:
> > ?*/
> > ?cpu_init_crit:
> > ? ? ? ?/*
> > - ? ? ? ?* flush v4 I/D caches
> > + ? ? ? ?* flush D cache before disabling it
> > ? ? ? ? */
> > ? ? ? ?mov ? ? r0, #0
> > - ? ? ? mcr ? ? p15, 0, r0, c7, c7, 0 ? /* flush v3/v4 cache */
> > +flush_dcache:
> > + ? ? ? mrc ? ? p15, 0, r15, c7, c10, 3
> > + ? ? ? bne ? ? flush_dcache
> > +
> 
> Ok, instead of invalidating the D-cache you are cleaning it. From the
> ARM926EJ-S Technical Reference Manual [1]: "To guarantee that memory
> coherency is maintained, the DCache must be cleaned of dirty data
> before it is disabled." So since we are disabling D-Cache a few lines
> later (bic r0, r0, #0x00000087), this must be the right way to do it.

  Right, so the problem here is that instead of flushing the cache,
  the code currently invalidates it. This would not be a problem on
  platforms where cache is not turned ON(which would be the majority
  of cases), but on my board, it seems to be turned ON by the rbl,
  due to which it does not boot.

  If you check the manual, the loop that i have introduced is one for
  "Testing and Cleaning", which means that in case the lines are not
  dirty, it won't be flushed. So this should not break any platforms
  where the cache isn't enabled.

> 
> > ? ? ? ?mcr ? ? p15, 0, r0, c8, c7, 0 ? /* flush v4 TLB */
> >
> > ? ? ? ?/*
> > ? ? ? ? * disable MMU stuff and caches
> > ? ? ? ? */
> > ? ? ? ?mrc ? ? p15, 0, r0, c1, c0, 0
> > - ? ? ? bic ? ? r0, r0, #0x00002300 ? ? /* clear bits 13, 9:8 (--V- --RS) */
> > + ? ? ? bic ? ? r0, r0, #0x00000300 ? ? /* clear bits 9:8 ( --RS) */
> 
> Ok, I read your comment above.
> 
> > ? ? ? ?bic ? ? r0, r0, #0x00000087 ? ? /* clear bits 7, 2:0 (B--- -CAM) */
> > ? ? ? ?orr ? ? r0, r0, #0x00000002 ? ? /* set bit 2 (A) Align */
> > ? ? ? ?orr ? ? r0, r0, #0x00001000 ? ? /* set bit 12 (I) I-Cache */
> 
> Although this is not changed in your patch, the last line makes me
> wonder. The comment says "disable MMU stuff and cached", but actually
> the last line sets bit 12 (I), which means that I-Cache gets enabled
> according to [1].

  Yeah, this seems to be copied code, with discrepancies in the code
  and comments. You would see that the line i have removed has a
  comment for flushing the cache, but instead it is invalidating the
  cache. I have just fixed the comments for the lines that i made
  changes to.

-sughosh

  reply	other threads:[~2012-01-13  8:26 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-09 18:25 [U-Boot] [PATCH 1/2] Flush the date cache before disabling it Sughosh Ganu
2012-01-09 18:41 ` Mike Frysinger
2012-01-09 18:51   ` Sughosh Ganu
2012-01-10 18:12 ` [U-Boot] [PATCH 1/2 V2] arm926: Flush the data " Sughosh Ganu
2012-01-10 20:07   ` Marek Vasut
2012-01-11  6:20     ` Sughosh Ganu
2012-01-11 10:47       ` Marek Vasut
2012-01-11 12:11         ` Sughosh Ganu
2012-01-11 12:42           ` Marek Vasut
2012-01-11 13:31             ` Sughosh Ganu
2012-01-11 13:51               ` Marek Vasut
2012-01-11 13:52                 ` Marek Vasut
2012-01-11 14:50                   ` Sughosh Ganu
2012-01-11 15:01                     ` Marek Vasut
2012-01-11 15:09                       ` Sughosh Ganu
2012-01-11 18:50                         ` Marek Vasut
2012-01-11 21:07                           ` Christian Riesch
2012-01-11 22:13                             ` Marek Vasut
2012-01-12  5:56                               ` Christian Riesch
2012-01-12  6:29                                 ` Sughosh Ganu
2012-01-14  9:09                                   ` Albert ARIBAUD
2012-01-14 17:18                                     ` Christian Riesch
2012-01-12 12:03   ` Christian Riesch
2012-01-12 13:53     ` Sughosh Ganu
2012-01-12 14:04       ` Christian Riesch
2012-01-12 14:43         ` Sughosh Ganu
2012-01-14 17:20           ` Christian Riesch
2012-01-14 18:02             ` Sughosh Ganu
2012-01-13  8:06   ` Christian Riesch
2012-01-13  8:26     ` Sughosh Ganu [this message]
2012-01-13 14:41       ` Tom Rini
2012-01-13 17:23         ` Sughosh Ganu
2012-01-13 15:29       ` Heiko Schocher
2012-01-13 17:38         ` Sughosh Ganu
2012-01-13 18:19           ` Aneesh V
2012-01-14  7:45             ` Sughosh Ganu
2012-01-15  8:13           ` Heiko Schocher
2012-01-16 17:57           ` Tom Rini
2012-01-17  6:39             ` Heiko Schocher
2012-01-17  6:46             ` Sughosh Ganu
2012-01-17 15:27               ` Tom Rini
2012-01-19  6:53                 ` Sughosh Ganu
2012-01-19 10:17                   ` Aneesh V
2012-01-19 11:30                     ` Christian Riesch
2012-01-19 11:54                       ` Aneesh V
2012-01-20  7:28                         ` Christian Riesch
2012-01-20  8:52                           ` Aneesh V
2012-01-20  9:21                             ` Christian Riesch
2012-01-20 12:13                               ` Aneesh V
2012-01-20 12:48                                 ` Christian Riesch
2012-01-20 13:06                                   ` Aneesh V
2012-01-27 18:33                                     ` Tom Rini
2012-01-29 13:36                                       ` Christian Riesch
2012-01-30  6:39                                         ` Heiko Schocher
2012-01-30  8:10                                           ` Christian Riesch
2012-01-30  9:04                                             ` Sughosh Ganu
2012-01-30 10:38                                           ` Christian Riesch
2012-01-30  7:06                                         ` Sughosh Ganu
2012-01-30 17:03                                         ` Tom Rini
2012-01-31  4:09                                           ` Sughosh Ganu
2012-01-31 13:58                                           ` Christian Riesch
2012-01-20 11:56                           ` Tom Rini
2012-01-13 15:06     ` Heiko Schocher
2012-01-13 17:22       ` Sughosh Ganu
2012-01-14  7:49   ` [U-Boot] [PATCH 1/2 V3] " Sughosh Ganu
2012-01-14  9:02     ` Albert ARIBAUD
2012-01-14  9:21       ` Sughosh Ganu
2012-01-14 10:34         ` Albert ARIBAUD
2012-01-14 14:02     ` [U-Boot] [PATCH 1/2 V4] " Sughosh Ganu
2012-02-18 15:41       ` Albert ARIBAUD
2012-02-18 18:51         ` [U-Boot] [PATCH 1/2 V3] " Christian Riesch
2012-02-19  8:31           ` Albert ARIBAUD
2012-01-20  9:22   ` [U-Boot] [PATCH 1/2 V2] " James W.

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=20120113082618.GA1557@Hardy \
    --to=urwithsughosh@gmail.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