[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