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

From: Jeremy Fitzhardinge
Date: Wed Jul 09 2008 - 16:10:09 EST


Ingo Molnar wrote:
* Christoph Lameter <cl@xxxxxxxxxxxxxxxxxxxx> wrote:

Ingo Molnar wrote:

that makes sense. Does everyone agree on #1-#2-#3 and then gradual elimination of most pda members (without going through an intermediate renaming of pda members) being the way to go?
I think we all agree on 1-2-3.

The rest is TBD. Hope Jeremy can add his wisdom there to get the pda.X replaced by the proper percpu names for 32 bit.

With Jeremy's approach we would be doing two steps at once (getting rid of pda ops plus unifying the variable names between 32 and 64 bit). Maybe more difficult to verify correctness. The removal of the pda ops is a pretty straighforward conversion.

Yes, but there's nothing magic about pda variables versus percpu variables. We should be able to do the pda -> unified step just as much as we can do a percpu -> unified step. We can think of pda as a funky, pre-percpu-era relic.

The only thing that percpu really offers over pda is its familarity. read_pda() has the per-cpu-ness embedded in it, which is nasty with regard to tracking preemption properties, etc.

So converting to percpu would bring us CONFIG_PREEMPT_DEBUG=y checking to those ex-pda variables. Today if a read_pda() (or anything but pcurrent) is done in a non-preempt region that's likely a bug - but nothing warns about it.

So in that light 4-15 might make some sense in standardizing all these accesses and making sure it all fits into an existing, familar API world, with no register level assumptions and assembly (and ABI) ties, which is instrumented as well, with explicit smp_processor_id() dependencies, etc.

Yeah, but doing

#define read_pda(x) x86_read_percpu(x)

gives you all that anyway. Though because x86_X_percpu and X_pda are guaranteed to be atomic with respect to preemption, it's actually reasonable to use them with preemption enabled.

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/