Re: x86: unify genapic code, unify subarchitectures, remove old subarchitecturecode
From: Jeremy Fitzhardinge
Date: Sun Feb 08 2009 - 11:57:18 EST
James Bottomley wrote:
The other big problem is mm/tlb.c. This directly uses genapic with 8
vectors which is impossible for voyager: the QIC only has 8 separate IPI
vectors for everything. The two alternatives which spring to mind are
either to rebase mm/tlb.c on top of smp_call_function. This would add a
small amount to the critical path, but would also allow vector scaling
beyond the current 8 IPI vectors to a per processor number (i.e. might
scale better beyond 8 cores).
I floated an experimental patch to do just that last year. There were
concerns because it had a pretty significantly hit on the performance of
tlb-heavy benchmarks; and since then a multicast smp_call_function ends
up kmallocing, which probably won't help matters. I got called away to
other things before really exploring all the options here, so it may
well be worth reviving that work.
Or to keep voyager separate and move
pieces of paravirt ops (or rather a separated piece of pv_ops) into
smp_ops to effect the separation.
This should be easy since you can can hook all the tlb operations via
pv_mmu_ops. And to avoid duplicating a lot of similar-looking code, you
could just do a generic smp_call_function-based version.
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/