All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chao Gao <chao.gao@intel.com>
To: <isaku.yamahata@intel.com>
Cc: <kvm@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<isaku.yamahata@gmail.com>, Paolo Bonzini <pbonzini@redhat.com>,
	"Sean Christopherson" <seanjc@google.com>,
	Kai Huang <kai.huang@intel.com>, "Will Deacon" <will@kernel.org>
Subject: Re: [RFC PATCH 12/18] KVM: Do processor compatibility check on cpu online and resume
Date: Tue, 23 Aug 2022 15:50:09 +0800	[thread overview]
Message-ID: <YwSGsbpuJ5cdNmDG@gao-cwp> (raw)
In-Reply-To: <60f9ec74499c673c474e9d909c2f3176bc6711c3.1660974106.git.isaku.yamahata@intel.com>

On Fri, Aug 19, 2022 at 11:00:18PM -0700, isaku.yamahata@intel.com wrote:
>From: Isaku Yamahata <isaku.yamahata@intel.com>
>
>So far the processor compatibility check is not done for newly added CPU.
>It should be done.
>
>Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
>---
> virt/kvm/kvm_arch.c | 20 +++++++++++++++-----
> 1 file changed, 15 insertions(+), 5 deletions(-)
>
>diff --git a/virt/kvm/kvm_arch.c b/virt/kvm/kvm_arch.c
>index 2ed8de0591c9..20971f43df95 100644
>--- a/virt/kvm/kvm_arch.c
>+++ b/virt/kvm/kvm_arch.c
>@@ -99,9 +99,15 @@ __weak int kvm_arch_del_vm(int usage_count)
> 
> __weak int kvm_arch_online_cpu(unsigned int cpu, int usage_count)
> {
>-	if (usage_count)
>-		return __hardware_enable();
>-	return 0;
>+	int r;
>+
>+	if (!usage_count)
>+		return 0;
>+
>+	r = kvm_arch_check_processor_compat();
>+	if (r)
>+		return r;

I think kvm_arch_check_processor_compat() should be called even when
usage_count is 0. Otherwise, compatibility checks may be missing on some
CPUs if no VM is running when those CPUs becomes online.

>+	return __hardware_enable();
> }
> 
> __weak int kvm_arch_offline_cpu(unsigned int cpu, int usage_count)
>@@ -126,6 +132,10 @@ __weak int kvm_arch_suspend(int usage_count)
> 
> __weak void kvm_arch_resume(int usage_count)
> {
>-	if (usage_count)
>-		(void)__hardware_enable();
>+	if (!usage_count)
>+		return;
>+
>+	if (kvm_arch_check_processor_compat())
>+		return; /* FIXME: disable KVM */

Ditto.

>+	(void)__hardware_enable();
> }
>-- 
>2.25.1
>

  reply	other threads:[~2022-08-23  7:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-20  6:00 [RFC PATCH 00/18] KVM hardware enable/disable reorganize isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 01/18] KVM: x86: Drop kvm_user_return_msr_cpu_online() isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 02/18] KVM: x86: Use this_cpu_ptr() instead of per_cpu_ptr(smp_processor_id()) isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 03/18] KVM: Drop kvm_count_lock and instead protect kvm_usage_count with kvm_lock isaku.yamahata
2022-08-23  2:26   ` Chao Gao
2022-08-23  8:40     ` Isaku Yamahata
2022-08-20  6:00 ` [RFC PATCH 04/18] KVM: Add arch hooks for PM events with empty stub isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 05/18] KVM: x86: Move TSC fixup logic to KVM arch resume callback isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 06/18] KVM: Add arch hook when VM is added/deleted isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 07/18] KVM: Move out KVM arch PM hooks and hardware enable/disable logic isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 08/18] KVM: kvm_arch.c: Remove _nolock post fix isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 09/18] KVM: kvm_arch.c: Remove a global variable, hardware_enable_failed isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 10/18] KVM: x86: Move check_processor_compatibility from init ops to runtime ops isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 11/18] Partially revert "KVM: Pass kvm_init()'s opaque param to additional arch funcs" isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 12/18] KVM: Do processor compatibility check on cpu online and resume isaku.yamahata
2022-08-23  7:50   ` Chao Gao [this message]
2022-08-23  8:08     ` Isaku Yamahata
2022-08-20  6:00 ` [RFC PATCH 13/18] KVM: x86: Duplicate arch callbacks related to pm events isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 14/18] KVM: Eliminate kvm_arch_post_init_vm() isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 15/18] KVM: x86: Delete kvm_arch_hardware_enable/disable() isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 16/18] KVM: Add config to not compile kvm_arch.c isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 17/18] KVM: x86: Remove cpus_hardware_enabled and related sanity check isaku.yamahata
2022-08-20  6:00 ` [RFC PATCH 18/18] KVM: " isaku.yamahata

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=YwSGsbpuJ5cdNmDG@gao-cwp \
    --to=chao.gao@intel.com \
    --cc=isaku.yamahata@gmail.com \
    --cc=isaku.yamahata@intel.com \
    --cc=kai.huang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    --cc=will@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.