public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Kai Huang <kai.huang@intel.com>
Cc: Chao Gao <chao.gao@intel.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	 "pbonzini@redhat.com" <pbonzini@redhat.com>,
	 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/4] KVM: x86: Register emergency virt callback in common code, via kvm_x86_ops
Date: Mon, 13 May 2024 09:17:45 -0700	[thread overview]
Message-ID: <ZkI9KcIYujLadSLA@google.com> (raw)
In-Reply-To: <cb59d42e0ce59c6e6f3e9af019654687b04c4f5d.camel@intel.com>

On Mon, May 13, 2024, Kai Huang wrote:
> On Fri, 2024-04-26 at 10:08 -0700, Sean Christopherson wrote:
> > On Fri, Apr 26, 2024, Chao Gao wrote:
> > > > diff --git a/arch/x86/kvm/vmx/x86_ops.h b/arch/x86/kvm/vmx/x86_ops.h
> > > > index 502704596c83..afddfe3747dd 100644
> > > > --- a/arch/x86/kvm/vmx/x86_ops.h
> > > > +++ b/arch/x86/kvm/vmx/x86_ops.h
> > > > @@ -15,6 +15,7 @@ void vmx_hardware_unsetup(void);
> > > > int vmx_check_processor_compat(void);
> > > > int vmx_hardware_enable(void);
> > > > void vmx_hardware_disable(void);
> > > > +void vmx_emergency_disable(void);
> > > > int vmx_vm_init(struct kvm *kvm);
> > > > void vmx_vm_destroy(struct kvm *kvm);
> > > > int vmx_vcpu_precreate(struct kvm *kvm);
> > > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> > > > index e9ef1fa4b90b..12e88aa2cca2 100644
> > > > --- a/arch/x86/kvm/x86.c
> > > > +++ b/arch/x86/kvm/x86.c
> > > > @@ -9797,6 +9797,8 @@ int kvm_x86_vendor_init(struct kvm_x86_init_ops *ops)
> > > > 
> > > > 	kvm_ops_update(ops);
> > > > 
> > > > +	cpu_emergency_register_virt_callback(kvm_x86_ops.emergency_disable);
> > > > +
> > > 
> > > vmx_emergency_disable() accesses loaded_vmcss_on_cpu but now it may be called
> > > before loaded_vmcss_on_cpu is initialized. This may be not a problem for now
> > > given the check for X86_CR4_VMXE  in vmx_emergency_disable(). But relying on
> > > that check is fragile. I think it is better to apply the patch below from Isaku
> > > before this patch.
> > > 
> > > https://lore.kernel.org/kvm/c1b7f0e5c2476f9f565acda5c1e746b8d181499b.1708933498.git.isaku.yamahata@intel.com/
> > 
> > Agreed, good eyeballs, and thanks for the reviews!
> > 
> 
> I think we can even move registering this emergency disable to
> hardware_enable_all()?  It seems there's no reason to register the
> callback if hardware_enable_all() hasn't been attempted.

Hmm, we could.  I don't know that it'd be worth doing though.  I suppose one
could argue that it would allow out-of-tree hypervisors to more easily co-exist
with KVM, but I haven't heard/seen anyone crying for that.  And it would be nice
to have all of this code in one location.  

I think we'd need more explicit synchronization if the callback is registered
on-demand, but that should be a relatively minor, if it's even needed.

So yeah, I'll give this a shot and go this route for v2 if it works out.

  reply	other threads:[~2024-05-13 16:17 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-25 23:39 [PATCH 0/4] KVM: Register cpuhp/syscore callbacks when enabling virt Sean Christopherson
2024-04-25 23:39 ` [PATCH 1/4] x86/reboot: Unconditionally define cpu_emergency_virt_cb typedef Sean Christopherson
2024-05-13 12:50   ` Huang, Kai
2024-05-13 16:01     ` Sean Christopherson
2024-05-13 22:44       ` Huang, Kai
2024-05-14 22:41         ` Huang, Kai
2024-05-21 20:02           ` Sean Christopherson
2024-05-21 21:43             ` Huang, Kai
2024-05-21 23:16               ` Sean Christopherson
2024-04-25 23:39 ` [PATCH 2/4] KVM: x86: Register emergency virt callback in common code, via kvm_x86_ops Sean Christopherson
2024-04-26  8:52   ` Chao Gao
2024-04-26 17:08     ` Sean Christopherson
2024-05-13 12:55       ` Huang, Kai
2024-05-13 16:17         ` Sean Christopherson [this message]
2024-04-25 23:39 ` [PATCH 3/4] KVM: Register cpuhp and syscore callbacks when enabling hardware Sean Christopherson
2024-04-26  8:32   ` Chao Gao
2024-04-26 17:07     ` Sean Christopherson
2024-05-07 16:31   ` Sean Christopherson
2024-05-09 12:10     ` Huang, Kai
2024-05-13 12:56   ` Huang, Kai
2024-04-25 23:39 ` [PATCH 4/4] KVM: Rename functions related to enabling virtualization hardware Sean Christopherson
2024-05-13 12:59   ` Huang, Kai
2024-05-13 16:20     ` Sean Christopherson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZkI9KcIYujLadSLA@google.com \
    --to=seanjc@google.com \
    --cc=chao.gao@intel.com \
    --cc=kai.huang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox