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