Re: [PATCH] x86_64: remove never used nodenumer in pda

Mike Travis
2008-02-19T18:32:50Z

Andi Kleen wrote:
> On Tue, Feb 19, 2008 at 07:48:54AM -0800, Mike Travis wrote:
>> Andi Kleen wrote:
>>> Yinghai Lu <Yinghai.Lu@Sun.COM> writes:
>>>
>>>> we don't need copy too. already have x86_cpu_to_node_map
>>> That's a regression (probably from Mike's patches?). Until recently it was
>>> used.
>> Yes, I had removed it because I couldn't find any references to it.
>
> Hmm, maybe it regressed earlier. Sorry if I blamed you incorrectly.
> Anyways at some point this definitely worked. I remember writing
> the code ;-)
>
>> And reading one's own percpu variables should be as efficient as
>> reading one's own pda.
>
> Sure, but the point is that getting the current node is a common
> operation, so it should be a single reference and not go through a
> lookup table.
>
> How it is actually implemented -- through PDA or through you new
> equivalent per cpu variables -- does not really matter as long
> as the resulting code is only a single instruction. Using
> the lookup array from the cpu number is wrong.
>
> My patch just fixed it back to use the PDA in the old style for now,
> but if all your per cpu stuff is merged (I admit I haven't tracked
> if it is or not) replacing that with a per cpu variable would work too
> if it then generates the same code as with PDA.
>
> -Andi

I'll look at it some more as I don't really have a preference either.
One thing that also bothered me was other cpus read the per cpu
variable to get the node number whilst the current cpu reads the pda
variable. I'll see about resolving that quirky-ness. (All one or all
the other.)

(And of course the problem with cpus on nodes with no local memory
needs to be resolved as well.)

Thanks,
Mike