[BUG REPORT] kexec and makedumpfile can't detect PAGE_OFFSET on arm (Wang Nan)
Dave Anderson
anderson at redhat.com
Tue May 20 05:51:04 PDT 2014
----- 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?
Dave
More information about the kexec
mailing list