[PATCH] align crash_notes allocation to make it be inside one physical page
Baoquan He
bhe at redhat.com
Fri Jul 31 01:37:49 PDT 2015
On 07/30/15 at 01:15pm, Minfei Huang wrote:
> On 07/30/15 at 11:07am, Baoquan He wrote:
> > diff --git a/kernel/kexec.c b/kernel/kexec.c
> > index a785c10..1740c42 100644
> > --- a/kernel/kexec.c
> > +++ b/kernel/kexec.c
> > @@ -1620,7 +1620,16 @@ 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);
> > + size_t size, align;
> > + int order;
> > +
> > + size = sizeof(note_buf_t);
> > + order = get_count_order(size);
> > + align = 1<< order;
> > +
> > + WARN_ON(size > PAGE_SIZE);
>
> It is fine without this warning, since percpu will fail to allocate the
> memory larger than PAGE_SIZE.
Thanks for your comment.
percpu will fail if align is larger than PAGE_SIZE. I will adjust it
as align = min(1<<order, PAGE_SIZE). But adding WARN_ON makes sense
in case sizeof(note_buf_t) is bigger than PAGE_SIZE in the future,
then we need consider changing the design of storing crash_notes.
Thanks
Baoquan
More information about the kexec
mailing list