On 17/08/2017 09:36, Cornelia Huck wrote: >> What if we just sent a "vcpu move" request to all vcpus with the new >> pointer after it moved? That way the vcpu thread itself would be >> responsible for the migration to the new memory region. Only if all >> vcpus successfully moved, keep rolling (and allow foreign get_vcpu again). >> >> That way we should be basically lock-less and scale well. For additional >> icing, feel free to increase the vcpu array x2 every time it grows to >> not run into the slow path too often. > > I'd prefer the rcu approach: This is a mechanism already understood > well, no need to come up with a new one that will likely have its own > share of problems. What Alex is proposing _is_ RCU, except with a homegrown synchronize_rcu. Using kvm->srcu seems to be the best of both worlds. Paolo