On 20/01/20 04:34, Paul Mackerras wrote: > On Wed, Dec 18, 2019 at 01:55:00PM -0800, Sean Christopherson wrote: >> Move the kvm_cpu_{un}init() calls to common PPC code as an intermediate >> step towards removing kvm_cpu_{un}init() altogether. >> >> No functional change intended. >> >> Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > > This doesn't compile: > > CC [M] arch/powerpc/kvm/book3s.o > /home/paulus/kernel/kvm/arch/powerpc/kvm/book3s.c: In function ‘kvmppc_core_vcpu_create’: > /home/paulus/kernel/kvm/arch/powerpc/kvm/book3s.c:794:9: error: ‘kvm’ undeclared (first use in this function) > return kvm->arch.kvm_ops->vcpu_create(vcpu); > ^ > /home/paulus/kernel/kvm/arch/powerpc/kvm/book3s.c:794:9: note: each undeclared identifier is reported only once for each function it appears in > /home/paulus/kernel/kvm/arch/powerpc/kvm/book3s.c:795:1: warning: control reaches end of non-void function [-Wreturn-type] > } > ^ > make[3]: *** [/home/paulus/kernel/kvm/scripts/Makefile.build:266: arch/powerpc/kvm/book3s.o] Error 1 > >> diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c >> index 13385656b90d..5ad20fc0c6a1 100644 >> --- a/arch/powerpc/kvm/book3s.c >> +++ b/arch/powerpc/kvm/book3s.c >> @@ -789,10 +789,9 @@ void kvmppc_decrementer_func(struct kvm_vcpu *vcpu) >> kvm_vcpu_kick(vcpu); >> } >> >> -int kvmppc_core_vcpu_create(struct kvm *kvm, struct kvm_vcpu *vcpu, >> - unsigned int id) >> +int kvmppc_core_vcpu_create(struct kvm_vcpu *vcpu) >> { >> - return kvm->arch.kvm_ops->vcpu_create(kvm, vcpu, id); >> + return kvm->arch.kvm_ops->vcpu_create(vcpu); > > Needs s/kvm/vcpu->kvm/ here. > > You also need to change the declaration of the vcpu_create function > pointer in the kvmppc_ops struct in kvm_ppc.h to have just the vcpu > parameter instead of 3 parameters. Squashed: diff --git a/arch/powerpc/include/asm/kvm_ppc.h b/arch/powerpc/include/asm/kvm_ppc.h index 374e4b835ff0..bc2494e5710a 100644 --- a/arch/powerpc/include/asm/kvm_ppc.h +++ b/arch/powerpc/include/asm/kvm_ppc.h @@ -273,8 +273,7 @@ struct kvmppc_ops { void (*inject_interrupt)(struct kvm_vcpu *vcpu, int vec, u64 srr1_flags); void (*set_msr)(struct kvm_vcpu *vcpu, u64 msr); int (*vcpu_run)(struct kvm_run *run, struct kvm_vcpu *vcpu); - int (*vcpu_create)(struct kvm *kvm, struct kvm_vcpu *vcpu, - unsigned int id); + int (*vcpu_create)(struct kvm_vcpu *vcpu); void (*vcpu_free)(struct kvm_vcpu *vcpu); int (*check_requests)(struct kvm_vcpu *vcpu); int (*get_dirty_log)(struct kvm *kvm, struct kvm_dirty_log *log); diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c index 5ad20fc0c6a1..3f7adcb0ff63 100644 --- a/arch/powerpc/kvm/book3s.c +++ b/arch/powerpc/kvm/book3s.c @@ -791,7 +791,7 @@ void kvmppc_decrementer_func(struct kvm_vcpu *vcpu) int kvmppc_core_vcpu_create(struct kvm_vcpu *vcpu) { - return kvm->arch.kvm_ops->vcpu_create(vcpu); + return vcpu->kvm->arch.kvm_ops->vcpu_create(vcpu); } void kvmppc_core_vcpu_free(struct kvm_vcpu *vcpu) diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index dd7440e50c7a..d41765157f0e 100644 --- a/arch/powerpc/kvm/booke.c +++ b/arch/powerpc/kvm/booke.c @@ -2116,7 +2116,7 @@ int kvmppc_core_init_vm(struct kvm *kvm) int kvmppc_core_vcpu_create(struct kvm_vcpu *vcpu) { - return kvm->arch.kvm_ops->vcpu_create(vcpu); + return vcpu->kvm->arch.kvm_ops->vcpu_create(vcpu); } void kvmppc_core_vcpu_free(struct kvm_vcpu *vcpu)