From: Sean Christopherson <seanjc@google.com>
To: Kai Huang <kai.huang@intel.com>
Cc: "tglx@linutronix.de" <tglx@linutronix.de>,
"x86@kernel.org" <x86@kernel.org>,
"mingo@redhat.com" <mingo@redhat.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"bp@alien8.de" <bp@alien8.de>,
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Chao Gao <chao.gao@intel.com>,
"andrew.cooper3@citrix.com" <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v2 14/18] KVM: SVM: Check that the current CPU supports SVM in kvm_is_svm_supported()
Date: Mon, 13 Mar 2023 10:29:58 -0700 [thread overview]
Message-ID: <ZA9dbo2ZufqLdHNg@google.com> (raw)
In-Reply-To: <eb7ccc4f362ce833600f0096710003188571e4b2.camel@intel.com>
On Mon, Mar 13, 2023, Huang, Kai wrote:
> On Fri, 2023-03-10 at 13:42 -0800, Sean Christopherson wrote:
> > Check "this" CPU instead of the boot CPU when querying SVM support so that
> > the per-CPU checks done during hardware enabling actually function as
> > intended, i.e. will detect issues where SVM isn't support on all CPUs.
> >
> > Disable migration for the use from svm_init() mostly so that the standard
> > accessors for the per-CPU data can be used without getting yelled at by
> > CONFIG_DEBUG_PREEMPT=y sanity checks. Preventing the "disabled by BIOS"
> > error message from reporting the wrong CPU is largely a bonus, as ensuring
> > a stable CPU during module load is a non-goal for KVM.
> >
> > Link: https://lore.kernel.org/all/ZAdxNgv0M6P63odE@google.com
> > Cc: Kai Huang <kai.huang@intel.com>
> > Cc: Chao Gao <chao.gao@intel.com>
> > Signed-off-by: Sean Christopherson <seanjc@google.com>
>
> Should we add:
>
> Fixes: c82a5c5c53c5 ("KVM: x86: Do compatibility checks when onlining CPU")
>
> As that commit introduced using raw_smp_processor_id() to get CPU id in
> kvm_is_svm_supported() and print the CPU id out in error message?
My vote is to not to add a Fixes because using raw_smp_processor_id() and not disabling
migration for module probe case was deliberate and is safe. I don't want to give the
impression that the existing code is functionally broken. The only quirk is that
the reporting could be misleading.
That said, I'm not against adding a Fixes tag, because I certainly can't argue
against the reporting being flawed.
> > ---
> > arch/x86/kvm/svm/svm.c | 25 +++++++++++++++++++------
> > 1 file changed, 19 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> > index 2934f185960d..f04b61c3d9d8 100644
> > --- a/arch/x86/kvm/svm/svm.c
> > +++ b/arch/x86/kvm/svm/svm.c
> > @@ -520,18 +520,20 @@ static void svm_init_osvw(struct kvm_vcpu *vcpu)
> > vcpu->arch.osvw.status |= 1;
> > }
> >
> > -static bool kvm_is_svm_supported(void)
> > +static bool __kvm_is_svm_supported(void)
> > {
> > - int cpu = raw_smp_processor_id();
> > + int cpu = smp_processor_id();
>
> Since we have made sure __kvm_is_svm_supported() is always performed on a stable
> cpu, should we keep using raw_smp_processor_id()? �
>
> It is faster than smp_processor_id() when CONFIG_DEBUG_PREEMPT=y, but yes the
> latter can help to catch bug.
Most kernels with any amount of CONFIG_DEBUG_* options enabled are comically slow
anyways, I much prefer having the sanity checks than the performance.
next prev parent reply other threads:[~2023-03-13 17:30 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-10 21:42 [PATCH v2 00/18] x86/reboot: KVM: Clean up "emergency" virt code Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 01/18] x86/reboot: VMCLEAR active VMCSes before emergency reboot Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 02/18] x86/reboot: Expose VMCS crash hooks if and only if KVM_INTEL is enabled Sean Christopherson
2023-03-13 0:31 ` Huang, Kai
2023-03-13 18:31 ` Sean Christopherson
2023-03-14 1:19 ` Huang, Kai
2023-03-10 21:42 ` [PATCH v2 03/18] x86/reboot: Harden virtualization hooks for emergency reboot Sean Christopherson
2023-03-13 8:26 ` Chao Gao
2023-03-13 17:08 ` Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 04/18] x86/reboot: KVM: Handle VMXOFF in KVM's reboot callback Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 05/18] x86/reboot: KVM: Disable SVM during reboot via virt/KVM " Sean Christopherson
2023-03-13 0:52 ` Huang, Kai
2023-03-13 17:18 ` Sean Christopherson
2023-03-14 0:42 ` Huang, Kai
2023-03-15 0:47 ` Sean Christopherson
2023-03-15 1:30 ` Huang, Kai
2023-03-10 21:42 ` [PATCH v2 06/18] x86/reboot: Hoist "disable virt" helpers above "emergency reboot" path Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 07/18] x86/reboot: Disable virtualization during reboot iff callback is registered Sean Christopherson
2023-03-13 0:54 ` Huang, Kai
2023-03-13 18:40 ` Sean Christopherson
2023-03-14 0:50 ` Huang, Kai
2023-03-10 21:42 ` [PATCH v2 08/18] x86/reboot: Assert that IRQs are disabled when turning off virtualization Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 09/18] x86/virt: KVM: Open code cpu_has_vmx() in KVM VMX Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 10/18] x86/virt: KVM: Move VMXOFF helpers into " Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 11/18] KVM: SVM: Make KVM_AMD depend on CPU_SUP_AMD or CPU_SUP_HYGON Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 12/18] x86/virt: Drop unnecessary check on extended CPUID level in cpu_has_svm() Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 13/18] x86/virt: KVM: Open code cpu_has_svm() into kvm_is_svm_supported() Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 14/18] KVM: SVM: Check that the current CPU supports SVM in kvm_is_svm_supported() Sean Christopherson
2023-03-13 2:47 ` Huang, Kai
2023-03-13 17:29 ` Sean Christopherson [this message]
2023-03-14 0:17 ` Huang, Kai
2023-03-10 21:42 ` [PATCH v2 15/18] KVM: VMX: Ensure CPU is stable when probing basic VMX support Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 16/18] x86/virt: KVM: Move "disable SVM" helper into KVM SVM Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 17/18] KVM: x86: Force kvm_rebooting=true during emergency reboot/crash Sean Christopherson
2023-03-10 21:42 ` [PATCH v2 18/18] KVM: SVM: Use "standard" stgi() helper when disabling SVM 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=ZA9dbo2ZufqLdHNg@google.com \
--to=seanjc@google.com \
--cc=andrew.cooper3@citrix.com \
--cc=bp@alien8.de \
--cc=chao.gao@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=kai.huang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.