Anthony Liguori wrote:
We know exactly what the problem is. KVM activates VT unconditionally. There's no hardware mechanism to arbitrate access to VT. KVM is the only thing in the Linux kernel that uses VT so we don't have a software mechanism to arbitrate access to VT.
If the VMware code was upstream, then we could work together to make a software arbitration mechanism. It's not, and worse yet, it's closed source so there's no chance it will be. Even if someone wrote an arbitration mechanism and got VMware to use it, it still shouldn't be merged because KVM would be the only thing using that mechanism upstream. I'm not interested in adding kernel infrastructure to support external binary kernel modules.
Well a recent patch from Eli Collins mentioned VMware are standardizing CR4.VMXE as an indicator of whether someone is using the VT hardware or not, and now kvm clears that bit when unloading. We could check the bit and fail if is set, thus have working mutual exclusion. Of course, it will only work with newer versions of kvm and vmware.
I don't see any reason to poke sticks into the wheels here.