From: Simon Horman <horms@verge.net.au>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: kexec@lists.infradead.org, linux-ia64@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [patch 3/3] kdump: use is_vmcore_usable() and
Date: Tue, 05 Aug 2008 07:19:36 +0000 [thread overview]
Message-ID: <20080805071934.GA7824@verge.net.au> (raw)
In-Reply-To: <20080801040759.GG27241@verge.net.au>
On Fri, Aug 01, 2008 at 02:08:01PM +1000, Simon Horman wrote:
> On Thu, Jul 31, 2008 at 09:21:52AM -0400, Vivek Goyal wrote:
> > On Thu, Jul 31, 2008 at 10:48:43AM +1000, Simon Horman wrote:
> > > On Wed, Jul 30, 2008 at 09:01:31AM -0400, Vivek Goyal wrote:
> > > > On Tue, Jul 29, 2008 at 06:12:38PM +1000, Simon Horman wrote:
> > > > > After recent changes setting elfcorehdr_addr to ELFCORE_ADDR_MAX
> > > > > will cause is_kdump_kernel() to return 0 when it should return 1.
> > > > > Instead use vmcore_unusable(), which has been added for this purpose.
> > > > >
> > > > > Signed-off-by: Simon Horman <horms@verge.net.au>
> > > > >
> > > > > Index: linux-2.6/arch/ia64/kernel/setup.c
> > > > > =================================> > > > > --- linux-2.6.orig/arch/ia64/kernel/setup.c 2008-07-29 17:27:43.000000000 +1000
> > > > > +++ linux-2.6/arch/ia64/kernel/setup.c 2008-07-29 17:50:50.000000000 +1000
> > > > > @@ -502,11 +502,11 @@ int __init reserve_elfcorehdr(unsigned l
> > > > > * to work properly.
> > > > > */
> > > > >
> > > > > - if (elfcorehdr_addr >= ELFCORE_ADDR_MAX)
> > > > > + if (!is_vmcore_usable())
> > > > > return -EINVAL;
> > > > >
> > > > > if ((length = vmcore_find_descriptor_size(elfcorehdr_addr)) = 0) {
> > > > > - elfcorehdr_addr = ELFCORE_ADDR_MAX;
> > > > > + vmcore_unusable();
> > > > > return -EINVAL;
> > > > > }
> > > > >
> > > >
> > > > Hi Simon,
> > > >
> > > > I had a question. I am not very sure what reserve_elfcorehdr is doing
> > > > but doing something similar to reserving some memory area where
> > > > elfcoreheaders are.
> > >
> > > Yes, that is my understanding of what it does.
> > >
> >
> > In x86 we never have to reserve that elf header area as we know that
> > booting kernel will never overwrite in that area. (Previous kernel has
> > modified the memory map in such a way so that elf header memory area
> > is not even part of memory range second kernel can use.
> >
> > Any idea, why do we need to reserve this area in IA64.
> >
> > > > I see that reserve_elfcorehdr is under CONFIG_PROC_VMCORE. Will it work
> > > > if CONFIG_PROC_VMCORE=n and somebody wants to use /dev/oldmem?
> > > > Or reserve_elfcorehdr should be under CONFIG_CRASH_DUMP?
> > >
> > > I'm not that familiar with /dev/oldmem, but as far as I can see,
> > > read_oldmem doesn't do anything with ELF headers, so reservation
> > > by vmcore_find_descriptor_size() should not be neccessary.
> > >
> >
> > /dev/oldmem does not directly touch elfcorehdr. But it indirectly does in
> > the sense that it is reading all the previous kernel's memory and dumping
> > it to disk. That would include elfcorehdrs also.
> >
> > Now if we need to do some kind of reservation for elf headers so that
> > fs/vmcore.c code can read it, then same should be true for /dev/oldmem
> > code also. Otherwise reserving elfcorehdr code should be redundant.
> >
> > That's why I raised the question that why do we need to reserve that area
> > in case of IA64. And if there is a genuine reason then probably that
> > reason will hold valid in case of /dev/oldmem also and we might have
> > to put is_vmcore_usable() definition also under CONFIG_CRASH_DUMP.
>
> Hi Vivek,
>
> yes, I do think that the problem is a bit deeper than my original response.
> I'll investigate this further.
Hi Vivek,
sorry for not getting back to you sooner. I think that the short answer
to this question is that the code should be protected by
CONFIG_CRASH_DUMP instead of CONFIG_PROC_VMCORE. This should ensure
that the memory where the elfheader lies is not used by the crashkernel,
regardless of if CONFIG_PROC_VMCORE is in effect or not.
I will make a patch for this ASAP.
prev parent reply other threads:[~2008-08-05 7:19 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20080729081235.293361145@vergenet.net>
2008-07-29 8:12 ` [patch 1/3] kdump: use is_kdump_kernel() in sba_init() Simon Horman
2008-07-29 14:51 ` Vivek Goyal
2008-07-29 22:40 ` Simon Horman
2008-07-29 23:15 ` Simon Horman
2008-07-30 12:55 ` Vivek Goyal
2008-07-29 8:12 ` [patch 2/3] kdump: add is_vmcore_usable() and vmcore_unusable() Simon Horman
2008-07-29 15:15 ` Vivek Goyal
2008-07-29 22:39 ` Simon Horman
2008-07-29 23:16 ` Simon Horman
2008-07-29 8:12 ` [patch 3/3] kdump: use is_vmcore_usable() and vmcore_unusable() in reserve_elfcorehdr() Simon Horman
2008-07-30 13:01 ` [patch 3/3] kdump: use is_vmcore_usable() and Vivek Goyal
2008-07-31 0:48 ` Simon Horman
2008-07-31 13:21 ` Vivek Goyal
2008-08-01 4:08 ` Simon Horman
2008-08-05 7:19 ` Simon Horman [this message]
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=20080805071934.GA7824@verge.net.au \
--to=horms@verge.net.au \
--cc=kexec@lists.infradead.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox