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. 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");