[PATCH v3 08/21] vmcore: copy non page-size aligned head and tail pages in 2nd kernel

Vivek Goyal vgoyal at redhat.com
Tue Mar 19 17:22:44 EDT 2013


On Tue, Mar 19, 2013 at 01:59:57PM -0700, Eric W. Biederman wrote:
> HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> writes:
> 
> > Due to mmap() requirement, we need to copy pages not starting or
> > ending with page-size aligned address in 2nd kernel and to map them to
> > user-space.
> >
> > For example, see the map below:
> >
> >     00000000-00010000 : reserved
> >     00010000-0009f800 : System RAM
> >     0009f800-000a0000 : reserved
> >
> > where the System RAM ends with 0x9f800 that is not page-size
> > aligned. This map is divided into two parts:
> >
> >     00010000-0009f000
> >     0009f000-0009f800
> >
> > and the first one is kept in old memory and the 2nd one is copied into
> > buffer on 2nd kernel.
> >
> > This kind of non-page-size-aligned area can always occur since any
> > part of System RAM can be converted into reserved area at runtime.
> >
> > If not doing copying like this and if remapping non page-size aligned
> > pages on old memory directly, mmap() had to export memory which is not
> > dump target to user-space. In the above example this is reserved
> > 0x9f800-0xa0000.
> 
> So I have a question.  Would it not be easier to only support mmaping on
> the things that are easily mmapable?  And in the oddball corner cases
> require reading the data instead.

Hi Eric, 

Are you saying that some parts of the vmcore file will support mmap() and
others will not. If yes, how would a user know which parts of file are
mappable and which are not.

Thanks
Vivek



More information about the kexec mailing list