From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx1.redhat.com ([209.132.183.28]) by canuck.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1QnzDi-0001kY-L8 for kexec@lists.infradead.org; Mon, 01 Aug 2011 20:36:15 +0000 Date: Mon, 1 Aug 2011 16:36:07 -0400 From: Vivek Goyal Subject: Re: [patch v2 03/10] kdump: Add size to elfcorehdr kernel parameter Message-ID: <20110801203607.GI3805@redhat.com> References: <20110727125504.491183728@linux.vnet.ibm.com> <20110727125807.853426542@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20110727125807.853426542@linux.vnet.ibm.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=twosheds.infradead.org@lists.infradead.org To: Michael Holzheu 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, schwidefsky@de.ibm.com, kexec@lists.infradead.org On Wed, Jul 27, 2011 at 02:55:07PM +0200, Michael Holzheu wrote: > From: Michael Holzheu > > Currently only the address of the pre-allocated ELF header is passed with > the elfcorehdr= kernel parameter. In order to reserve memory for the header > in the 2nd kernel also the size is required. To pass the size with this > patch the syntax of the kernel parameter is extended as follows: > > elfcorehdr=[size[KMG]@]offset[KMG] > > This change is backward compatible because elfcorehdr=size is still allowed. Generally vmcore parses elfcorehdr to figure out the sizes. kexec-tools knows about it and relevant memory is excluded from second kernel's map with the help of memmap= command line option. Can you please mention that this is only s390 specific requirement as there are no memmap= equivalent options and somehow dump tools wants to know how big the elf header size is? Thanks Vivek > > Signed-off-by: Michael Holzheu > --- > Documentation/kernel-parameters.txt | 6 +++--- > include/linux/crash_dump.h | 1 + > kernel/crash_dump.c | 11 +++++++++++ > 3 files changed, 15 insertions(+), 3 deletions(-) > > --- a/Documentation/kernel-parameters.txt > +++ b/Documentation/kernel-parameters.txt > @@ -717,10 +717,10 @@ bytes respectively. Such letter suffixes > See Documentation/block/as-iosched.txt and > Documentation/block/deadline-iosched.txt for details. > > - elfcorehdr= [IA64,PPC,SH,X86] > + elfcorehdr=[size[KMG]@]offset[KMG] [IA64,PPC,SH,X86,S390] > Specifies physical address of start of kernel core > - image elf header. Generally kexec loader will > - pass this option to capture kernel. > + image elf header and optionally the size. Generally > + kexec loader will pass this option to capture kernel. > See Documentation/kdump/kdump.txt for details. > > enable_mtrr_cleanup [X86] > --- a/include/linux/crash_dump.h > +++ b/include/linux/crash_dump.h > @@ -10,6 +10,7 @@ > #define ELFCORE_ADDR_ERR (-2ULL) > > extern unsigned long long elfcorehdr_addr; > +extern unsigned long long elfcorehdr_size; > > extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, > unsigned long, int); > --- a/kernel/crash_dump.c > +++ b/kernel/crash_dump.c > @@ -20,8 +20,15 @@ unsigned long saved_max_pfn; > unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX; > > /* > + * stores the size of elf header of crash image > + */ > +unsigned long long elfcorehdr_size; > + > +/* > * elfcorehdr= specifies the location of elf core header stored by the crashed > * kernel. This option will be passed by kexec loader to the capture kernel. > + * > + * Syntax: elfcorehdr=[size[KMG]@]offset[KMG] > */ > static int __init setup_elfcorehdr(char *arg) > { > @@ -29,6 +36,10 @@ static int __init setup_elfcorehdr(char > if (!arg) > return -EINVAL; > elfcorehdr_addr = memparse(arg, &end); > + if (*end == '@') { > + elfcorehdr_size = elfcorehdr_addr; > + elfcorehdr_addr = memparse(end + 1, &end); > + } > return end > arg ? 0 : -EINVAL; > } > early_param("elfcorehdr", setup_elfcorehdr); _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec