Re: [Lhms-devel] Re: Merging Nonlinear and Numa style memory hotplug

Dave Hansen
2004-06-25T03:19:38Z

On Thu, 2004-06-24 at 20:11, Yasunori Goto wrote:
> I understand this idea at last.
> Section size of DLPAR of PPC is only 16MB.
> But kmalloc area of virtual address have to be contigous
> even if the area is divided 16MB physically.
> Dave-san's implementation (it was for IA32) was same index between
> phys_section and mem_section. So, I was confused.
>
> > pfn_to_page(unsigned long pfn)
> > {
> > return
> > &mem_section[phys_section[pfn_to_section(pfn)]].mem_map[section_offset_pfn(pfn)];
> > }
> >
>
> But, I suppose this translation might be too complex.

It certainly doesn't look pretty, but I think it's manageable with a
comment, or maybe breaking the operation up into a few lines instead.

> I worry that many person don't like this which is cause of
> performance deterioration.

There is some precedent in the kernel for a table such as this. Take a
look at the NUMA page_to_pfn() and page_zone() functions. They use a
zone_table array to do that same kind of thing.

Are you worried bout the pfn_to_page() function itself, that it will
pull in 2 cachelines of data: 1 for phys_section[] and another for
mem_section[]?

> Should this translation be in common code?

What do you mean by common code? It should be shared by all
architectures.

-- Dave