On 20/01/20 04:46, Paul Mackerras wrote: > On Wed, Dec 18, 2019 at 01:55:26PM -0800, Sean Christopherson wrote: >> Fold init() into create() now that the two are called back-to-back by >> common KVM code (kvm_vcpu_init() calls kvm_arch_vcpu_init() as its last >> action, and kvm_vm_ioctl_create_vcpu() calls kvm_arch_vcpu_create() >> immediately thereafter). Rinse and repeat for kvm_arch_vcpu_uninit() >> and kvm_arch_vcpu_destroy(). This paves the way for removing >> kvm_arch_vcpu_{un}init() entirely. >> >> Note, calling kvmppc_mmu_destroy() if kvmppc_core_vcpu_create() fails >> may or may not be necessary. Move it along with the more obvious call >> to kvmppc_subarch_vcpu_uninit() so as not to inadvertantly introduce a >> functional change and/or bug. >> >> No functional change intended. >> >> Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > > This doesn't compile. I get: > > CC [M] arch/powerpc/kvm/powerpc.o > /home/paulus/kernel/kvm/arch/powerpc/kvm/powerpc.c: In function ‘kvm_arch_vcpu_create’: > /home/paulus/kernel/kvm/arch/powerpc/kvm/powerpc.c:733:34: error: ‘kvmppc_decrementer_wakeup’ undeclared (first use in this function) > vcpu->arch.dec_timer.function = kvmppc_decrementer_wakeup; > ^ > /home/paulus/kernel/kvm/arch/powerpc/kvm/powerpc.c:733:34: note: each undeclared identifier is reported only once for each function it appears in > /home/paulus/kernel/kvm/arch/powerpc/kvm/powerpc.c: At top level: > /home/paulus/kernel/kvm/arch/powerpc/kvm/powerpc.c:794:29: warning: ‘kvmppc_decrementer_wakeup’ defined but not used [-Wunused-function] > static enum hrtimer_restart kvmppc_decrementer_wakeup(struct hrtimer *timer) > ^ > make[3]: *** [/home/paulus/kernel/kvm/scripts/Makefile.build:266: arch/powerpc/kvm/powerpc.o] Error 1 > > The problem is that kvmppc_decrementer_wakeup() is a static function > defined in this file (arch/powerpc/kvm/powerpc.c) after > kvm_arch_vcpu_create() but before kvm_arch_vcpu_init(). You need a > forward static declaration of kvmppc_decrementer_wakeup() before > kvm_arch_vcpu_create(), or else move one or other function. > > Paul. > Squashed: diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index 91cf94d4191e..4fbf8690b8c5 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c @@ -725,6 +725,16 @@ int kvm_arch_vcpu_precreate(struct kvm *kvm, unsigned int id) return 0; } +static enum hrtimer_restart kvmppc_decrementer_wakeup(struct hrtimer *timer) +{ + struct kvm_vcpu *vcpu; + + vcpu = container_of(timer, struct kvm_vcpu, arch.dec_timer); + kvmppc_decrementer_func(vcpu); + + return HRTIMER_NORESTART; +} + int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu) { int err; @@ -791,16 +801,6 @@ int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu) return kvmppc_core_pending_dec(vcpu); } -static enum hrtimer_restart kvmppc_decrementer_wakeup(struct hrtimer *timer) -{ - struct kvm_vcpu *vcpu; - - vcpu = container_of(timer, struct kvm_vcpu, arch.dec_timer); - kvmppc_decrementer_func(vcpu); - - return HRTIMER_NORESTART; -} - int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) { return 0; Paolo _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm