public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 01/10] ARM: move interrupt_init to before relocation
Date: Thu, 16 May 2013 11:44:39 +0200	[thread overview]
Message-ID: <20130516114439.157bbe29@lilith> (raw)
In-Reply-To: <CAL_JsqJRH19NwZbqMvhn9sxSTwM+7=siuDzUhEYztn6XCeWvKg@mail.gmail.com>

Hi Rob,

On Wed, 15 May 2013 16:29:41 -0500, Rob Herring <robherring2@gmail.com>
wrote:

> On Wed, May 15, 2013 at 3:26 PM, Albert ARIBAUD
> <albert.u.boot@aribaud.net> wrote:
> > Hi Rob,
> >
> > On Wed, 15 May 2013 14:56:07 -0500, Rob Herring <robherring2@gmail.com>
> > wrote:
> >
> >> From: Rob Herring <rob.herring@calxeda.com>
> >>
> >> interrupt_init also sets up the abort stack, but is not setup before
> >> relocation. So any aborts during relocation will hang and not print out
> >> any useful information. Fix this by moving the interrupt_init to after
> >> the stack setup in board_init_f.
> >>
> >> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> >> ---
> >>  arch/arm/lib/board.c | 1 +
> >>  1 file changed, 1 insertion(+)
> >>
> >> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
> >> index 09ab4ad..6dbe7e2 100644
> >> --- a/arch/arm/lib/board.c
> >> +++ b/arch/arm/lib/board.c
> >> @@ -447,6 +447,7 @@ void board_init_f(ulong bootflag)
> >>       addr_sp += 128; /* leave 32 words for abort-stack   */
> >>       gd->irq_sp = addr_sp;
> >>  #endif
> >> +     interrupt_init();
> >>
> >>       debug("New Stack Pointer is: %08lx\n", addr_sp);
> >>
> >
> > I fail to understand how this is even supposed to work through
> > relocation: exception vectors are not relocated, so if they work before
> > relocation, then they won't work any more afterward unless some code is
> > added to relocate them.
> 
> They work before and after in my testing. The vectors are relocated
> along with the rest of u-boot and the vector base is updated by
> c_runtime_cpu_setup. I'm simply setting up the abort stack earlier. An
> alternative would be to setup a different abort handler and stack
> before relocation. I'm open to suggestions, but as it stands now
> aborts before or during relocation will simply hang without this.

Thanks for the clarification.

This opens at least two quite interesting issues:

1. interrupts_init() does not initialize interrupts but stacks, and
   does not initialize only interrupt stacks but also exception stacks;
   it badly needs a rename (and so does the abort stack, BTW).

2. Much more worrying, interrupt vectors are only fixed for armv7, and
   only by setting VBAR. This seems to imply that for all other ARM
   targets, VBAR is not modified, and neither are the exception vectors
   at either 0x00000000 or 0xFFFF0000; and this means that exceptions
   are never pointed to the RAM-running U-Boot; they would work for NOR
   FLASH based U-Boots, but any other case I simply fail to see how it
   would work as intended.

But issue 2 is so big that I probably simply missed something obvious.
Anyone able to show me how dumb I am here, feel free. :)

Regarding your change, Rob, it's good news anyway as I'm not going to
ask you to overhaul the whole of ARM exception handling code in any
case :) and I am fine with the change as it is, except:

> > Also: if this patch is moving interrupt_init(), then where is the line
> > where a call to interrupt_init() is removed?
> 
> Yes, the later call to interrupt_init should be removed assuming we
> keep this approach.

Then I would like the removal to be paired with this addition in a
single commit.

> Rob

Amicalement,
-- 
Albert.

      reply	other threads:[~2013-05-16  9:44 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-15 19:56 [U-Boot] [PATCH 01/10] ARM: move interrupt_init to before relocation Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 02/10] net: calxedaxgmac: enable rx cut-thru Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 03/10] ARM: highbank: update config options Rob Herring
2013-05-16 15:44   ` Tom Rini
2013-05-15 19:56 ` [U-Boot] [PATCH 04/10] ARM: highbank: fix get_tbclk value to timer rate Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 05/10] ARM: highbank: set timer prescaler to 256 Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 06/10] ARM: highbank: avoid bss write in timer_init Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 07/10] ARM: highbank: enable reset on command timeout Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 08/10] ARM: highbank: setup peripherals based on power domain status Rob Herring
2013-05-16 15:48   ` Tom Rini
2013-05-15 19:56 ` [U-Boot] [PATCH 09/10] ARM: highbank: fix build with CONFIG_MISC_INIT_R turned off Rob Herring
2013-05-15 20:31   ` Albert ARIBAUD
2013-05-21 21:33   ` [U-Boot] [PATCH v2] ARM: highbank: compile misc_init_r only if CONFIG_MISC_INIT_R Rob Herring
2013-05-21 21:33     ` [U-Boot] [PATCH v2] ARM: highbank: setup peripherals based on power domain status Rob Herring
2013-05-21 21:33     ` [U-Boot] [PATCH v2] ARM: highbank: update config options Rob Herring
2013-05-21 21:33     ` [U-Boot] [PATCH v2] ARM: move interrupt_init to before relocation Rob Herring
2013-06-11  8:22     ` [U-Boot] [PATCH v2] ARM: highbank: compile misc_init_r only if CONFIG_MISC_INIT_R Albert ARIBAUD
2013-05-15 19:56 ` [U-Boot] [PATCH 10/10] highbank: enable keyed autoboot stop Rob Herring
2013-05-15 20:26 ` [U-Boot] [PATCH 01/10] ARM: move interrupt_init to before relocation Albert ARIBAUD
2013-05-15 21:29   ` Rob Herring
2013-05-16  9:44     ` Albert ARIBAUD [this message]

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=20130516114439.157bbe29@lilith \
    --to=albert.u.boot@aribaud.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox