Re: Kdump issue with percpu_alloc=lpage

Vivek Goyal
2009-11-19T15:05:59Z

On Thu, Nov 19, 2009 at 11:45:25PM +0900, Tejun Heo wrote:
> Hello,
>
> 11/19/2009 11:33 PM, Vivek Goyal wrote:
> > I did load a kdump kernel on 32-rc7 and it worked fine. But I guess in
> > this case memory might have come from linearly mapped region.
> >
> > If the default per cpu allocator can get memory from vmalloc region
> > also, then I think we will need this function which can map virtual
> > address to physical address.
>
> I see.
>
> > Are there multiple allocators now? If yes, what are the command line
> > options and I can try to use some other allocator and see if I can force
> > the condition where memory comes from vmalloc region and I observe the
> > crash.
> >
> > Once I can reproduce it, I can also send you the fix you suggested.
>
> Now there are two allocators - embed (default) and page. You can
> choose using percpu_alloc= parameter. Embed allocator will put the
> first chunk in linear mapping area while page will put the first chunk
> in vmalloc area too but regardless of the allocator from the second
> chunk it will always be in the vmalloc area. So, either using
> percpu_alloc=page or allocating some amount of percpu memory using
> __alloc_percpu() - a thousand 4k blocks will always be enough - should
> do it.

Looks like with percpu_alloc=page, I am getting bogus physical addresses in
/sys/devices/system/cpu<N>/crash_notes.

With percpu_alloc=page

cpu0 60fffff49800
cpu1 60fffff60800
cpu2 60fffff77800

with percpu_alloc=embed

cpu0 28219800
cpu1 28259800
cpu2 28299800

I got 4G of RAM in my box. "embed" seems to be fine.

Thanks
Vivek