spapr: Allow some cases where we can't set VSMT mode in the kernel
commit1f20f2e0ee61d91abff4e86ed1cda1b5244647d3
authorDavid Gibson <david@gibson.dropbear.id.au>
Tue, 16 Jan 2018 04:37:37 +0000 (16 15:37 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Tue, 16 Jan 2018 22:35:24 +0000 (17 09:35 +1100)
tree53b2e8ed4685fbc4bf92721c28b500bb34017691
parentabbc124753896f72e3715813ea20dd1924202ff0
spapr: Allow some cases where we can't set VSMT mode in the kernel

At present if we require a vsmt mode that's not equal to the kernel's
default, and the kernel doesn't let us change it (e.g. because it's an old
kernel without support) then we always fail.

But in fact we can cope with the kernel having a different vsmt as long as
  a) it's >= the actual number of vthreads/vcore (so that guest threads
     that are supposed to be on the same core act like it)
  b) it's a submultiple of the requested vsmt mode (so that guest threads
     spaced by the vsmt value will act like they're on different cores)

Allowing this case gives us a bit more freedom to adjust the vsmt behaviour
without breaking existing cases.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Tested-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
hw/ppc/spapr.c