[PATCH] kexec-tools: Read always one vmcoreinfo file

Daniel Kiper daniel.kiper at oracle.com
Thu Nov 13 09:22:17 PST 2014


Hi Petr,

On Thu, Nov 13, 2014 at 04:51:48PM +0100, Petr Tesarik wrote:
> Hi all,
>
> this thread got somehow forgotten because of vacations...
> Anyway, read below.
>
> On Tue, 24 Jul 2012 15:54:10 +0200
> Daniel Kiper <daniel.kiper at oracle.com> wrote:
>
> > On Tue, Jul 24, 2012 at 10:18:34AM +0200, Petr Tesarik wrote:
> > > Dne Po 23. ??ervence 2012 22:10:59 Daniel Kiper napsal(a):
> > > > Hi Petr,
> > > >
> > > > On Mon, Jul 23, 2012 at 03:30:55PM +0200, Petr Tesarik wrote:
> > > > > Dne Po 23. ??ervence 2012 14:56:07 Petr Tesarik napsal(a):
> > > > > > Dne ??t 5. ??ervence 2012 14:16:35 Daniel Kiper napsal(a):
> > > > > > > vmcoreinfo file could exists under /sys/kernel (valid on baremetal
> > > > > > > only) and/or under /sys/hypervisor (valid when Xen dom0 is running).
> > > > > > > Read only one of them. It means that only one PT_NOTE will be always
> > > > > > > created. Remove extra code for second PT_NOTE creation.
> > > > > >
> > > > > > Hi Daniel,
> > > > > >
> > > > > > are you absolutely sure this is the right thing to do? IIUC these two
> > > > > > VMCORINFO notes are very different. The one from /sys/kernel/vmcoreinfo
> > > > > > describes the Dom0 kernel (type 'VMCOREINFO'), while the one from
> > > > > > /sys/hypervisor describes the Xen hypervisor (type 'XEN_VMCOREINFO').
> > > > > > If you keep only the hypervisor note, then e.g. makedumpfile won't be
> > > > > > able to use dumplevel greater than 1, nor will it be able to extract
> > > > > > the log buffer.
> > > > >
> > > > > I've just verified this, and I'm confident we have to keep both notes in
> > > > > the dump file. Simon, please revert Daniel's patch to avoid regressions.
> > > > >
> > > > > I'm attaching a sample VMCOREINFO_XEN and VMCOREINFO to demonstrate the
> > > > > difference. Note that the VMCOREINFO_XEN note is actually too big,
> > > > > because Xen doesn't bother to maintain the correct note size in the note
> > > > > header, so it always spans a complete page minus sizeof(Elf64_Nhdr)...
> > > >
> > > > [...]
> > > >
> > > > The problem with /sys/kernel/vmcoreinfo under Xen is that it expose invalid
> > > > physical address. It breaks /proc/vmcore in crash kernel. That is why I
> > > > proposed that fix. Additionally, /sys/kernel/vmcoreinfo is not available
> > > > under Xen Linux Ver. 2.6.18. However, I did not do any makedumpfile tests.
> > > > If you discovered any issues with my patch please drop me more details
> > > > about your tests (Xen version, Linux Kernel version, makedumpfile version,
> > > > command lines, config files, logs, etc.). I will be more then happy to
> > > > fix/improve kexec-tools and makedumpfile.
> > >
> > > Hi Daniel,
> > >
> > > well, Linux v2.6.18 does not have /sys/kernel/vmcoreinfo, simply because the
> > > VMCOREINFO infrastructure was not present in 2.6.18. It was added later with
> >
> > Yep.
> >
> > > commit fd59d231f81cb02870b9cf15f456a897f3669b4e, which went into 2.6.24.
> >
> > Hmmm... As I know 2.6.24 does not support kexec/kdump under Xen dom0. Correct?
> >
> > > I tested with the following combinations:
> > >
> > > * xen-3.3.1 + kernel-xen-2.6.27.54 + kexec-tools-2.0.0 + makedumpfile-1.3.1
> > > * xen-4.0.3 + kernel-xen-2.6.32.59 + kexec-tools-2.0.0 + makedumpfile-1.3.1
> > > * xen-4.1.2 + kernel-xen-3.0.34 + kexec-tools-2.0.0 + makedumpfile-1.4.0
> > >
> > > These versions correspond to SLES11-GA, SLES11-SP1 and SLES11-SP2,
> > > respectively. All of them work just fine and save both ELF notes into the
> > > dump.
> >
> > Could you test current kexec-tools development version and
> > latest makedumpfile version on latest SLES version?
>
> And indeed, I've just hit this regression with SLES12 GA (kernel 3.12.28,
> kexec-tools 2.0.5, makedumpfile 1.5.6).
>
> In the secondary kernel, makedumpfile complains that VMCOREINFO is not
> stored in /proc/vmcore:
>
> bash-4.2# makedumpfile -d 31 -X -E /proc/vmcore /kdump/mnt1/abuild/dumps/2014-11-13-13\:13/vmcore.elf
> Switched running mode from cyclic to non-cyclic,
> because the cyclic mode doesn't support Xen.
> /proc/vmcore doesn't contain vmcoreinfo.
> Specify '-x' option or '-i' option.
> Commandline parameter is invalid.
> Try `makedumpfile --help' for more information.
>
> makedumpfile Failed.
>
> Then I reverted commit 455d79f57e9367e5c59093fd74798905bd5762fc and
> everything works just fine.
>
> > > What do you mean by "invalid physical address"? I'm getting the correct
> > > physical address under Xen. Obviously, it must be translated to machine
> > > addresses if you need them from the secondary kernel.
> >
> > Correct vmcoreinfo address should be established by calling
> > HYPERVISOR_kexec_op(KEXEC_CMD_kexec_get_range, KEXEC_RANGE_MA_VMCOREINFO).
>
> The addresses I get from /sys/kernel/vmcoreinfo and
> from /sys/hypervisor/vmcoreinfo are machine addresses in both cases, so
> when a non-Xen kernel is used for dumping, everything works as expected.
>
> I am well aware that the Xen implementation in SLES differs
> substantially from mainline, but it seems to me that:
>
>   1. both VMCOREINFO and VMCOREINFO_XEN is required for dumpfile
>      filtering, and
>   2. both sysfs files should report machine addresses, because the current
>      p2m mapping is lost forever when the hypervisor executes the secondary
>      kernel, so physical addresses are pretty useless.
>
> I'm reverting the patch for the SLES distro, but I'd like to reach some
> kind of consensus with the community, too.

This reminds me something. I saw that kind of thing when I was working on
makedumpfile once. I have this issue on my TODO list. However, currently
I am working on EFI and multiboot2 stuff and I am not able to take a
look at it. I will do that after releasing first version of patches.
Probably in the middle of December. Is it OK for you?

Daniel



More information about the kexec mailing list