Patchwork [U-Boot,v2,01/10] ARM: move interrupt_init to before relocation

login
register
mail settings
Submitter Rob Herring
Date June 13, 2013, 3:24 a.m.
Message ID <1371093894-16424-1-git-send-email-robherring2@gmail.com>
Download mbox | patch
Permalink /patch/250960/
State Accepted
Delegated to: Albert ARIBAUD
Headers show

Comments

Rob Herring - June 13, 2013, 3:24 a.m.
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>
---
v2:
- Remove interrupt_init from board_init_r

 arch/arm/lib/board.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Albert ARIBAUD - July 25, 2013, 8:52 a.m.
Hi Rob,

On Wed, 12 Jun 2013 22:24:45 -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>
> ---
> v2:
> - Remove interrupt_init from board_init_r
> 
>  arch/arm/lib/board.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
> index 09ab4ad..c90843e 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);
>  
> @@ -648,8 +649,6 @@ void board_init_r(gd_t *id, ulong dest_addr)
>  	misc_init_r();
>  #endif
>  
> -	 /* set up exceptions */
> -	interrupt_init();
>  	/* enable exceptions */
>  	enable_interrupts();
>  

Whole series applied to u-boot-arm/master, thanks!

Amicalement,

Patch

diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
index 09ab4ad..c90843e 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);
 
@@ -648,8 +649,6 @@  void board_init_r(gd_t *id, ulong dest_addr)
 	misc_init_r();
 #endif
 
-	 /* set up exceptions */
-	interrupt_init();
 	/* enable exceptions */
 	enable_interrupts();