[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] x86/vpmu: add cpu hot unplug notifier for vpmu
> >>> On 17.05.17 at 17:57, <luwei.kang@xxxxxxxxx> wrote: > > @@ -581,9 +582,14 @@ static void vpmu_arch_destroy(struct vcpu *v) > > > > if ( vpmu->arch_vpmu_ops && vpmu->arch_vpmu_ops->arch_vpmu_destroy ) > > { > > - /* Unload VPMU first. This will stop counters */ > > - on_selected_cpus(cpumask_of(vcpu_vpmu(v)->last_pcpu), > > - vpmu_save_force, v, 1); > > + /* > > + * Unload VPMU first if VPMU_CONTEXT_LOADED being set. > > + * This will stop counters. > > + */ > > + if ( vpmu_is_set(vpmu, VPMU_CONTEXT_LOADED) ) > > + on_selected_cpus(cpumask_of(vcpu_vpmu(v)->last_pcpu), > > + vpmu_save_force, v, 1); > > + > > vpmu->arch_vpmu_ops->arch_vpmu_destroy(v); > > } > > } > > So this is a good step towards what was requested during v1 review, provided > it is correct (I'll let Boris comment). You didn't, > however, do anything about the other unguarded last_pcpu uses (in vpmu_load() > and upwards from the code above in > vpmu_arch_destroy()). These _may_ be implicitly fine, but if so please at > least add suitable ASSERT()s. > Hi Jan, Thanks for your reply. I think I understand the issue you mentioned. But sorry, I am not very clear what is your solution from your description. At first, I want to change like this: --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -859,6 +859,7 @@ static int cpu_callback( { vpmu_save_force(vcpu); vpmu_reset(vpmu, VPMU_CONTEXT_LOADED); + per_cpu(last_vcpu, cpu) = NULL; // OR: this_cpu(last_vcpu) = NULL; } As you mentioned in before comments, it has been done in vpmu_save_force(). So this change is unnecessary. In summary, I think it is enough to solve the issue in vpmu_load() and vpmu_arch_destroy(). After cpu_callback() function, per_cpu(last_vcpu, vpmu->last_pcpu) will be NULL and VPMU_CONTEXT_LOADED will be clear. In vpmu_arch_destroy(), there will not make remote call to clear last. In vpmu_load(), remote call will guarded by VPMU_CONTEXT_LOADED flag check. As for vpmu->last_pcpu, we can't use some random online one to produce false. What is your opinion? Thanks, Luwei Kang _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |