hello !
I am trying to use Kexec to load a new kernel and do a warm reboot. As a first test, I try to reload the same kernel that the one used.
Kexec works fine but when loading the new kernel it fails with an error on IRQ 1.
Below the traces:
---
# kexec -e
ifdown: socket: FStarting new kernel
uBye!
nUncompressing Linux...................................................... done, booting the kernel.
Linux version 2.6.30-1.2.0-DEV (llherbier@d-llherbier) (gcc version 4.2.0 20070413 (prerelease) (CodeSourcery Source1
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9G20-EK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 360 MHz, master 120 MHz, main 20.000 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttyS0,115200 ubi.mtd=2,512 root=ubi0:rootfs rw rootfstype=ubifs mem=32M
NR_IRQS:192
AT91: 96 gpio irqs in 3 banks
PID hash table entries: 128 (order: 7, 512 bytes)
irq 1: nobody cared (try booting with the "irqpoll" option)
[<c0022fa8>] (unwind_backtrace+0x0/0xdc) from [<c0052814>] (__report_bad_irq+0x30/0x88)
[<c0052814>] (__report_bad_irq+0x30/0x88) from [<c00529cc>] (note_interrupt+0x160/0x1d4)
[<c00529cc>] (note_interrupt+0x160/0x1d4) from [<c005355c>] (handle_level_irq+0x90/0xf0)
[<c005355c>] (handle_level_irq+0x90/0xf0) from [<c001d050>] (_text+0x50/0x78)
[<c001d050>] (_text+0x50/0x78) from [<c001d974>] (__irq_svc+0x34/0x60)
Exception stack(0xc018df08 to 0xc018df50)
df00: 00000001 c018c000 c01a4a00 20000053 c018c000 00000000
df20: 00000001 00000002 c01a4a00 00000000 0000000a 00000000 00000005 c018df50
df40: c001d060 c0036f00 20000053 ffffffff
[<c001d974>] (__irq_svc+0x34/0x60) from [<c001d060>] (_text+0x60/0x78)
[<c001d060>] (_text+0x60/0x78) from [<00000001>] (0x1)
Exception stack(0xc018df60 to 0xc018dfa8)
df60: 00000000 00000001 c0190328 2001a56c 41069265 2001a538 00000000 c001d060
df80: 00000000 ffffffff fefff000 c001d974 00008001 00000000 00000001 20000053
dfa0: c001beec c019fe60
handlers:
[<c0027994>] (at91sam926x_pit_interrupt+0x0/0x70)
Disabling IRQ #1
Console: colour dummy device 80x30
console [ttyS0] enabled
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 30740KB available (1412K code, 144K data, 84K init, 0K highmem)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Calibrating delay loop...
---
My problem seems similar to this post:
viewtopic.php/p,33147/#p33147So I have tried to disable the RTTINCIEN bit very early in the start of the Linux Kernel: at the beginning of ek_map_io() in board-sam9g20ek.c. And as the traces shows that the problem seems to be in at91sam926x_pit_interrupt() I also tried to reset the PIT but with both approach the kernel freezes just after showing the trace "Uncompressing Linux...................................................... done, booting the kernel".
Does someone already managed to use Kexec + 2.6.32 on sam9g20 ?
Is there anything else that I should try ?
Thanks for your ideas and suggestions.
Loïs