diff mbox

ARM: iop3xx: move IOP3XX_PERIPHERAL_VIRT_BASE

Message ID 1362498888-24949-1-git-send-email-aaro.koskinen@iki.fi (mailing list archive)
State New, archived
Headers show

Commit Message

Aaro Koskinen March 5, 2013, 3:54 p.m. UTC
Currently IOP3XX_PERIPHERAL_VIRT_BASE conflicts with PCI_IO_VIRT_BASE:

					address         size
	PCI_IO_VIRT_BASE                0xfee00000      0x200000
	IOP3XX_PERIPHERAL_VIRT_BASE     0xfeffe000      0x2000

Fix by moving IOP3XX_PERIPHERAL_VIRT_BASE below PCI_IO_VIRT_BASE.

The patch fixes the following kernel panic with 3.9-rc1 on iop3xx boards:

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.9.0-rc1-iop32x (aaro@blackmetal) (gcc version 4.7.2 (GCC) ) #20 PREEMPT Tue Mar 5 16:44:36 EET 2013
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] ------------[ cut here ]------------
[    0.000000] kernel BUG at mm/vmalloc.c:1145!
[    0.000000] Internal error: Oops - BUG: 0 [#1] PREEMPT ARM
[    0.000000] Modules linked in:
[    0.000000] CPU: 0    Not tainted  (3.9.0-rc1-iop32x #20)
[    0.000000] PC is at vm_area_add_early+0x4c/0x88
[    0.000000] LR is at add_static_vm_early+0x14/0x68
[    0.000000] pc : [<c03e74a8>]    lr : [<c03e1c40>]    psr: 800000d3
[    0.000000] sp : c03ffee4  ip : dfffdf88  fp : c03ffef4
[    0.000000] r10: 00000002  r9 : 000000cf  r8 : 00000653
[    0.000000] r7 : c040eca8  r6 : c03e2408  r5 : dfffdf60  r4 : 00200000
[    0.000000] r3 : dfffdfd8  r2 : feffe000  r1 : ff000000  r0 : dfffdf60
[    0.000000] Flags: Nzcv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
[    0.000000] Control: 0000397f  Table: a0004000  DAC: 00000017
[    0.000000] Process swapper (pid: 0, stack limit = 0xc03fe1b8)
[    0.000000] Stack: (0xc03ffee4 to 0xc0400000)
[    0.000000] fee0:          00200000 c03fff0c c03ffef8 c03e1c40 c03e7468 00200000 fee00000
[    0.000000] ff00: c03fff2c c03fff10 c03e23e4 c03e1c38 feffe000 c0408ee4 ff000000 c0408f04
[    0.000000] ff20: c03fff3c c03fff30 c03e2434 c03e23b4 c03fff84 c03fff40 c03e2c94 c03e2414
[    0.000000] ff40: c03f8878 c03f6410 ffff0000 000bffff 00001000 00000008 c03fff84 c03f6410
[    0.000000] ff60: c04227e8 c03fffd4 a0008000 c03f8878 69052e30 c02f96eb c03fffbc c03fff88
[    0.000000] ff80: c03e044c c03e268c 00000000 0000397f c0385130 00000001 ffffffff c03f8874
[    0.000000] ffa0: dfffffff a0004000 69052e30 a03f61a0 c03ffff4 c03fffc0 c03dd5cc c03e0184
[    0.000000] ffc0: 00000000 00000000 00000000 00000000 00000000 c03f8878 0000397d c040601c
[    0.000000] ffe0: c03f8874 c0408674 00000000 c03ffff8 a0008040 c03dd558 00000000 00000000
[    0.000000] Backtrace:
[    0.000000] [<c03e745c>] (vm_area_add_early+0x0/0x88) from [<c03e1c40>] (add_static_vm_early+0x14/0x68)

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
---
 arch/arm/include/asm/hardware/iop3xx.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Aaro Koskinen March 30, 2013, 9:06 p.m. UTC | #1
Hi,

On Tue, Mar 05, 2013 at 05:54:48PM +0200, Aaro Koskinen wrote:
> Currently IOP3XX_PERIPHERAL_VIRT_BASE conflicts with PCI_IO_VIRT_BASE:
> 
> 					address         size
> 	PCI_IO_VIRT_BASE                0xfee00000      0x200000
> 	IOP3XX_PERIPHERAL_VIRT_BASE     0xfeffe000      0x2000
> 
> Fix by moving IOP3XX_PERIPHERAL_VIRT_BASE below PCI_IO_VIRT_BASE.
> 
> The patch fixes the following kernel panic with 3.9-rc1 on iop3xx boards:

Any comments about this patch? I think it's still needed to boot these
boards.

A.

> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Initializing cgroup subsys cpu
> [    0.000000] Linux version 3.9.0-rc1-iop32x (aaro@blackmetal) (gcc version 4.7.2 (GCC) ) #20 PREEMPT Tue Mar 5 16:44:36 EET 2013
> [    0.000000] bootconsole [earlycon0] enabled
> [    0.000000] ------------[ cut here ]------------
> [    0.000000] kernel BUG at mm/vmalloc.c:1145!
> [    0.000000] Internal error: Oops - BUG: 0 [#1] PREEMPT ARM
> [    0.000000] Modules linked in:
> [    0.000000] CPU: 0    Not tainted  (3.9.0-rc1-iop32x #20)
> [    0.000000] PC is at vm_area_add_early+0x4c/0x88
> [    0.000000] LR is at add_static_vm_early+0x14/0x68
> [    0.000000] pc : [<c03e74a8>]    lr : [<c03e1c40>]    psr: 800000d3
> [    0.000000] sp : c03ffee4  ip : dfffdf88  fp : c03ffef4
> [    0.000000] r10: 00000002  r9 : 000000cf  r8 : 00000653
> [    0.000000] r7 : c040eca8  r6 : c03e2408  r5 : dfffdf60  r4 : 00200000
> [    0.000000] r3 : dfffdfd8  r2 : feffe000  r1 : ff000000  r0 : dfffdf60
> [    0.000000] Flags: Nzcv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
> [    0.000000] Control: 0000397f  Table: a0004000  DAC: 00000017
> [    0.000000] Process swapper (pid: 0, stack limit = 0xc03fe1b8)
> [    0.000000] Stack: (0xc03ffee4 to 0xc0400000)
> [    0.000000] fee0:          00200000 c03fff0c c03ffef8 c03e1c40 c03e7468 00200000 fee00000
> [    0.000000] ff00: c03fff2c c03fff10 c03e23e4 c03e1c38 feffe000 c0408ee4 ff000000 c0408f04
> [    0.000000] ff20: c03fff3c c03fff30 c03e2434 c03e23b4 c03fff84 c03fff40 c03e2c94 c03e2414
> [    0.000000] ff40: c03f8878 c03f6410 ffff0000 000bffff 00001000 00000008 c03fff84 c03f6410
> [    0.000000] ff60: c04227e8 c03fffd4 a0008000 c03f8878 69052e30 c02f96eb c03fffbc c03fff88
> [    0.000000] ff80: c03e044c c03e268c 00000000 0000397f c0385130 00000001 ffffffff c03f8874
> [    0.000000] ffa0: dfffffff a0004000 69052e30 a03f61a0 c03ffff4 c03fffc0 c03dd5cc c03e0184
> [    0.000000] ffc0: 00000000 00000000 00000000 00000000 00000000 c03f8878 0000397d c040601c
> [    0.000000] ffe0: c03f8874 c0408674 00000000 c03ffff8 a0008040 c03dd558 00000000 00000000
> [    0.000000] Backtrace:
> [    0.000000] [<c03e745c>] (vm_area_add_early+0x0/0x88) from [<c03e1c40>] (add_static_vm_early+0x14/0x68)
> 
> Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
> ---
>  arch/arm/include/asm/hardware/iop3xx.h |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/hardware/iop3xx.h b/arch/arm/include/asm/hardware/iop3xx.h
> index 02fe2fb..ed94b1a 100644
> --- a/arch/arm/include/asm/hardware/iop3xx.h
> +++ b/arch/arm/include/asm/hardware/iop3xx.h
> @@ -37,7 +37,7 @@ extern int iop3xx_get_init_atu(void);
>   * IOP3XX processor registers
>   */
>  #define IOP3XX_PERIPHERAL_PHYS_BASE	0xffffe000
> -#define IOP3XX_PERIPHERAL_VIRT_BASE	0xfeffe000
> +#define IOP3XX_PERIPHERAL_VIRT_BASE	0xfedfe000
>  #define IOP3XX_PERIPHERAL_SIZE		0x00002000
>  #define IOP3XX_PERIPHERAL_UPPER_PA (IOP3XX_PERIPHERAL_PHYS_BASE +\
>  					IOP3XX_PERIPHERAL_SIZE - 1)
> -- 
> 1.7.10.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Mikael Pettersson March 31, 2013, 3:23 p.m. UTC | #2
Aaro Koskinen writes:
 > Hi,
 > 
 > On Tue, Mar 05, 2013 at 05:54:48PM +0200, Aaro Koskinen wrote:
 > > Currently IOP3XX_PERIPHERAL_VIRT_BASE conflicts with PCI_IO_VIRT_BASE:
 > > 
 > > 					address         size
 > > 	PCI_IO_VIRT_BASE                0xfee00000      0x200000
 > > 	IOP3XX_PERIPHERAL_VIRT_BASE     0xfeffe000      0x2000
 > > 
 > > Fix by moving IOP3XX_PERIPHERAL_VIRT_BASE below PCI_IO_VIRT_BASE.
 > > 
 > > The patch fixes the following kernel panic with 3.9-rc1 on iop3xx boards:
 > 
 > Any comments about this patch? I think it's still needed to boot these
 > boards.
 > 
 > A.

My iop32x board (Thecus n2100) fails to boot the 3.9-rc4 kernel with an
apparent hang before the serial console works.  With your patch applied
it boots and works fine.

Tested-by: Mikael Pettersson <mikpe@it.uu.se>

 > 
 > > [    0.000000] Booting Linux on physical CPU 0x0
 > > [    0.000000] Initializing cgroup subsys cpu
 > > [    0.000000] Linux version 3.9.0-rc1-iop32x (aaro@blackmetal) (gcc version 4.7.2 (GCC) ) #20 PREEMPT Tue Mar 5 16:44:36 EET 2013
 > > [    0.000000] bootconsole [earlycon0] enabled
 > > [    0.000000] ------------[ cut here ]------------
 > > [    0.000000] kernel BUG at mm/vmalloc.c:1145!
 > > [    0.000000] Internal error: Oops - BUG: 0 [#1] PREEMPT ARM
 > > [    0.000000] Modules linked in:
 > > [    0.000000] CPU: 0    Not tainted  (3.9.0-rc1-iop32x #20)
 > > [    0.000000] PC is at vm_area_add_early+0x4c/0x88
 > > [    0.000000] LR is at add_static_vm_early+0x14/0x68
 > > [    0.000000] pc : [<c03e74a8>]    lr : [<c03e1c40>]    psr: 800000d3
 > > [    0.000000] sp : c03ffee4  ip : dfffdf88  fp : c03ffef4
 > > [    0.000000] r10: 00000002  r9 : 000000cf  r8 : 00000653
 > > [    0.000000] r7 : c040eca8  r6 : c03e2408  r5 : dfffdf60  r4 : 00200000
 > > [    0.000000] r3 : dfffdfd8  r2 : feffe000  r1 : ff000000  r0 : dfffdf60
 > > [    0.000000] Flags: Nzcv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
 > > [    0.000000] Control: 0000397f  Table: a0004000  DAC: 00000017
 > > [    0.000000] Process swapper (pid: 0, stack limit = 0xc03fe1b8)
 > > [    0.000000] Stack: (0xc03ffee4 to 0xc0400000)
 > > [    0.000000] fee0:          00200000 c03fff0c c03ffef8 c03e1c40 c03e7468 00200000 fee00000
 > > [    0.000000] ff00: c03fff2c c03fff10 c03e23e4 c03e1c38 feffe000 c0408ee4 ff000000 c0408f04
 > > [    0.000000] ff20: c03fff3c c03fff30 c03e2434 c03e23b4 c03fff84 c03fff40 c03e2c94 c03e2414
 > > [    0.000000] ff40: c03f8878 c03f6410 ffff0000 000bffff 00001000 00000008 c03fff84 c03f6410
 > > [    0.000000] ff60: c04227e8 c03fffd4 a0008000 c03f8878 69052e30 c02f96eb c03fffbc c03fff88
 > > [    0.000000] ff80: c03e044c c03e268c 00000000 0000397f c0385130 00000001 ffffffff c03f8874
 > > [    0.000000] ffa0: dfffffff a0004000 69052e30 a03f61a0 c03ffff4 c03fffc0 c03dd5cc c03e0184
 > > [    0.000000] ffc0: 00000000 00000000 00000000 00000000 00000000 c03f8878 0000397d c040601c
 > > [    0.000000] ffe0: c03f8874 c0408674 00000000 c03ffff8 a0008040 c03dd558 00000000 00000000
 > > [    0.000000] Backtrace:
 > > [    0.000000] [<c03e745c>] (vm_area_add_early+0x0/0x88) from [<c03e1c40>] (add_static_vm_early+0x14/0x68)
 > > 
 > > Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
 > > ---
 > >  arch/arm/include/asm/hardware/iop3xx.h |    2 +-
 > >  1 file changed, 1 insertion(+), 1 deletion(-)
 > > 
 > > diff --git a/arch/arm/include/asm/hardware/iop3xx.h b/arch/arm/include/asm/hardware/iop3xx.h
 > > index 02fe2fb..ed94b1a 100644
 > > --- a/arch/arm/include/asm/hardware/iop3xx.h
 > > +++ b/arch/arm/include/asm/hardware/iop3xx.h
 > > @@ -37,7 +37,7 @@ extern int iop3xx_get_init_atu(void);
 > >   * IOP3XX processor registers
 > >   */
 > >  #define IOP3XX_PERIPHERAL_PHYS_BASE	0xffffe000
 > > -#define IOP3XX_PERIPHERAL_VIRT_BASE	0xfeffe000
 > > +#define IOP3XX_PERIPHERAL_VIRT_BASE	0xfedfe000
 > >  #define IOP3XX_PERIPHERAL_SIZE		0x00002000
 > >  #define IOP3XX_PERIPHERAL_UPPER_PA (IOP3XX_PERIPHERAL_PHYS_BASE +\
 > >  					IOP3XX_PERIPHERAL_SIZE - 1)
 > > -- 
 > > 1.7.10.4
 > > 
 > > 
 > > _______________________________________________
 > > linux-arm-kernel mailing list
 > > linux-arm-kernel@lists.infradead.org
 > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
 > 
 > _______________________________________________
 > linux-arm-kernel mailing list
 > linux-arm-kernel@lists.infradead.org
 > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
 >
diff mbox

Patch

diff --git a/arch/arm/include/asm/hardware/iop3xx.h b/arch/arm/include/asm/hardware/iop3xx.h
index 02fe2fb..ed94b1a 100644
--- a/arch/arm/include/asm/hardware/iop3xx.h
+++ b/arch/arm/include/asm/hardware/iop3xx.h
@@ -37,7 +37,7 @@  extern int iop3xx_get_init_atu(void);
  * IOP3XX processor registers
  */
 #define IOP3XX_PERIPHERAL_PHYS_BASE	0xffffe000
-#define IOP3XX_PERIPHERAL_VIRT_BASE	0xfeffe000
+#define IOP3XX_PERIPHERAL_VIRT_BASE	0xfedfe000
 #define IOP3XX_PERIPHERAL_SIZE		0x00002000
 #define IOP3XX_PERIPHERAL_UPPER_PA (IOP3XX_PERIPHERAL_PHYS_BASE +\
 					IOP3XX_PERIPHERAL_SIZE - 1)