[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 18.05.17 at 15:03, <boris.ostrovsky@xxxxxxxxxx> wrote: > On 05/18/2017 05:07 AM, Jan Beulich wrote: >>>>> 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). > > From correctness perspective I don't see any problems. > > As I said last time, I'd rename cpu_callback() to something less > generic, like vpmu_cpu_callback() (or vpmu_cpuhp_callback()). The vpmu_ prefix is clearly pointless for a static function. >> 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. > > I wonder whether we should have such an ASSERT() in on_selected_cpus() > instead. That's a good idea (and I'll queue a patch to that effect for post-4.9), but it won't deal with all issues here. Namely the use of last_pcpu in vpmu_arch_destroy() which the v2 patch didn't touch is a problem already before calling on_selected_cpus(): per_cpu(last_vcpu, vpmu->last_pcpu) is simply invalid if vpmu->last_pcpu is offline. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |