HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> writes: > To satisfy mmap()'s page-size boundary requirement, allocate per-cpu > crash_notes objects on page-size boundary. > > /proc/vmcore on the 2nd kernel checks if each note objects is > allocated on page-size boundary. If there's some object not satisfying > the page-size boundary requirement, /proc/vmcore doesn't provide > mmap() interface. Does this actually help? My memory is that /proc/vmcore did some magic behind the scenes to combine these multiple note sections into a single note section. Certainly someone has to combine them together to make a valid elf executable. At the same time I don't see any harm in rounding up to a page size here, but I don't see the point either. Eric > Signed-off-by: HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> > --- > > kernel/kexec.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/kernel/kexec.c b/kernel/kexec.c > index bddd3d7..d1f365e 100644 > --- a/kernel/kexec.c > +++ b/kernel/kexec.c > @@ -1234,7 +1234,8 @@ void crash_save_cpu(struct pt_regs *regs, int cpu) > static int __init crash_notes_memory_init(void) > { > /* Allocate memory for saving cpu registers. */ > - crash_notes = alloc_percpu(note_buf_t); > + crash_notes = __alloc_percpu(roundup(sizeof(note_buf_t), PAGE_SIZE), > + PAGE_SIZE); > if (!crash_notes) { > printk("Kexec: Memory allocation for saving cpu register" > " states failed\n");