[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 for 4.5] x86/VPMU: Clear last_vcpu when destroying VPMU
On 12/16/2014 04:31 AM, Jan Beulich wrote: On 15.12.14 at 23:24, <boris.ostrovsky@xxxxxxxxxx> wrote:We need to make sure that last_vcpu is not pointing to VCPU whose VPMU is being destroyed. Otherwise we may try to dereference it in the future, when VCPU is gone. We have to do this via IPI since otherwise there is a (somewheat theoretical) chance that between test and subsequent clearing of last_vcpu the remote processor (i.e. vpmu->last_pcpu) might do both load_vpmu() and then save_vpmu() for another VCPU. The former will clear last_vcpu and the latter will set it to something else.Apart from the question of using cmpxchg instead of the IPI (I can see with the current model that using an IPI is the only clean way, i.e. the alternative - if usable - would mean altering existing logic too), You mean something like struct vcpu **last = &per_cpu(last_vcpu, vpmu->last_pcpu); cmpxchg(last, v, NULL); Yes, that could work. -boris _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |