lkml.org 
[lkml]   [2013]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v3 12/21] vmcore: allocate per-cpu crash_notes objects on page-size boundary
    HATAYAMA Daisuke <d.hatayama@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@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");


    \
     
     \ /
      Last update: 2013-03-19 22:41    [W:4.108 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site