Message ID | 20220615011622.136646-2-kechenl@nvidia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: x86: add per-vCPU exits disable capability | expand |
On Tue, Jun 14, 2022, Kechen Lu wrote: > From: Sean Christopherson <seanjc@google.com> > > Since VMX and SVM both would never update the control bits if exits > are disable after vCPUs are created, only allow setting exits > disable flag before vCPU creation. > > Fixes: 4d5422cea3b6 ("KVM: X86: Provide a capability to disable MWAIT > intercepts") Don't wrap the Fixes: line (ignore any complaints from checkpatch). > Signed-off-by: Sean Christopherson <seanjc@google.com> > Signed-off-by: Kechen Lu <kechenl@nvidia.com> > ---
On Wed, Jul 20, 2022, Sean Christopherson wrote: > On Tue, Jun 14, 2022, Kechen Lu wrote: > > From: Sean Christopherson <seanjc@google.com> > > > > Since VMX and SVM both would never update the control bits if exits > > are disable after vCPUs are created, only allow setting exits > > disable flag before vCPU creation. > > > > Fixes: 4d5422cea3b6 ("KVM: X86: Provide a capability to disable MWAIT > > intercepts") > > Don't wrap the Fixes: line (ignore any complaints from checkpatch). Sorry, I didn't see that you had sent v4 already and replied to some v3 patches. This one still holds true for v4 (very minor nit though).
> -----Original Message----- > From: Sean Christopherson <seanjc@google.com> > Sent: Wednesday, July 20, 2022 10:50 AM > To: Kechen Lu <kechenl@nvidia.com> > Cc: kvm@vger.kernel.org; pbonzini@redhat.com; vkuznets@redhat.com; > Somdutta Roy <somduttar@nvidia.com>; linux-kernel@vger.kernel.org > Subject: Re: [RFC PATCH v3 1/7] KVM: x86: only allow exits disable before > vCPUs created > > External email: Use caution opening links or attachments > > > On Wed, Jul 20, 2022, Sean Christopherson wrote: > > On Tue, Jun 14, 2022, Kechen Lu wrote: > > > From: Sean Christopherson <seanjc@google.com> > > > > > > Since VMX and SVM both would never update the control bits if exits > > > are disable after vCPUs are created, only allow setting exits > > > disable flag before vCPU creation. > > > > > > Fixes: 4d5422cea3b6 ("KVM: X86: Provide a capability to disable > > > MWAIT > > > intercepts") > > > > Don't wrap the Fixes: line (ignore any complaints from checkpatch). > > Sorry, I didn't see that you had sent v4 already and replied to some v3 > patches. > This one still holds true for v4 (very minor nit though). Sure:)
diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst index 11e00a46c610..d0d8749591a8 100644 --- a/Documentation/virt/kvm/api.rst +++ b/Documentation/virt/kvm/api.rst @@ -6933,6 +6933,7 @@ branch to guests' 0x200 interrupt vector. :Architectures: x86 :Parameters: args[0] defines which exits are disabled :Returns: 0 on success, -EINVAL when args[0] contains invalid exits + or if any vCPU has already been created Valid bits in args[0] are:: diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 158b2e135efc..3ac6329e6d43 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -6006,6 +6006,10 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm, if (cap->args[0] & ~KVM_X86_DISABLE_VALID_EXITS) break; + mutex_lock(&kvm->lock); + if (kvm->created_vcpus) + goto disable_exits_unlock; + if ((cap->args[0] & KVM_X86_DISABLE_EXITS_MWAIT) && kvm_can_mwait_in_guest()) kvm->arch.mwait_in_guest = true; @@ -6016,6 +6020,8 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm, if (cap->args[0] & KVM_X86_DISABLE_EXITS_CSTATE) kvm->arch.cstate_in_guest = true; r = 0; +disable_exits_unlock: + mutex_unlock(&kvm->lock); break; case KVM_CAP_MSR_PLATFORM_INFO: kvm->arch.guest_can_read_msr_platform_info = cap->args[0];