All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jian Luo <Jian.Luo4@boschrexroth.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] arm: socfpga: dm: Fix DM initialization failure after warm reset
Date: Wed, 2 Sep 2015 18:27:41 +0200	[thread overview]
Message-ID: <55E7237D.8050202@boschrexroth.de> (raw)
In-Reply-To: <201508311528.42937.marex@denx.de>

Hi!

this error comes again. It isn't a compiler error after all. :(

JTAG inspection shows that the problem is located in 
arch/arm/mach-socfpga/spl.c line94.
It seems that re-enable ECC on OCRAM can cause some strange value 
changes in SRAM.
Disabling ECC might also cause value changes, which I didn't test.

On a cold (re)boot sysmgr_regs->eccgrp_ocram is 0x19 (derr|serr|en). So 
gd keeps intact.

In our VxWorks Image ECC on OCRAM happens to be disabled.
After a warm reset sysmgr_regs->eccgrp_ocram is 0x18 (derr|serr).
Thus after re-enable ECC, gd->dm_root turns to 0x80 every time.

My solution is keeping SYSMGR_ECC_OCRAM_EN bit untouched. And it works 
for me.

diff --git a/arch/arm/mach-socfpga/spl.c b/arch/arm/mach-socfpga/spl.c
index 775a827..c858406 100644
--- a/arch/arm/mach-socfpga/spl.c
+++ b/arch/arm/mach-socfpga/spl.c
@@ -90,12 +90,14 @@ void board_init_f(ulong dummy)
          * and DBE might triggered during power on
          */
         reg = readl(&sysmgr_regs->eccgrp_ocram);
-       if (reg & SYSMGR_ECC_OCRAM_SERR)
-               writel(SYSMGR_ECC_OCRAM_SERR | SYSMGR_ECC_OCRAM_EN,
-                      &sysmgr_regs->eccgrp_ocram);
-       if (reg & SYSMGR_ECC_OCRAM_DERR)
-               writel(SYSMGR_ECC_OCRAM_DERR  | SYSMGR_ECC_OCRAM_EN,
-                      &sysmgr_regs->eccgrp_ocram);
+       if (reg & SYSMGR_ECC_OCRAM_SERR) {
+               reg &= ~SYSMGR_ECC_OCRAM_SERR;
+               writel(reg, &sysmgr_regs->eccgrp_ocram);
+       }
+       if (reg & SYSMGR_ECC_OCRAM_DERR) {
+               reg &= ~SYSMGR_ECC_OCRAM_DERR;
+               writel(reg, &sysmgr_regs->eccgrp_ocram);
+       }

         memset(__bss_start, 0, __bss_end - __bss_start);

Other solution:
1. Moving OCRAM ECC setting to earlier stage: requires change in generic 
code.
2. Clear gd afterwards: requires replication of every early stage gd 
setting.


Best regards,

Jian Luo
DC-IA/EAH2

Tel.  +49(9352)18-4266

BeQIK
On 31.08.2015 15:28, Marek Vasut wrote:
 > On Monday, August 31, 2015 at 03:00:22 PM, Jian Luo wrote:
 >> Hi,
 >
 > Hi!
 >
 >> On 28.08.2015 23:48, Marek Vasut wrote:
 >>> On Friday, August 28, 2015 at 02:09:15 PM, Jian Luo wrote:
 >>>> Hi Marek,
 >>>
 >>> Hi,
 >>>
 >>>> On 28.08.2015 14:01, Marek Vasut wrote:
 >>>>   > On Friday, August 28, 2015 at 01:40:08 PM, Jian Luo wrote:
 >>>> ----snip----
 >>>>
 >>>>   >> "Security policy". :(
 >>>>   >
 >>>>   > But thunderbird works ? Can't you just copy the SMTP settings from
 >>>>
 >>>> thunderbird
 >>>>
 >>>>   > into gitconfig ? :)
 >>>>
 >>>> I tried w/o success. Might try again another time.
 >>>
 >>> Try using msmtp and configure your git send-email to send through it
 >>> (and all your other MUAs too), it's really convenient :)
 >>
 >> It works. Thanks. :)
 >
 > Cool!
 >
 >>> btw is this a custom board you're porting here ?
 >>
 >> Yes, but this particular error can also be reproduced on Altera SoCDK.
 >>
 >> It seems to be a compiler and/or configuration error of gcc 4.8
 >> generated by yocto dizzy.
 >
 > Let me guess -- gcc 4.8.2 ?
 >
 >> After I switched to gcc 4.9 shiped with Altera Soc EDS 15.0, there is no
 >> warm reset error anymore.
 >
 > Nice, thanks for the update :)
 >
 > Best regards,
 > Marek Vasut

  reply	other threads:[~2015-09-02 16:27 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-28  8:41 [U-Boot] [PATCH] arm: socfpga: dm: Fix DM initialization failure after warm reset Jian Luo
2015-08-28  9:24 ` Marek Vasut
2015-08-28 10:27   ` Jian Luo
2015-08-28 10:30     ` Marek Vasut
2015-08-28 11:40       ` Jian Luo
2015-08-28 12:01         ` Marek Vasut
2015-08-28 12:09           ` Jian Luo
2015-08-28 21:48             ` Marek Vasut
2015-08-31 13:00               ` Jian Luo
2015-08-31 13:28                 ` Marek Vasut
2015-09-02 16:27                   ` Jian Luo [this message]
2015-09-03  9:41                     ` Marek Vasut
2015-09-03 10:03                       ` Jian Luo
2015-09-03 10:09                         ` Marek Vasut
2015-09-03 10:17                           ` Jian Luo
2015-09-03 10:46                             ` Marek Vasut
2015-09-03 11:12                               ` Jian Luo
2015-09-03 11:14                                 ` Marek Vasut
2015-09-04  0:23                                   ` Simon Glass
2015-09-04  7:36                                     ` Jian Luo
2015-09-04 14:16                                       ` Simon Glass
2015-09-04 14:25                                         ` Marek Vasut
2015-09-04 14:26                                           ` Simon Glass
2015-09-04 14:32                                             ` Marek Vasut
2015-09-22 12:26                                               ` Jian Luo
2015-08-28 23:21 ` Simon Glass
2015-08-29  7:56   ` Marek Vasut
2015-08-29 14:39     ` Simon Glass
2015-08-29 14:46       ` Marek Vasut
2015-08-29 14:49         ` Simon Glass
2015-08-29 15:45           ` Marek Vasut
2015-08-29 16:54             ` Simon Glass
2015-08-29 19:19               ` Marek Vasut

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=55E7237D.8050202@boschrexroth.de \
    --to=jian.luo4@boschrexroth.de \
    --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.