[BUG REPORT] kexec and makedumpfile can't detect PAGE_OFFSET on arm (Wang Nan)

Wang Nan wangnan0 at huawei.com
Wed May 21 18:10:06 PDT 2014


On 2014/5/20 20:51, Dave Anderson wrote:
> 
> 
> ----- Original Message -----
>>
>> On 2014/5/20 3:41, Dave Anderson wrote:
>>>
>>>
>>> ----- Original Message -----
>>>>
>>>> Hi Atsushi and Simon,
>>>>
>>>> I find a problem about VMSPLIT on arm plarform, related to kexec and
>>>> makedumpfile.
>>>>
>>>> When CONFIG_VMSPLIT_1G/2G is selected by kernel, PAGE_OFFSET is actually
>>>> 0x40000000 or 0x80000000. However, kexec hard codes PAGE_OFFSET to
>>>> 0xc0000000 (in kexec/arch/arm/crashdump-arm.h), which is incorrect in
>>>> these situations. For example, on realview-pbx board with 1G/3G VMSPLIT,
>>>> PHDRs in generated /proc/vmcore is as follow:
>>>>
>>>>   Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
>>>>   NOTE           0x001000 0x00000000 0x00000000 0x00690 0x00690     0
>>>>   LOAD           0x002000 0xc0000000 0x00000000 0x10000000 0x10000000 RWE
>>>>   0
>>>>   LOAD           0x10002000 0xe0000000 0x20000000 0x8000000 0x8000000 RWE
>>>>   0
>>>>   LOAD           0x18002000 0xf0000000 0x30000000 0x10000000 0x10000000
>>>>   RWE 0
>>>>   LOAD           0x28002000 0x40000000 0x80000000 0x10000000 0x10000000
>>>>   RWE 0
>>>>
>>>> Which should be:
>>>>
>>>>   Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
>>>>   ...
>>>>   LOAD            ...     0x40000000 0x00000000 0x10000000 0x10000000 RWE
>>>>   0
>>>>   LOAD            ...     0x60000000 0x20000000 0x8000000 0x8000000 RWE 0
>>>>   LOAD            ...     0x70000000 0x30000000 0x10000000 0x10000000 RWE
>>>>   0
>>>>   LOAD            ...     0xc0000000 0x80000000 0x10000000 0x10000000 RWE
>>>>   0
>>>>
>>>> I don't know why crash utility can deal with it without problem,
>>>
>>> For ARM the crash utility masks the symbol value of "_stext" with 0x1fffffff
>>> to determine the PAGE_OFFSET value, which was basically copied from the way
>>> it was done for i386.
>>>
>>
>> kexec-tools can do the same thing by reading /proc/kallsyms (crashdump-x86.c has already done this).
>> However, KALLSYMS and KALLSYMS_ALL are turned off on some embedded systems with memory limitation,
>> which is common on ARM.
> 
> But you could use VMCOREINFO_SYMBOL(_stext), right?
> 

makedumpfile can use it, but not for kexec-tools.

> Dave
>  
> 





More information about the kexec mailing list