On Mon, Aug 07, 2017 at 04:33:29PM +1000, Sam Bobroff wrote: > The concept of a VCPU ID that differs from the CPU's index > (cpu->cpu_index) exists only within SPAPR machines so, move the > functions ppc_get_vcpu_id() and ppc_get_cpu_by_vcpu_id() into spapr.c > and rename them appropriately. > > Signed-off-by: Sam Bobroff <[email protected]> > --- > Changes in v2: > > * Re-arranged so that spapr_vcpu_id() calls kvm_arch_vcpu_id() rather than the > other way around.
Ah.. so close..
[snip]
> +int spapr_vcpu_id(PowerPCCPU *cpu)
> +{
> + CPUState *cs = CPU(cpu);
> +
> + if (kvm_enabled()) {
> + return kvm_arch_vcpu_id(cs);
> + } else {
> + return cs->cpu_index;
> + }
> +}
> +
> +PowerPCCPU *spapr_find_cpu(int vcpu_id)
> +{
> + CPUState *cs;
> +
> + CPU_FOREACH(cs) {
> + PowerPCCPU *cpu = POWERPC_CPU(cs);
> +
> + if (cpu->vcpu_id == vcpu_id) {
This is still reaching into vcpu_id which should really be cpu
private, not in spapr. You can use spapr_vcpu_id() which you already
defined to avoid this.
With that done, I believe it should be possible to put cpu->vcpu_id in
an ifdef CONFIG_KVM and have things work.
> + return cpu;
> + }
> + }
> +
> + return NULL;
> +}
--
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
