All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cliff Wickman <cpw@sgi.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Michael Holzheu <holzheu@linux.vnet.ibm.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	kexec@lists.infradead.org, Jan Willeke <willeke@de.ibm.com>,
	linux-kernel@vger.kernel.org,
	HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>
Subject: Re: [PATCH v5 1/5] vmcore: Introduce ELF header in new memory feature
Date: Thu, 27 Jun 2013 15:10:47 -0500	[thread overview]
Message-ID: <20130627201047.GB28477@sgi.com> (raw)
In-Reply-To: <20130627193202.GK4899@redhat.com>

On Thu, Jun 27, 2013 at 03:32:02PM -0400, Vivek Goyal wrote:
> On Fri, Jun 21, 2013 at 04:17:03PM +0200, Michael Holzheu wrote:
> > On Fri, 14 Jun 2013 14:54:02 -0400
> > Vivek Goyal <vgoyal@redhat.com> wrote:
> > 
> > > On Fri, Jun 07, 2013 at 06:55:57PM +0200, Michael Holzheu wrote:
> > > 
> > > [..]
> > > > @@ -935,10 +967,17 @@ static int __init vmcore_init(void)
> > > >  {
> > > >  	int rc = 0;
> > > >  
> > > > -	/* If elfcorehdr= has been passed in cmdline, then capture the dump.*/
> > > > -	if (!(is_vmcore_usable()))
> > > > -		return rc;
> > > > +	/*
> > > > +	 * If elfcorehdr= has not been passed in cmdline, try to get the
> > > > +	 * header from 2nd kernel, then capture the dump.
> > > > +	 */
> > > > +	if (!(is_vmcore_usable())) {
> > > > +		rc = elfcorehdr_alloc();
> > > > +		if (rc)
> > > > +			return rc;
> > > > +	}
> > > 
> > > Hi Michael,
> > > 
> > > Patch description says that elfcorehdr_alloc() returns the addr and 
> > > size of elf headers. But that does not seem to be the case here. Has
> > > it been modified in later patches.
> > 
> > Sorry, that is a relict of one of my previous experiments where I tried
> > to implement elfcorehdr_addr() similar to the way as you suggest it now.
> > Because elfcorehdr_addr is a global variable, I decided to not pass
> > it in the functions. But of course I can change that again if you prefer
> > that.
> >  
> > > Also will it be better if we call elfcorehdr_alloc() always and then
> > > check for is_vmcore_usable().
> > > 
> > > Something like.
> > > 
> > > elfcorehdr_addr = elfcorehdr_alloc()
> > > if (elfcorehdr_addr < )
> > > 	return elfcorehdr_addr
> > > 
> > > if (!(is_vmcore_usable()))
> > > 	return error
> > 
> > Ok, but then I think elfcorehdr_alloc() should also return
> > the elfcorehdr_size.
> > 
> > So what about the following patch:
> 
> This patch looks good to me. There are little ugly pieces w.r.t not
> setting elfcorehdr_addr null after calling free() as there are other
> pieces depdendent on elfcorehdr_addr. I think sometime later we can
> have a separate variable to track track whether this is kdump kernel
> and remove dependency on elfcorehdr_addr being set.
> 
> 
> So I am fine with this patch.

I would like to endorse this whole vmcore series.  It greatly speeds the
writing of a system dump.

In my recent tests these patches cut 16% to 58% off the time to create a
dump, depending on the size of the system.
On an idle 117G memory, for example, the patches reduced the time from 4.8
minutes to 2.0 minutes.  (the savings are less pronounced on a bigger
system)

-Cliff

> 
> Vivek
> 
> > ---
> >  fs/proc/vmcore.c           |   65 +++++++++++++++++++++++++++++++++++++--------
> >  include/linux/crash_dump.h |    6 ++++
> >  2 files changed, 60 insertions(+), 11 deletions(-)
> > 
> > --- a/fs/proc/vmcore.c
> > +++ b/fs/proc/vmcore.c
> > @@ -123,6 +123,36 @@ static ssize_t read_from_oldmem(char *bu
> >  	return read;
> >  }
> >  
> > +/*
> > + * Architectures may override this function to allocate ELF header in 2nd kernel
> > + */
> > +int __weak elfcorehdr_alloc(unsigned long long *addr, unsigned long long *size)
> > +{
> > +	return 0;
> > +}
> > +
> > +/*
> > + * Architectures may override this function to free header
> > + */
> > +void __weak elfcorehdr_free(unsigned long long addr)
> > +{}
> > +
> > +/*
> > + * Architectures may override this function to read from ELF header
> > + */
> > +ssize_t __weak elfcorehdr_read(char *buf, size_t count, u64 *ppos)
> > +{
> > +	return read_from_oldmem(buf, count, ppos, 0);
> > +}
> > +
> > +/*
> > + * Architectures may override this function to read from notes sections
> > + */
> > +ssize_t __weak elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos)
> > +{
> > +	return read_from_oldmem(buf, count, ppos, 0);
> > +}
> > +
> >  /* Read from the ELF header and then the crash dump. On error, negative value is
> >   * returned otherwise number of bytes read are returned.
> >   */
> > @@ -322,7 +352,7 @@ static int __init update_note_header_siz
> >  		notes_section = kmalloc(max_sz, GFP_KERNEL);
> >  		if (!notes_section)
> >  			return -ENOMEM;
> > -		rc = read_from_oldmem(notes_section, max_sz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_section, max_sz, &offset);
> >  		if (rc < 0) {
> >  			kfree(notes_section);
> >  			return rc;
> > @@ -409,7 +439,8 @@ static int __init copy_notes_elf64(const
> >  		if (phdr_ptr->p_type != PT_NOTE)
> >  			continue;
> >  		offset = phdr_ptr->p_offset;
> > -		rc = read_from_oldmem(notes_buf, phdr_ptr->p_memsz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_buf, phdr_ptr->p_memsz,
> > +					   &offset);
> >  		if (rc < 0)
> >  			return rc;
> >  		notes_buf += phdr_ptr->p_memsz;
> > @@ -510,7 +541,7 @@ static int __init update_note_header_siz
> >  		notes_section = kmalloc(max_sz, GFP_KERNEL);
> >  		if (!notes_section)
> >  			return -ENOMEM;
> > -		rc = read_from_oldmem(notes_section, max_sz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_section, max_sz, &offset);
> >  		if (rc < 0) {
> >  			kfree(notes_section);
> >  			return rc;
> > @@ -597,7 +628,8 @@ static int __init copy_notes_elf32(const
> >  		if (phdr_ptr->p_type != PT_NOTE)
> >  			continue;
> >  		offset = phdr_ptr->p_offset;
> > -		rc = read_from_oldmem(notes_buf, phdr_ptr->p_memsz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_buf, phdr_ptr->p_memsz,
> > +					   &offset);
> >  		if (rc < 0)
> >  			return rc;
> >  		notes_buf += phdr_ptr->p_memsz;
> > @@ -793,7 +825,7 @@ static int __init parse_crash_elf64_head
> >  	addr = elfcorehdr_addr;
> >  
> >  	/* Read Elf header */
> > -	rc = read_from_oldmem((char*)&ehdr, sizeof(Elf64_Ehdr), &addr, 0);
> > +	rc = elfcorehdr_read((char *)&ehdr, sizeof(Elf64_Ehdr), &addr);
> >  	if (rc < 0)
> >  		return rc;
> >  
> > @@ -820,7 +852,7 @@ static int __init parse_crash_elf64_head
> >  	if (!elfcorebuf)
> >  		return -ENOMEM;
> >  	addr = elfcorehdr_addr;
> > -	rc = read_from_oldmem(elfcorebuf, elfcorebuf_sz_orig, &addr, 0);
> > +	rc = elfcorehdr_read(elfcorebuf, elfcorebuf_sz_orig, &addr);
> >  	if (rc < 0)
> >  		goto fail;
> >  
> > @@ -849,7 +881,7 @@ static int __init parse_crash_elf32_head
> >  	addr = elfcorehdr_addr;
> >  
> >  	/* Read Elf header */
> > -	rc = read_from_oldmem((char*)&ehdr, sizeof(Elf32_Ehdr), &addr, 0);
> > +	rc = elfcorehdr_read((char *)&ehdr, sizeof(Elf32_Ehdr), &addr);
> >  	if (rc < 0)
> >  		return rc;
> >  
> > @@ -875,7 +907,7 @@ static int __init parse_crash_elf32_head
> >  	if (!elfcorebuf)
> >  		return -ENOMEM;
> >  	addr = elfcorehdr_addr;
> > -	rc = read_from_oldmem(elfcorebuf, elfcorebuf_sz_orig, &addr, 0);
> > +	rc = elfcorehdr_read(elfcorebuf, elfcorebuf_sz_orig, &addr);
> >  	if (rc < 0)
> >  		goto fail;
> >  
> > @@ -902,7 +934,7 @@ static int __init parse_crash_elf_header
> >  	int rc=0;
> >  
> >  	addr = elfcorehdr_addr;
> > -	rc = read_from_oldmem(e_ident, EI_NIDENT, &addr, 0);
> > +	rc = elfcorehdr_read(e_ident, EI_NIDENT, &addr);
> >  	if (rc < 0)
> >  		return rc;
> >  	if (memcmp(e_ident, ELFMAG, SELFMAG) != 0) {
> > @@ -935,7 +967,14 @@ static int __init vmcore_init(void)
> >  {
> >  	int rc = 0;
> >  
> > -	/* If elfcorehdr= has been passed in cmdline, then capture the dump.*/
> > +	/* Allow architectures to allocate ELF header in 2nd kernel */
> > +	rc = elfcorehdr_alloc(&elfcorehdr_addr, &elfcorehdr_size);
> > +	if (rc)
> > +		return rc;
> > +	/*
> > +	 * If elfcorehdr= has been passed in cmdline or created in 2nd kernel,
> > +	 * then capture the dump.
> > +	 */
> >  	if (!(is_vmcore_usable()))
> >  		return rc;
> >  	rc = parse_crash_elf_headers();
> > @@ -943,7 +982,11 @@ static int __init vmcore_init(void)
> >  		pr_warn("Kdump: vmcore not initialized\n");
> >  		return rc;
> >  	}
> > -
> > +	elfcorehdr_free(elfcorehdr_addr);
> > +	/*
> > +	 * elfcorehdr_addr must not be set to NULL here to keep
> > +	 * is_kdump_kernel() working.
> > +	 */
> >  	proc_vmcore = proc_create("vmcore", S_IRUSR, NULL, &proc_vmcore_operations);
> >  	if (proc_vmcore)
> >  		proc_vmcore->size = vmcore_size;
> > --- a/include/linux/crash_dump.h
> > +++ b/include/linux/crash_dump.h
> > @@ -12,6 +12,12 @@
> >  extern unsigned long long elfcorehdr_addr;
> >  extern unsigned long long elfcorehdr_size;
> >  
> > +extern int __weak elfcorehdr_alloc(unsigned long long *addr,
> > +				   unsigned long long *size);
> > +extern void __weak elfcorehdr_free(unsigned long long addr);
> > +extern ssize_t __weak elfcorehdr_read(char *buf, size_t count, u64 *ppos);
> > +extern ssize_t __weak elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos);
> > +
> >  extern ssize_t copy_oldmem_page(unsigned long, char *, size_t,
> >  						unsigned long, int);
> >  
> 
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

-- 
Cliff Wickman
SGI
cpw@sgi.com
(651) 683-3824

WARNING: multiple messages have this Message-ID (diff)
From: Cliff Wickman <cpw@sgi.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>,
	kexec@lists.infradead.org, Jan Willeke <willeke@de.ibm.com>,
	linux-kernel@vger.kernel.org,
	HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	Michael Holzheu <holzheu@linux.vnet.ibm.com>
Subject: Re: [PATCH v5 1/5] vmcore: Introduce ELF header in new memory feature
Date: Thu, 27 Jun 2013 15:10:47 -0500	[thread overview]
Message-ID: <20130627201047.GB28477@sgi.com> (raw)
In-Reply-To: <20130627193202.GK4899@redhat.com>

On Thu, Jun 27, 2013 at 03:32:02PM -0400, Vivek Goyal wrote:
> On Fri, Jun 21, 2013 at 04:17:03PM +0200, Michael Holzheu wrote:
> > On Fri, 14 Jun 2013 14:54:02 -0400
> > Vivek Goyal <vgoyal@redhat.com> wrote:
> > 
> > > On Fri, Jun 07, 2013 at 06:55:57PM +0200, Michael Holzheu wrote:
> > > 
> > > [..]
> > > > @@ -935,10 +967,17 @@ static int __init vmcore_init(void)
> > > >  {
> > > >  	int rc = 0;
> > > >  
> > > > -	/* If elfcorehdr= has been passed in cmdline, then capture the dump.*/
> > > > -	if (!(is_vmcore_usable()))
> > > > -		return rc;
> > > > +	/*
> > > > +	 * If elfcorehdr= has not been passed in cmdline, try to get the
> > > > +	 * header from 2nd kernel, then capture the dump.
> > > > +	 */
> > > > +	if (!(is_vmcore_usable())) {
> > > > +		rc = elfcorehdr_alloc();
> > > > +		if (rc)
> > > > +			return rc;
> > > > +	}
> > > 
> > > Hi Michael,
> > > 
> > > Patch description says that elfcorehdr_alloc() returns the addr and 
> > > size of elf headers. But that does not seem to be the case here. Has
> > > it been modified in later patches.
> > 
> > Sorry, that is a relict of one of my previous experiments where I tried
> > to implement elfcorehdr_addr() similar to the way as you suggest it now.
> > Because elfcorehdr_addr is a global variable, I decided to not pass
> > it in the functions. But of course I can change that again if you prefer
> > that.
> >  
> > > Also will it be better if we call elfcorehdr_alloc() always and then
> > > check for is_vmcore_usable().
> > > 
> > > Something like.
> > > 
> > > elfcorehdr_addr = elfcorehdr_alloc()
> > > if (elfcorehdr_addr < )
> > > 	return elfcorehdr_addr
> > > 
> > > if (!(is_vmcore_usable()))
> > > 	return error
> > 
> > Ok, but then I think elfcorehdr_alloc() should also return
> > the elfcorehdr_size.
> > 
> > So what about the following patch:
> 
> This patch looks good to me. There are little ugly pieces w.r.t not
> setting elfcorehdr_addr null after calling free() as there are other
> pieces depdendent on elfcorehdr_addr. I think sometime later we can
> have a separate variable to track track whether this is kdump kernel
> and remove dependency on elfcorehdr_addr being set.
> 
> 
> So I am fine with this patch.

I would like to endorse this whole vmcore series.  It greatly speeds the
writing of a system dump.

In my recent tests these patches cut 16% to 58% off the time to create a
dump, depending on the size of the system.
On an idle 117G memory, for example, the patches reduced the time from 4.8
minutes to 2.0 minutes.  (the savings are less pronounced on a bigger
system)

-Cliff

> 
> Vivek
> 
> > ---
> >  fs/proc/vmcore.c           |   65 +++++++++++++++++++++++++++++++++++++--------
> >  include/linux/crash_dump.h |    6 ++++
> >  2 files changed, 60 insertions(+), 11 deletions(-)
> > 
> > --- a/fs/proc/vmcore.c
> > +++ b/fs/proc/vmcore.c
> > @@ -123,6 +123,36 @@ static ssize_t read_from_oldmem(char *bu
> >  	return read;
> >  }
> >  
> > +/*
> > + * Architectures may override this function to allocate ELF header in 2nd kernel
> > + */
> > +int __weak elfcorehdr_alloc(unsigned long long *addr, unsigned long long *size)
> > +{
> > +	return 0;
> > +}
> > +
> > +/*
> > + * Architectures may override this function to free header
> > + */
> > +void __weak elfcorehdr_free(unsigned long long addr)
> > +{}
> > +
> > +/*
> > + * Architectures may override this function to read from ELF header
> > + */
> > +ssize_t __weak elfcorehdr_read(char *buf, size_t count, u64 *ppos)
> > +{
> > +	return read_from_oldmem(buf, count, ppos, 0);
> > +}
> > +
> > +/*
> > + * Architectures may override this function to read from notes sections
> > + */
> > +ssize_t __weak elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos)
> > +{
> > +	return read_from_oldmem(buf, count, ppos, 0);
> > +}
> > +
> >  /* Read from the ELF header and then the crash dump. On error, negative value is
> >   * returned otherwise number of bytes read are returned.
> >   */
> > @@ -322,7 +352,7 @@ static int __init update_note_header_siz
> >  		notes_section = kmalloc(max_sz, GFP_KERNEL);
> >  		if (!notes_section)
> >  			return -ENOMEM;
> > -		rc = read_from_oldmem(notes_section, max_sz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_section, max_sz, &offset);
> >  		if (rc < 0) {
> >  			kfree(notes_section);
> >  			return rc;
> > @@ -409,7 +439,8 @@ static int __init copy_notes_elf64(const
> >  		if (phdr_ptr->p_type != PT_NOTE)
> >  			continue;
> >  		offset = phdr_ptr->p_offset;
> > -		rc = read_from_oldmem(notes_buf, phdr_ptr->p_memsz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_buf, phdr_ptr->p_memsz,
> > +					   &offset);
> >  		if (rc < 0)
> >  			return rc;
> >  		notes_buf += phdr_ptr->p_memsz;
> > @@ -510,7 +541,7 @@ static int __init update_note_header_siz
> >  		notes_section = kmalloc(max_sz, GFP_KERNEL);
> >  		if (!notes_section)
> >  			return -ENOMEM;
> > -		rc = read_from_oldmem(notes_section, max_sz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_section, max_sz, &offset);
> >  		if (rc < 0) {
> >  			kfree(notes_section);
> >  			return rc;
> > @@ -597,7 +628,8 @@ static int __init copy_notes_elf32(const
> >  		if (phdr_ptr->p_type != PT_NOTE)
> >  			continue;
> >  		offset = phdr_ptr->p_offset;
> > -		rc = read_from_oldmem(notes_buf, phdr_ptr->p_memsz, &offset, 0);
> > +		rc = elfcorehdr_read_notes(notes_buf, phdr_ptr->p_memsz,
> > +					   &offset);
> >  		if (rc < 0)
> >  			return rc;
> >  		notes_buf += phdr_ptr->p_memsz;
> > @@ -793,7 +825,7 @@ static int __init parse_crash_elf64_head
> >  	addr = elfcorehdr_addr;
> >  
> >  	/* Read Elf header */
> > -	rc = read_from_oldmem((char*)&ehdr, sizeof(Elf64_Ehdr), &addr, 0);
> > +	rc = elfcorehdr_read((char *)&ehdr, sizeof(Elf64_Ehdr), &addr);
> >  	if (rc < 0)
> >  		return rc;
> >  
> > @@ -820,7 +852,7 @@ static int __init parse_crash_elf64_head
> >  	if (!elfcorebuf)
> >  		return -ENOMEM;
> >  	addr = elfcorehdr_addr;
> > -	rc = read_from_oldmem(elfcorebuf, elfcorebuf_sz_orig, &addr, 0);
> > +	rc = elfcorehdr_read(elfcorebuf, elfcorebuf_sz_orig, &addr);
> >  	if (rc < 0)
> >  		goto fail;
> >  
> > @@ -849,7 +881,7 @@ static int __init parse_crash_elf32_head
> >  	addr = elfcorehdr_addr;
> >  
> >  	/* Read Elf header */
> > -	rc = read_from_oldmem((char*)&ehdr, sizeof(Elf32_Ehdr), &addr, 0);
> > +	rc = elfcorehdr_read((char *)&ehdr, sizeof(Elf32_Ehdr), &addr);
> >  	if (rc < 0)
> >  		return rc;
> >  
> > @@ -875,7 +907,7 @@ static int __init parse_crash_elf32_head
> >  	if (!elfcorebuf)
> >  		return -ENOMEM;
> >  	addr = elfcorehdr_addr;
> > -	rc = read_from_oldmem(elfcorebuf, elfcorebuf_sz_orig, &addr, 0);
> > +	rc = elfcorehdr_read(elfcorebuf, elfcorebuf_sz_orig, &addr);
> >  	if (rc < 0)
> >  		goto fail;
> >  
> > @@ -902,7 +934,7 @@ static int __init parse_crash_elf_header
> >  	int rc=0;
> >  
> >  	addr = elfcorehdr_addr;
> > -	rc = read_from_oldmem(e_ident, EI_NIDENT, &addr, 0);
> > +	rc = elfcorehdr_read(e_ident, EI_NIDENT, &addr);
> >  	if (rc < 0)
> >  		return rc;
> >  	if (memcmp(e_ident, ELFMAG, SELFMAG) != 0) {
> > @@ -935,7 +967,14 @@ static int __init vmcore_init(void)
> >  {
> >  	int rc = 0;
> >  
> > -	/* If elfcorehdr= has been passed in cmdline, then capture the dump.*/
> > +	/* Allow architectures to allocate ELF header in 2nd kernel */
> > +	rc = elfcorehdr_alloc(&elfcorehdr_addr, &elfcorehdr_size);
> > +	if (rc)
> > +		return rc;
> > +	/*
> > +	 * If elfcorehdr= has been passed in cmdline or created in 2nd kernel,
> > +	 * then capture the dump.
> > +	 */
> >  	if (!(is_vmcore_usable()))
> >  		return rc;
> >  	rc = parse_crash_elf_headers();
> > @@ -943,7 +982,11 @@ static int __init vmcore_init(void)
> >  		pr_warn("Kdump: vmcore not initialized\n");
> >  		return rc;
> >  	}
> > -
> > +	elfcorehdr_free(elfcorehdr_addr);
> > +	/*
> > +	 * elfcorehdr_addr must not be set to NULL here to keep
> > +	 * is_kdump_kernel() working.
> > +	 */
> >  	proc_vmcore = proc_create("vmcore", S_IRUSR, NULL, &proc_vmcore_operations);
> >  	if (proc_vmcore)
> >  		proc_vmcore->size = vmcore_size;
> > --- a/include/linux/crash_dump.h
> > +++ b/include/linux/crash_dump.h
> > @@ -12,6 +12,12 @@
> >  extern unsigned long long elfcorehdr_addr;
> >  extern unsigned long long elfcorehdr_size;
> >  
> > +extern int __weak elfcorehdr_alloc(unsigned long long *addr,
> > +				   unsigned long long *size);
> > +extern void __weak elfcorehdr_free(unsigned long long addr);
> > +extern ssize_t __weak elfcorehdr_read(char *buf, size_t count, u64 *ppos);
> > +extern ssize_t __weak elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos);
> > +
> >  extern ssize_t copy_oldmem_page(unsigned long, char *, size_t,
> >  						unsigned long, int);
> >  
> 
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

-- 
Cliff Wickman
SGI
cpw@sgi.com
(651) 683-3824

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  reply	other threads:[~2013-06-27 20:10 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-07 16:55 [PATCH v5 0/5] kdump: Allow ELF header creation in new kernel Michael Holzheu
2013-06-07 16:55 ` Michael Holzheu
2013-06-07 16:55 ` [PATCH v5 1/5] vmcore: Introduce ELF header in new memory feature Michael Holzheu
2013-06-07 16:55   ` Michael Holzheu
2013-06-10 13:35   ` HATAYAMA Daisuke
2013-06-10 13:35     ` HATAYAMA Daisuke
2013-06-10 13:53     ` Michael Holzheu
2013-06-10 13:53       ` Michael Holzheu
2013-06-14 18:54   ` Vivek Goyal
2013-06-14 18:54     ` Vivek Goyal
2013-06-21 14:17     ` Michael Holzheu
2013-06-21 14:17       ` Michael Holzheu
2013-06-27 19:32       ` Vivek Goyal
2013-06-27 19:32         ` Vivek Goyal
2013-06-27 20:10         ` Cliff Wickman [this message]
2013-06-27 20:10           ` Cliff Wickman
2013-06-27 20:23         ` Vivek Goyal
2013-06-27 20:23           ` Vivek Goyal
2013-06-28  8:15           ` Michael Holzheu
2013-06-28  8:15             ` Michael Holzheu
2013-07-01 17:37             ` Vivek Goyal
2013-07-01 17:37               ` Vivek Goyal
2013-07-01 18:29               ` Michael Holzheu
2013-07-01 18:29                 ` Michael Holzheu
2013-06-07 16:55 ` [PATCH v5 2/5] s390/vmcore: Use " Michael Holzheu
2013-06-07 16:55   ` Michael Holzheu
2013-06-10 13:36   ` HATAYAMA Daisuke
2013-06-10 13:36     ` HATAYAMA Daisuke
2013-06-10 13:48     ` Michael Holzheu
2013-06-10 13:48       ` Michael Holzheu
2013-06-14 19:16   ` Vivek Goyal
2013-06-14 19:16     ` Vivek Goyal
2013-06-07 16:55 ` [PATCH v5 3/5] vmcore: Introduce remap_oldmem_pfn_range() Michael Holzheu
2013-06-07 16:55   ` Michael Holzheu
     [not found]   ` <CAJGZr0+_W0dp2f9VtVAiUT2fqiwe91gHXd9zYzfMMzBZSZogww@mail.gmail.com>
2013-06-10  8:00     ` Michael Holzheu
2013-06-10  8:00       ` Michael Holzheu
2013-06-10 13:40   ` HATAYAMA Daisuke
2013-06-10 13:40     ` HATAYAMA Daisuke
2013-06-10 14:03     ` Michael Holzheu
2013-06-10 14:03       ` Michael Holzheu
2013-06-10 15:37     ` Michael Holzheu
2013-06-10 15:37       ` Michael Holzheu
2013-06-11 12:42       ` HATAYAMA Daisuke
2013-06-11 12:42         ` HATAYAMA Daisuke
2013-06-12  9:13         ` Michael Holzheu
2013-06-12  9:13           ` Michael Holzheu
2013-06-13  1:32           ` HATAYAMA Daisuke
2013-06-13  1:32             ` HATAYAMA Daisuke
2013-06-13  8:54             ` Michael Holzheu
2013-06-13  8:54               ` Michael Holzheu
2013-06-13  4:00           ` HATAYAMA Daisuke
2013-06-13  4:00             ` HATAYAMA Daisuke
2013-06-11 13:20       ` HATAYAMA Daisuke
2013-06-11 13:20         ` HATAYAMA Daisuke
2013-06-07 16:56 ` [PATCH v5 4/5] s390/vmcore: Implement remap_oldmem_pfn_range for s390 Michael Holzheu
2013-06-07 16:56   ` Michael Holzheu
2013-06-14 20:08   ` Vivek Goyal
2013-06-14 20:08     ` Vivek Goyal
2013-06-07 16:56 ` [PATCH v5 5/5] s390/vmcore: Use vmcore for zfcpdump Michael Holzheu
2013-06-07 16:56   ` Michael Holzheu
2013-06-11 23:47   ` HATAYAMA Daisuke
2013-06-11 23:47     ` HATAYAMA Daisuke
2013-06-12  9:14     ` Michael Holzheu
2013-06-12  9:14       ` Michael Holzheu
2013-06-14 18:54 ` [PATCH v5 0/5] kdump: Allow ELF header creation in new kernel Vivek Goyal
2013-06-14 18:54   ` Vivek Goyal
2013-06-21 13:39   ` Michael Holzheu
2013-06-21 13:39     ` Michael Holzheu

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=20130627201047.GB28477@sgi.com \
    --to=cpw@sgi.com \
    --cc=d.hatayama@jp.fujitsu.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=holzheu@linux.vnet.ibm.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=schwidefsky@de.ibm.com \
    --cc=vgoyal@redhat.com \
    --cc=willeke@de.ibm.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.