Re: x86: unify genapic code, unify subarchitectures, remove oldsubarchitecture code

From: James Bottomley
Date: Sun Feb 08 2009 - 09:16:19 EST



> I ported the NUMAQ / Summit / bigsmp and ES7000 subarchitectures to the
> new setup. They build and boot on regular hardware but are otherwise
> untested. The x86/Voyager subarch is not fully ported yet (i cleaned up
> its Kconfig impact) and hence disabled it for the time being. It
> ought to be relatively straightforward to port it to the new code.

OK, so I analysed the voyager requirements.

The first simple one is that safe_smp_processor_id() and
hard_smp_processor_id() need to be abstracted, probably through smp_ops.
This one is probably trivial since 99% of the price of doing this has
already been paid in the smp ops.

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). 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. Instinct says to try the former
first.

James




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