From: Martin Schwidefsky <schwidefsky@de.ibm.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: oomichi@mxs.nes.nec.co.jp, linux-s390@vger.kernel.org,
mahesh@linux.vnet.ibm.com, heiko.carstens@de.ibm.com,
linux-kernel@vger.kernel.org, hbabu@us.ibm.com,
horms@verge.net.au, ebiederm@xmission.com,
Michael Holzheu <holzheu@linux.vnet.ibm.com>,
kexec@lists.infradead.org
Subject: Re: [patch 0/9] kdump: Patch series for s390 support
Date: Wed, 20 Jul 2011 10:00:10 +0200 [thread overview]
Message-ID: <20110720100010.048a2751@mschwide> (raw)
In-Reply-To: <20110719150423.GA7001@redhat.com>
On Tue, 19 Jul 2011 11:04:23 -0400
Vivek Goyal <vgoyal@redhat.com> wrote:
> On Mon, Jul 18, 2011 at 08:03:08PM +0200, Michael Holzheu wrote:
> > Hello Vivek,
> >
> > On Mon, 2011-07-18 at 11:25 -0400, Vivek Goyal wrote:
> > > On Mon, Jul 18, 2011 at 04:44:13PM +0200, Michael Holzheu wrote:
> > > > On Mon, 2011-07-18 at 10:19 -0400, Vivek Goyal wrote:
> > > > > - Make sure these headers are not overwritten by newly booted kernel.
> > > >
> > > > And that was my question: What is the best way to do that. E.g. we could
> > > > pass a 2nd kernel parameter "elfcorehdr_size", implement s390 boot
> > > > parameter or implement the memmap kernel parameter.
> > >
> > > You could do that but I think a more generic parameter will make more
> > > sense.
> > >
> > > - Either something along the lines of memmap=
> > > - Or excludemem=x@y
> > > - Or modify memory map in s390 specific bootloading protocol block etc.
> >
> > Ok, understood. Thanks for the information.
> >
> > We still have discussions here, if we could somehow implement our
> > original idea of triggering kdump by the stand-alone dump tools. Sorry
> > for being so stubborn :-(
>
> What's the advantage of that. Why are we so stuborn about first passing
> the control to dump tools after panic()?
I wonder when you will finally get it: we are not talking about the simple
case of a panic. Not all problems of the system will show up as a panic.
We occasionally have systems that just stop dead in their tracks. And this
is where an external dump trigger comes into play. For s390 that is the
stand-alone dumper.
> The case of purgatory corruption is no different then panic() code
> and associated hook code corruption.
That is true. All the different pieces of code need to be verified with
a checksum.
> It is a corner case and even if it gets corrupted you have other
> mechanisms to IPL dump tools and capture dump.
It is definitely not a corner case. We use the stand-alone dumper as a
trigger to either start kdump if the code for kdump has not been corrupted
or as a fallback to do a full dump. The catch here is that we need a way to
distinguish the two cases. And that is where the checksums come into play.
See?
> Why do you want to mix two mechanisms. What's the advantage of making
> even dump tools complicated and make it aware of a kernel binary
> object purgatory?
We do that so we can use kdump in situations where the system just drops
dead and does not go over panic.
> To me the simple interface is that there is no coupling between dump
> tools and kdump. If there is no coupling, then there is no need to
> exchange any information and no need to make any assumption about
> hard coded location where purgatory entry point, size and checksums
> are stored.
Without the coupling we would have to do a full dump in case of an
unresponsive system. No fun if you have lots of main memory.
> >
> > So here comes the modified suggestion:
> >
> > As requested by you we can pre-allocate the ELF header and use purgatory
> > as done on other architectures.
> >
> > To allow the stand-alone dump tools as kdump triggers, we then only
> > would have to provide an s390 specific way to tell the stand-alone dump
> > tools:
> > 1. Entry point address into purgatory
> > 2. Address, size and checksum for purgatory
> >
> > We could store address, size and checksum of the purgatory to a fixed
> > offset in the kdump kernel image. This can be done in the kexec tools
> > code.
>
> I think this will require kernel changes also? Otherwise how would you
> store variables in kernel address space.
I would think that this would best be implemented in some arch backend
function that is called on kexec_load.
> Secondly, if the goal is to just be able to checksum purgatory also, then
> it probably should be done in a generic mannner so that kernel could
> checksum purgatory before jumping to it.
You still seem to assume that the code that does the checksumming is
included in the main kernel and gets executed with crash_kexec. This is
incorrect in case of an external dump trigger. And before the stand-alone
dumper branches to the purgatory code it better makes sure that it does
not execute random numbers, otherwise we would get no dump at all.
> > Then the dump tools only would need the crashkernel memory offset
> > to find all information. Then dump tools will verify purgatory and
> > afterwards jump to the purgatory code. Then purgatory verifies all kexec
> > segments. For s390, if this check fails, we return to caller
> > (stand-alone tools). If the check is ok, then purgatory code on s390
> > saves all registers to the preallocated ELF notes and starts kdump.
>
> So far I really don't think that there is any need of involving dump
> tools here. By making it a requirement we are just making the design
> complex with no gains.
We think otherwise. The dump trigger via the stand-alone dump tool is
a central requirement for us. And the design impact is minimal with the
latest suggestion from Michael.
> >
> > I think, this is all s390 specific and IMHO will not affect other
> > architectures at all.
> >
> > What you as kdump framework maintainer would have to accept with this
> > solution is that it is allowed now to start kdump directly via purgatory
> > without using code from the old kernel (e.g. crash_kexec). This has as
> > implication that all things that the old kernel has to initialize for
> > kdump has to be done before the system crashes. Currently this is only
> > the initialization of vmcoreinfo.
>
> when would you save vmcoreinfo? I guess I shall have to look at the
> patches.
That should be patch #4 from the series.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Michael Holzheu <holzheu@linux.vnet.ibm.com>,
ebiederm@xmission.com, hbabu@us.ibm.com,
mahesh@linux.vnet.ibm.com, oomichi@mxs.nes.nec.co.jp,
horms@verge.net.au, heiko.carstens@de.ibm.com,
kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
linux-s390@vger.kernel.org
Subject: Re: [patch 0/9] kdump: Patch series for s390 support
Date: Wed, 20 Jul 2011 10:00:10 +0200 [thread overview]
Message-ID: <20110720100010.048a2751@mschwide> (raw)
In-Reply-To: <20110719150423.GA7001@redhat.com>
On Tue, 19 Jul 2011 11:04:23 -0400
Vivek Goyal <vgoyal@redhat.com> wrote:
> On Mon, Jul 18, 2011 at 08:03:08PM +0200, Michael Holzheu wrote:
> > Hello Vivek,
> >
> > On Mon, 2011-07-18 at 11:25 -0400, Vivek Goyal wrote:
> > > On Mon, Jul 18, 2011 at 04:44:13PM +0200, Michael Holzheu wrote:
> > > > On Mon, 2011-07-18 at 10:19 -0400, Vivek Goyal wrote:
> > > > > - Make sure these headers are not overwritten by newly booted kernel.
> > > >
> > > > And that was my question: What is the best way to do that. E.g. we could
> > > > pass a 2nd kernel parameter "elfcorehdr_size", implement s390 boot
> > > > parameter or implement the memmap kernel parameter.
> > >
> > > You could do that but I think a more generic parameter will make more
> > > sense.
> > >
> > > - Either something along the lines of memmap=
> > > - Or excludemem=x@y
> > > - Or modify memory map in s390 specific bootloading protocol block etc.
> >
> > Ok, understood. Thanks for the information.
> >
> > We still have discussions here, if we could somehow implement our
> > original idea of triggering kdump by the stand-alone dump tools. Sorry
> > for being so stubborn :-(
>
> What's the advantage of that. Why are we so stuborn about first passing
> the control to dump tools after panic()?
I wonder when you will finally get it: we are not talking about the simple
case of a panic. Not all problems of the system will show up as a panic.
We occasionally have systems that just stop dead in their tracks. And this
is where an external dump trigger comes into play. For s390 that is the
stand-alone dumper.
> The case of purgatory corruption is no different then panic() code
> and associated hook code corruption.
That is true. All the different pieces of code need to be verified with
a checksum.
> It is a corner case and even if it gets corrupted you have other
> mechanisms to IPL dump tools and capture dump.
It is definitely not a corner case. We use the stand-alone dumper as a
trigger to either start kdump if the code for kdump has not been corrupted
or as a fallback to do a full dump. The catch here is that we need a way to
distinguish the two cases. And that is where the checksums come into play.
See?
> Why do you want to mix two mechanisms. What's the advantage of making
> even dump tools complicated and make it aware of a kernel binary
> object purgatory?
We do that so we can use kdump in situations where the system just drops
dead and does not go over panic.
> To me the simple interface is that there is no coupling between dump
> tools and kdump. If there is no coupling, then there is no need to
> exchange any information and no need to make any assumption about
> hard coded location where purgatory entry point, size and checksums
> are stored.
Without the coupling we would have to do a full dump in case of an
unresponsive system. No fun if you have lots of main memory.
> >
> > So here comes the modified suggestion:
> >
> > As requested by you we can pre-allocate the ELF header and use purgatory
> > as done on other architectures.
> >
> > To allow the stand-alone dump tools as kdump triggers, we then only
> > would have to provide an s390 specific way to tell the stand-alone dump
> > tools:
> > 1. Entry point address into purgatory
> > 2. Address, size and checksum for purgatory
> >
> > We could store address, size and checksum of the purgatory to a fixed
> > offset in the kdump kernel image. This can be done in the kexec tools
> > code.
>
> I think this will require kernel changes also? Otherwise how would you
> store variables in kernel address space.
I would think that this would best be implemented in some arch backend
function that is called on kexec_load.
> Secondly, if the goal is to just be able to checksum purgatory also, then
> it probably should be done in a generic mannner so that kernel could
> checksum purgatory before jumping to it.
You still seem to assume that the code that does the checksumming is
included in the main kernel and gets executed with crash_kexec. This is
incorrect in case of an external dump trigger. And before the stand-alone
dumper branches to the purgatory code it better makes sure that it does
not execute random numbers, otherwise we would get no dump at all.
> > Then the dump tools only would need the crashkernel memory offset
> > to find all information. Then dump tools will verify purgatory and
> > afterwards jump to the purgatory code. Then purgatory verifies all kexec
> > segments. For s390, if this check fails, we return to caller
> > (stand-alone tools). If the check is ok, then purgatory code on s390
> > saves all registers to the preallocated ELF notes and starts kdump.
>
> So far I really don't think that there is any need of involving dump
> tools here. By making it a requirement we are just making the design
> complex with no gains.
We think otherwise. The dump trigger via the stand-alone dump tool is
a central requirement for us. And the design impact is minimal with the
latest suggestion from Michael.
> >
> > I think, this is all s390 specific and IMHO will not affect other
> > architectures at all.
> >
> > What you as kdump framework maintainer would have to accept with this
> > solution is that it is allowed now to start kdump directly via purgatory
> > without using code from the old kernel (e.g. crash_kexec). This has as
> > implication that all things that the old kernel has to initialize for
> > kdump has to be done before the system crashes. Currently this is only
> > the initialization of vmcoreinfo.
>
> when would you save vmcoreinfo? I guess I shall have to look at the
> patches.
That should be patch #4 from the series.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
next prev parent reply other threads:[~2011-07-20 8:00 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-04 17:09 [patch 0/9] kdump: Patch series for s390 support Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 1/9] kdump: Add KEXEC_CRASH_CONTROL_MEMORY_LIMIT Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 2/9] kdump: Add machine_kexec_finish() Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 3/9] kdump: Make kimage_load_crash_segment() weak Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 4/9] kdump: Initialize vmcoreinfo note at startup Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 5/9] kdump: Allow vmcore ELF header to be created in new kernel Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 6/9] kdump: Merge set_vmcore_list_offsets_elf_32/64() Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 7/9] kdump: Trigger kdump via panic notifier chain on s390 Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 8/9] s390: kdump backend code Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-04 17:09 ` [patch 9/9] kexec-tools: Add s390 kdump support Michael Holzheu
2011-07-04 17:09 ` Michael Holzheu
2011-07-05 20:26 ` [patch 0/9] kdump: Patch series for s390 support Vivek Goyal
2011-07-05 20:26 ` Vivek Goyal
2011-07-06 9:24 ` Michael Holzheu
2011-07-06 9:24 ` Michael Holzheu
2011-07-07 19:33 ` Vivek Goyal
2011-07-07 19:33 ` Vivek Goyal
2011-07-08 9:01 ` Martin Schwidefsky
2011-07-08 9:01 ` Martin Schwidefsky
2011-07-11 14:42 ` Vivek Goyal
2011-07-11 14:42 ` Vivek Goyal
2011-07-11 15:56 ` Martin Schwidefsky
2011-07-11 15:56 ` Martin Schwidefsky
2011-07-13 16:02 ` Vivek Goyal
2011-07-13 16:02 ` Vivek Goyal
2011-07-13 16:46 ` Martin Schwidefsky
2011-07-13 16:46 ` Martin Schwidefsky
2011-07-13 16:59 ` Michael Holzheu
2011-07-13 16:59 ` Michael Holzheu
2011-07-13 17:19 ` Vivek Goyal
2011-07-13 17:19 ` Vivek Goyal
2011-07-13 20:00 ` Vivek Goyal
2011-07-13 20:00 ` Vivek Goyal
2011-07-14 7:18 ` Martin Schwidefsky
2011-07-14 7:18 ` Martin Schwidefsky
2011-07-14 17:55 ` Vivek Goyal
2011-07-14 17:55 ` Vivek Goyal
2011-07-14 18:05 ` Vivek Goyal
2011-07-14 18:05 ` Vivek Goyal
2011-07-15 14:21 ` Michael Holzheu
2011-07-15 14:21 ` Michael Holzheu
2011-07-15 14:38 ` Vivek Goyal
2011-07-15 14:38 ` Vivek Goyal
2011-07-15 15:43 ` Michael Holzheu
2011-07-15 15:43 ` Michael Holzheu
2011-07-18 12:31 ` Vivek Goyal
2011-07-18 12:31 ` Vivek Goyal
2011-07-18 14:00 ` Michael Holzheu
2011-07-18 14:00 ` Michael Holzheu
2011-07-18 14:19 ` Vivek Goyal
2011-07-18 14:19 ` Vivek Goyal
2011-07-18 14:44 ` Michael Holzheu
2011-07-18 14:44 ` Michael Holzheu
2011-07-18 15:25 ` Vivek Goyal
2011-07-18 15:25 ` Vivek Goyal
2011-07-18 18:03 ` Michael Holzheu
2011-07-18 18:03 ` Michael Holzheu
2011-07-19 15:04 ` Vivek Goyal
2011-07-19 15:04 ` Vivek Goyal
2011-07-20 8:00 ` Martin Schwidefsky [this message]
2011-07-20 8:00 ` Martin Schwidefsky
2011-07-20 9:28 ` Michael Holzheu
2011-07-20 9:28 ` Michael Holzheu
2011-07-20 20:24 ` Vivek Goyal
2011-07-20 20:24 ` Vivek Goyal
2011-07-20 19:25 ` Vivek Goyal
2011-07-20 19:25 ` Vivek Goyal
2011-07-21 14:58 ` Michael Holzheu
2011-07-21 14:58 ` Michael Holzheu
2011-07-21 21:22 ` Vivek Goyal
2011-07-21 21:22 ` Vivek Goyal
2011-07-22 9:33 ` Michael Holzheu
2011-07-22 9:33 ` Michael Holzheu
2011-07-25 16:02 ` Vivek Goyal
2011-07-25 16:02 ` Vivek Goyal
2011-07-26 9:44 ` Michael Holzheu
2011-07-26 9:44 ` Michael Holzheu
2011-07-22 15:26 ` Michael Holzheu
2011-07-22 15:26 ` Michael Holzheu
2011-07-25 18:07 ` Vivek Goyal
2011-07-25 18:07 ` Vivek Goyal
2011-07-26 9:32 ` Michael Holzheu
2011-07-26 9:32 ` Michael Holzheu
2011-07-15 13:56 ` Michael Holzheu
2011-07-15 13:56 ` Michael Holzheu
2011-07-15 14:18 ` Vivek Goyal
2011-07-15 14:18 ` Vivek Goyal
2011-07-18 13:57 ` Martin Schwidefsky
2011-07-18 13:57 ` Martin Schwidefsky
2011-07-08 13:04 ` Michael Holzheu
2011-07-08 13:04 ` Michael Holzheu
2011-07-11 15:36 ` Vivek Goyal
2011-07-11 15:36 ` Vivek Goyal
2011-07-12 17:29 ` Michael Holzheu
2011-07-12 17:29 ` Michael Holzheu
2011-07-08 14:02 ` Michael Holzheu
2011-07-11 14:07 ` Vivek Goyal
2011-07-11 14:07 ` Vivek Goyal
2011-07-11 15:06 ` Michael Holzheu
2011-07-11 15:06 ` Michael Holzheu
2011-07-09 17:58 ` Valdis.Kletnieks
2011-07-12 13:52 ` Vivek Goyal
2011-07-12 13:52 ` Vivek Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110720100010.048a2751@mschwide \
--to=schwidefsky@de.ibm.com \
--cc=ebiederm@xmission.com \
--cc=hbabu@us.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=holzheu@linux.vnet.ibm.com \
--cc=horms@verge.net.au \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mahesh@linux.vnet.ibm.com \
--cc=oomichi@mxs.nes.nec.co.jp \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.