ts72xx: rc4 doesn't boot anymore
Christian Gagneraud
cgagneraud at techworks.ie
Wed Oct 14 15:45:17 EDT 2009
Christian Gagneraud wrote:
> Hi all,
>
> I really don't understand what's happenning, nothing has changed on my
> side (same board, same bootloader), rc2 was booting OK, rc3 didn't boot
> unless I pass on the command line the config for half of my memory
> (mem=8M at 0x0 mem=8M at 16M mem=8M at 64M mem=8M at 80M). Now with rc4 it's even
> worth, the kernel complains about bad configuration page, detects 16MB
> of memory and ignore any mem= command line params (this board has 8
> nodes of 8MB each).
>
> Below is the trace of the crash, I've added some debug printk,
> especially concerning the atags (attached is my hack of
> arch/arm/kernel/setup.c and another patch i need to get the board
> booting (I know it's bad))
>
> Unless I'm missing something, the rc2 was booting OK, I'm sure.
I finally manage to find what was the problem, it's all about my
.config. I'm using 2 kind of config, a minimal one that just allow me
to boot, mount root and do the tests I want to do, and a fat config
with lot of stuff.
So it came that when I activate CONFIG_KEXEC even without
CONFIG_ATAGS_PROC, my atags are overwritten, if I disable
CONFIG_KEXEC, then everything _seems_ to be fine (ATAGS should be OK
as I get my RAM correctly detected).
I first started to look at the kexec code hoping to spot the bug! :)
But to be honnest, I quickly gave up. What's surprising is that the
kexec code is not spread all around the place and that kexec is
actually a system call, so there shouldn't be so much code executed at
boot time.
Other interesting stuff:
- using my fat config with KEXEC: ATAGS screwed up
- using my fat config without KEXEC: ATAGS OK
- using my minimal config with KEXEC: ATAGS OK
- using my minimal config without KEXEC: ATAGS OK
If some people are interesting in chasing this bug and want other
people to run tests, I'm willing to help.
Chris.
>
> Any help greatly appreciate.
>
> Regards,
> Chris
>
> <5>Linux version 2.6.32-rc4 (cgagneraud at archeopterix.techworks.local)
> (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #15 Wed Oct 14
> 00:16:32 IST 2009
> CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=40007177
> CPU: VIVT data cache, VIVT instruction cache
> Machine: Technologic Systems TS-72xx SBC
> tags:
> c0000100: 0x00000080
> c0000104: 0x00000200
> c0000108: 0x00000400
> c000010c: 0x00000000
> c0000110: 0x00000000
> c0000114: 0x00000000
> c0000118: 0x00000000
> c000011c: 0x00000000
> c0000120: 0x00000000
> c0000124: 0x00000000
> c0000128: 0x00000000
> c000012c: 0x00000000
> c0000130: 0x00000000
> c0000134: 0x00000000
> c0000138: 0x00000000
> c000013c: 0x00000000
> c0000140: 0x00000000
> c0000144: 0x00000000
> c0000148: 0x00000000
> c000014c: 0x00000000
> c0000150: 0x00000000
> <4>Warning: bad configuration page, trying to continue
> arm_add_memory: start: 0x0, size: 0x1000000 => bank = { start:0x0
> size:0x1000000 node:0 }
> tags:
> c001fc70: 0x00000005
> c001fc74: 0x54410001
> c001fc78: 0x00000001
> c001fc7c: 0x00001000
> c001fc80: 0x000000FF
> c001fc84: 0x00000004
> c001fc88: 0x54410002
> c001fc8c: 0x01000000
> c001fc90: 0x00000000
> c001fc94: 0x00000000
> c001fc98: 0x00000000
> c001fc9c: 0x00000000
> c001fca0: 0x00000000
> c001fca4: 0x00000000
> c001fca8: 0x00000000
> c001fcac: 0x00000000
> c001fcb0: 0x00000000
> c001fcb4: 0x00000000
> c001fcb8: 0x00000000
> c001fcbc: 0x00000000
> c001fcc0: 0x00000000
> Memory policy: ECC disabled, Data cache writeback
> <7>On node 0 totalpages: 4096
> <7> Normal zone: 32 pages used for memmap
> <7> Normal zone: 0 pages reserved
> <7> Normal zone: 4064 pages, LIFO batch:0
> Built 1 zonelists in Zone order, mobility grouping off. Total pages: 4064
> <5>Kernel command line: debug
> <6>PID hash table entries: 64 (order: -4, 256 bytes)
> <6>Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
> <6>Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
> <6>Memory: 16MB = 16MB total
> <5>Memory: 11988KB available (3636K code, 388K data, 104K init, 0K highmem)
> <6>Hierarchical RCU implementation.
> <6>NR_IRQS:120
> <6>VIC @fefb0000: id 0x00041190, vendor 0x41
> <6>VIC @fefc0000: id 0x00041190, vendor 0x41
> Console: colour dummy device 80x30
> <6>console [tty0] enabled
> <6>Calibrating delay loop... <1>Unable to handle kernel NULL pointer
> dereference at virtual address 00000040
> <1>pgd = c0004000
> <1>[00000040] *pgd=00000000
> <0>Internal error: Oops: 5 [#1]
> <0>last sysfs file:
> <d>Modules linked in:
> CPU: 0 Not tainted (2.6.32-rc4 #15)
> PC is at update_wall_time+0xa4/0x960
> LR is at do_timer+0x24/0x30
> pc : [<c005bc54>] lr : [<c004baa0>] psr: a00000d3
> sp : c03c3e70 ip : c0407f50 fp : 00000000
> r10: 0001d9bc r9 : 41129200 r8 : 00000000
> r7 : 3b9aca00 r6 : 00000000 r5 : 3b9aca00 r4 : 00000040
> r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : 00000000
> Flags: NzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel
> Control: 4000717f Table: 00004000 DAC: 00000017
> <0>Process swapper (pid: 0, stack limit = 0xc03c2270)
> <0>Stack: (0xc03c3e70 to 0xc03c4000)
> <0>3e60: 00000000 33300000 00000000
> 000200d0
> <0>3e80: 00000000 00000000 00000000 00000010 000000d0 00000000 c0c02630
> c0c02628
> <0>3ea0: 00000000 c0c08000 a0000053 00000000 00000000 00000000 c0c00300
> c040bec0
> <0>3ec0: 00000000 00000000 00000000 00000000 00000000 c03e6a04 c03c7cd4
> c035986c
> <0>3ee0: c0359889 ffff8ad1 00000000 fed10fff 00000004 0001d9f0 41129200
> 0001d9bc
> <0>3f00: 00000000 c004baa0 c0407f78 00002665 fed10fff c0026800 c03e600c
> 00002665
> <0>3f20: fed10fff c002cca4 c03c6260 00000000 00000000 c00680e4 c03c9d5c
> 00000004
> <0>3f40: 00000000 c03c8f10 0001d9f0 c0069c7c 00000004 c03d893c 00000000
> c002203c
> <0>3f60: ffffffff fefb0001 40000000 c0022ae4 00002000 00000000 ffff8ad0
> ffff8ad0
> <0>3f80: c040b384 c03c59c0 c03c8f10 c03c8f10 0001d9f0 41129200 0001d9bc
> 00000000
> <0>3fa0: 00000000 c03c3fb8 c001c71c c001c738 60000053 ffffffff c040b384
> c03e5c40
> <0>3fc0: c001fc9c c03c5b58 0001d9f0 41129200 0001d9bc c0008a5c c0008608
> 00000000
> <0>3fe0: 00000000 c001fca0 00000000 40007175 c03e5f50 00008038 00000000
> 00000000
> [<c005bc54>] (update_wall_time+0xa4/0x960) from [<c004baa0>]
> (do_timer+0x24/0x30)
> [<c004baa0>] (do_timer+0x24/0x30) from [<c0026800>] (timer_tick+0xb4/0xfc)
> [<c0026800>] (timer_tick+0xb4/0xfc) from [<c002cca4>]
> (ep93xx_timer_interrupt+0x44/0x6c)
> [<c002cca4>] (ep93xx_timer_interrupt+0x44/0x6c) from [<c00680e4>]
> (handle_IRQ_event+0x58/0x128)
> [<c00680e4>] (handle_IRQ_event+0x58/0x128) from [<c0069c7c>]
> (handle_level_irq+0x70/0xfc)
> [<c0069c7c>] (handle_level_irq+0x70/0xfc) from [<c002203c>]
> (asm_do_IRQ+0x3c/0x84)
> [<c002203c>] (asm_do_IRQ+0x3c/0x84) from [<c0022ae4>] (__irq_svc+0x24/0xc0)
> Exception stack(0xc03c3f70 to 0xc03c3fb8)
> 3f60: 00002000 00000000 ffff8ad0
> ffff8ad0
> 3f80: c040b384 c03c59c0 c03c8f10 c03c8f10 0001d9f0 41129200 0001d9bc
> 00000000
> 3fa0: 00000000 c03c3fb8 c001c71c c001c738 60000053 ffffffff
> [<c0022ae4>] (__irq_svc+0x24/0xc0) from [<c001c738>]
> (calibrate_delay+0x58/0x160)
> [<c001c738>] (calibrate_delay+0x58/0x160) from [<c0008a5c>]
> (start_kernel+0x1a8/0x25c)
> [<c0008a5c>] (start_kernel+0x1a8/0x25c) from [<00008038>] (0x8038)
> <0>Code: e8920006 e59d003c e1a05817 e2804040 (e8940018)
> <4>---[ end trace 1b75b31a2719ed1c ]---
> <0>Kernel panic - not syncing: Fatal exception in interrupt
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
More information about the linux-arm-kernel
mailing list