crash kernel not booting

Pratyush Anand panand at redhat.com
Wed Jun 7 22:08:51 PDT 2017



On Saturday 03 June 2017 07:11 PM, Mahesh V wrote:
> Hi folks,
>
> Have mostly exhausted all my options to make my ARM crash kernel boot :(.
> Nothings worked so far. Any pointers as to how should I proceed further?
>
> Following are my .config parameters that I set.
> +CONFIG_KEXEC=y
> +CONFIG_CRASH_DUMP=y
> +CONFIG_DEBUG_LL=y
> +CONFIG_DEBUG_LL_UART_NONE=y
> +CONFIG_EARLY_PRINTK=y
>
> defaults. If I set CONFIG_ARM_PATCH_PHYS_VIRT, I get a compile error
> ('__pv_phys_offset' undeclared here (not in a function))
>
> CONFIG_PHYS_OFFSET=0x41500000
> # CONFIG_ARM_PATCH_PHYS_VIRT is not set
> # CONFIG_AUTO_ZRELADDR is not set
>
>
> I am trying to load the uncompressed vmlinux (not uImage or zImage) to
> 0x44800000 location in my RAM (crash kernel location)
>
> iomem has the following entry
> 44800000-5fbfffff : System RAM
>   44800000-4ddfffff : Crash kernel
>
>
> I used the following kexec command to load the kernel to that location
> /aruba/bin/kexec -d -p /aruba/bin/vmlinux
> --command-line="console=ttyHSL1,9600n8 rdinit=/sbin/init ubi.mtd=aos0
> ubi.mtd=aos1 ubi.mtd=ubifs crashkernel=150m at 1096m earlyprintk noisy"
> --atags --mem-min=0x44800000
>

I see mail on the list now.

As I had suggested,
- No need to use crashkernel=150m at 1096m in the command line of second kernel
- It seems that your earlyprintk is still not working. So, it would be good to 
fix that first, so that you can know if your crash kernel itself crashed very 
early.

>
> The crash kernel vmlinux does load at that location. Verified using dd
> command (44808000 == 1149272064)
> /aruba/bin # dd if=/dev/mem skip=1149272064 bs=1 count=20  | od -x
> 20+0000000     457f    464c    0101    0001    0000    0000    0000    0000
> 0 records in
> 20+00000020     0002    0028
>  records out
> 0000024
>
>
> However when I object dump the vmlinux, it has addresses pointing to c0000000
> Is this the reason why my crash kernel never boots (because the
> locations in  vmlinux is c0000000 and not 0x44800000 which is my start
> address)
>
> these are the last few lines after crashing the main kernel
>
> [ 7152.560043] Code: e3a02001 e5832000 f57ff04f e3a03000 (e5c32000)
> [ 7152.634583] Loading crashdump kernel...
> [ 7152.678819] image start ---- image->start 44808000
> [ 7152.736082]  kexec start address 44808000,
> [ 7152.786098]  reboot_code_buffer 0xc3300000,
> [ 7152.837144]  reboot_code_buffer_phys 44800000,
> [ 7152.891315]  kexec_mach_type 4704
> [ 7152.931927] Bye!
> [ 7152.953920] Inside __soft_restart !! c037fb68 4187fb68
> [ 7153.016338] __soft_restart final address 44800000
>
> code snippet from process.c in static void __soft_restart(void *addr) function
>         phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset);
>         printk(KERN_EMERG "__soft_restart final address %p \n",
> (unsigned char *)addr);
>
>         phys_reset((unsigned long)addr);
>         /* Should never get here. */
>         BUG();
>
>
> After cpu_reset I do not see any prints or kernel messages. How do I
> debug further ?
> Any pointers would help
>
>
> objdump of my vmlinux
>
> [mv_iap43_2 linux-3.4.0 (IAP-OCTOMORE)]$
> ../../../../aos-cmn/tools/armv7-openwrt-linux-gnu-uClibc-0.9.33.2/bin/arm-openwrt-linux-objdump
> -d vmlinux | less
>
> vmlinux:     file format elf32-littlearm
>
>
> Disassembly of section .head.text:
>
> c0008000 <stext>:
> c0008000:       e321f0d3        msr     CPSR_c, #211    ; 0xd3
> c0008004:       ee109f10        mrc     15, 0, r9, cr0, cr0, {0}
> c0008008:       eb0daf8c        bl      c0373e40 <__lookup_processor_type>
> c000800c:       e1b0a005        movs    sl, r5
> c0008010:       e28f302c        add     r3, pc, #44     ; 0x2c
> c0008014:       e8930110        ldm     r3, {r4, r8}
> c0008018:       e0434004        sub     r4, r3, r4
> c000801c:       e0888004        add     r8, r8, r4
> c0008020:       eb000009        bl      c000804c <__vet_atags>
> c0008024:       eb1fdff5        bl      c0800000 <__init_begin>
> c0008028:       eb000159        bl      c0008594 <__create_page_tables>
> c000802c:       e59fd00c        ldr     sp, [pc, #12]   ; c0008040 <stext+0x40>
> c0008030:       e28fe004        add     lr, pc, #4
> c0008034:       e1a08004        mov     r8, r4
> c0008038:       e28af010        add     pc, sl, #16
> c000803c:       ea0daf74        b       c0373e14 <__enable_mmu>
> c0008040:       c080005c        .word   0xc080005c
> c0008044:       c0008044        .word   0xc0008044
> c0008048:       c0000000        .word   0xc0000000
>
>
>  Thanks in advance
> regards,
> Mahesh
>
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
>


~Pratyush



More information about the kexec mailing list