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

From: Dave Hansen
Date: Thu Jun 24 2004 - 22:22:38 EST


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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/