Re: [RFC 00/15] x86_64: Optimize percpu accesses

From: Jeremy Fitzhardinge
Date: Wed Jul 09 2008 - 13:52:20 EST


Christoph Lameter wrote:
What is the point of the pda_X interface? It does not exist on 32 bit.
The pda wastes the GS segment register on a small memory area. This patchset
makes the GS segment usable to reach all of the per cpu area by placing
the pda into the per cpu area. Thus the pda_X interface becomes obsolete
and the 32 bit per cpu stuff becomes usable under 64 bit unifying both
architectures.

I think we agree on the desired outcome. I just disagree with the path to getting there.

I think we should start devolving things out of the pda in the other
direction: make a series where each patch takes a member of struct
x8664_pda, converts it to a per-cpu variable (where possible, the same
one that 32-bit uses), and updates all the references accordingly. When
the pda is as empty as it can be, we can look at removing the
pda-specific interfaces.

This patchset places the whole x8664_pda structure into the per cpu area and makes the pda macros operate on the x8664_pda structure in the per cpu area. Not sure why you want to go through the churn of doing it for each object separately.

No, it's not churn doing it object at a time. If you convert pda.pcurrent into a percpu current_task variable, then at one stroke you've 1) shrunk the pda, 2) unified with i386. If you go through the process of converting all the read_pda(pcurrent) references into x86_read_percpu(pda.pcurrent) then that's a pure churn patch. It doesn't get rid of the pda variable, it doesn't unify with i386. All it does is remove a reference to a macro which was fairly inoffensive in the first place.

Once the pda has shrunk as much as it can (which remove everything except stack_canary, I think), then remove all the X_pda macros, since there won't be any users anyway.

J
--
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/