[PATCH v6 2/5] s390/vmcore: Use ELF header in new memory feature

Vivek Goyal vgoyal at redhat.com
Wed Jul 3 10:15:29 EDT 2013


On Wed, Jul 03, 2013 at 09:59:13AM +0200, Michael Holzheu wrote:
> On Tue, 2 Jul 2013 12:23:23 -0400
> Vivek Goyal <vgoyal at redhat.com> wrote:
> 
> > On Mon, Jul 01, 2013 at 09:32:36PM +0200, Michael Holzheu wrote:
> > 
> > [..]
> > > +ssize_t elfcorehdr_read(char *buf, size_t count, u64 *ppos)
> > > +{
> > > +	void *src = (void *)(unsigned long)*ppos;
> > > +
> > > +	src = elfcorehdr_newmem ? src : src - OLDMEM_BASE;
> > 
> > Seriously, we need to get rid of all this OLDMEM_BASE logic in s390
> > specific code. For regular kdump, it is no different than x86. Only
> > special handling required for zfcpdump for HSA region.
> > 
> > Why do we need above. Is it to cover the case where elfcorehdr have
> > been prepared by user space? Are elf headers initially stored in
> > reserved region and then swapped. Why do we need to swap these or
> > why kexec-tools could not take care of swapping it.
> 
> I know it is confusing. The "src - OLDMEM_BASE" term is currently
> needed because of the swap issue that we have discussed already. We
> load the ELF header into reserved memory
> [OLDMEM_BASE, OLDMEM_BASE + OLDMEM_SIZE] that is swapped with
> [0, OLDMEM_SIZE]. So the ELF header address has to be adjusted.

Can't kexec-tools could easily do this swapping and modify elfcorehdr=
command line accordingly so that second kernel does not have to do
swapping for ELF headers.

And for PT_LOAD segment swapping, we could use ELF header swapping trick
(again in kexec-tools).

After above two changes I think all the OLD_MEMBASE magic will go away
from s390 code and only HSA region special handling will remain.

This brings it inline with x86 code and it becomes easier to understand
the s390 code. Otherwise there so may special corner cases that it is
easy to get lost.

Thanks
Vivek



More information about the kexec mailing list