On Fri, Jul 22, 2016 at 01:10:36PM +0200, Greg Kurz wrote: > The goal of this patch is to have a stable core-id which does not depend > on any DT related semantics, which involve non-obvious computations on > modern PowerPC server cpus. > > With this patch, the DT core id is computed on-demand as: > > (core-id / smp_threads) * smt > > where smt is the number of threads per core in the host. > > This formula should be consolidated in a helper since it is needed in > several places.
It's a little odd you node this but don't do so. > Other uses for core-id includes: compute a stable cpu_index (which > allows random order hotplug/unplug without breaking migration) and > NUMA. > > Signed-off-by: Greg Kurz <gr...@kaod.org> > --- > > It was first suggested here: > > https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg01727.html > > and as option 1) in the following discussion on IRC: > > <dwg> imammedo, basically the options are: 1) change core-ids to be > 0, 1, .. n and compute cpu_index as core_id * threads + thread#, or > 2) leave core-ids as they are and calculate cpu_index as > core-id / smt * threads + thread# > > It is based on David's ppc-for-2.7 branch (commit bb6268f35f457). > > It is lightly tested but I could at least do in-order > hotplug/unplug. I think this is basically the right approach, and I've applied to ppc-for-2.7. Here's my plan for what to do about all this id stuff: 1. Merge this to ppc-for-2.7 (done) 2. Assuming there are now show-stoppers in testing, send a pull request tomorrow 3. Once this is merged, try to get Igor's series (or a respin of it) in ASAP. I'm hoping that will give us good-enough hotplug for 2.7. In the 2.8 timeframe, I want to: 4. Disconnect KVM vcpu ID from dt_id, instead calculate it from (now stable) cpu_index 5. Remove dt_id as a cpu field - instead just compute DT ids from the (now stable) cpu_index when we build the DT 6. (for new machine type versions) Change DT ID assignment, so it no longer depends on kvmppc_smt_threads(). The current scheme means that migration between hosts with different native SMT values won't work, which is unfortunate. I suspect there may be other problems with any real situation where that's the case, but nontheless it's a silly restriction. Nice to have but bigger scope things for 2.8: 7. Update archs to they *all* call cpu_exec_init() / cpu_exec_exit() at realize / unrealize time instead of init / finalize time. 8. Update all archs and machines to use stable cpu_index -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature