linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] sh: boot kernel with SR.BL set
@ 2010-09-24  9:05 Magnus Damm
  2010-09-30  1:06 ` Paul Mundt
  0 siblings, 1 reply; 2+ messages in thread
From: Magnus Damm @ 2010-09-24  9:05 UTC (permalink / raw)
  To: linux-sh

From: Magnus Damm <damm@opensource.se>

Update the SH kernel to keep SR.BL set until the VBR
register has been initialized. Useful to allow boot
of the kernel even though exceptions are pending.

Without this patch there is a window of time when
exceptions such as NMI are enabled but no exception
handlers are installed.

This patch modifies both the zImage loader and the
actual kernel to boot with BL=1, but the zImage
loader is modfied in such a way that the init_sr
value is unchanged to not break the zImage loader
provided by kexec.

Tested on sh7724 Ecovec and on the SH4AL-DSP core
included in sh7372.

Signed-off-by: Magnus Damm <damm@opensource.se>
---

 arch/sh/boot/compressed/head_32.S |    4 +++-
 arch/sh/kernel/head_32.S          |    2 +-
 arch/sh/kernel/traps_32.c         |    3 +++
 3 files changed, 7 insertions(+), 2 deletions(-)

--- 0001/arch/sh/boot/compressed/head_32.S
+++ work/arch/sh/boot/compressed/head_32.S	2010-09-24 17:52:43.000000000 +0900
@@ -91,7 +91,9 @@ bss_start_addr:
 end_addr:
 	.long	_end
 init_sr:
-	.long	0x400000F0	/* Privileged mode, Bank=0, Block=0, IMASK=0xF */
+	.long	0x500000F0	/* Privileged mode, Bank=0, Block=1, IMASK=0xF */
+kexec_magic:
+	.long	0x400000F0	/* magic used by kexec to parse zImage format */
 init_stack_addr:
 	.long	stack_start
 decompress_kernel_addr:
--- 0001/arch/sh/kernel/head_32.S
+++ work/arch/sh/kernel/head_32.S	2010-09-24 17:48:10.000000000 +0900
@@ -330,7 +330,7 @@ ENTRY(_stext)
 #if defined(CONFIG_CPU_SH2)
 1:	.long	0x000000F0		! IMASK=0xF
 #else
-1:	.long	0x400080F0		! MD=1, RB=0, BL=0, FD=1, IMASK=0xF
+1:	.long	0x500080F0		! MD=1, RB=0, BL=1, FD=1, IMASK=0xF
 #endif
 ENTRY(stack_start)
 2:	.long	init_thread_union+THREAD_SIZE
--- 0001/arch/sh/kernel/traps_32.c
+++ work/arch/sh/kernel/traps_32.c	2010-09-24 17:48:10.000000000 +0900
@@ -802,6 +802,9 @@ void __cpuinit per_cpu_trap_init(void)
 		     : /* no output */
 		     : "r" (&vbr_base)
 		     : "memory");
+
+	/* disable exception blocking now when the vbr has been setup */
+	clear_bl_bit();
 }
 
 void *set_exception_table_vec(unsigned int vec, void *handler)

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] sh: boot kernel with SR.BL set
  2010-09-24  9:05 [PATCH] sh: boot kernel with SR.BL set Magnus Damm
@ 2010-09-30  1:06 ` Paul Mundt
  0 siblings, 0 replies; 2+ messages in thread
From: Paul Mundt @ 2010-09-30  1:06 UTC (permalink / raw)
  To: linux-sh

On Fri, Sep 24, 2010 at 06:05:38PM +0900, Magnus Damm wrote:
> From: Magnus Damm <damm@opensource.se>
> 
> Update the SH kernel to keep SR.BL set until the VBR
> register has been initialized. Useful to allow boot
> of the kernel even though exceptions are pending.
> 
> Without this patch there is a window of time when
> exceptions such as NMI are enabled but no exception
> handlers are installed.
> 
> This patch modifies both the zImage loader and the
> actual kernel to boot with BL=1, but the zImage
> loader is modfied in such a way that the init_sr
> value is unchanged to not break the zImage loader
> provided by kexec.
> 
> Tested on sh7724 Ecovec and on the SH4AL-DSP core
> included in sh7372.
> 
> Signed-off-by: Magnus Damm <damm@opensource.se>

I've applied this, but in the future make sure you update all of the CPUs
when making changes to the boot path. Presently this is introducing a
divergence for all of the nommu parts which we do not want.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-09-30  1:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-24  9:05 [PATCH] sh: boot kernel with SR.BL set Magnus Damm
2010-09-30  1:06 ` Paul Mundt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).