2022-09-09 00:13:39

by Isaku Yamahata

[permalink] [raw]
Subject: [PATCH v4 09/26] KVM: Do processor compatibility check on resume

From: Isaku Yamahata <[email protected]>

So far the processor compatibility check is not done on resume. It should
be done. The resume is called for resuming from S3/S4. CPUs can be
replaced or the kernel can resume from S4 on a different machine. So
compatibility check is desirable.

Signed-off-by: Isaku Yamahata <[email protected]>
---
virt/kvm/kvm_main.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 0ac00c711384..fc55447c4dba 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -5715,6 +5715,13 @@ static int kvm_suspend(void)

static void kvm_resume(void)
{
+ if (kvm_arch_check_processor_compat())
+ /*
+ * No warning here because kvm_arch_check_processor_compat()
+ * would have warned with more information.
+ */
+ return; /* FIXME: disable KVM */
+
if (kvm_usage_count) {
lockdep_assert_not_held(&kvm_count_lock);
hardware_enable_nolock((void *)__func__);
--
2.25.1


2022-09-09 02:28:42

by Chao Gao

[permalink] [raw]
Subject: Re: [PATCH v4 09/26] KVM: Do processor compatibility check on resume

On Thu, Sep 08, 2022 at 04:25:25PM -0700, [email protected] wrote:
>From: Isaku Yamahata <[email protected]>
>
>So far the processor compatibility check is not done on resume. It should
>be done. The resume is called for resuming from S3/S4. CPUs can be
>replaced or the kernel can resume from S4 on a different machine. So

Are they valid cases handled by other kernel components? Trying to
handle them in KVM only doesn't help as kernel is likely to fail
somewhere else.

2022-09-10 18:04:39

by Isaku Yamahata

[permalink] [raw]
Subject: Re: [PATCH v4 09/26] KVM: Do processor compatibility check on resume

On Fri, Sep 09, 2022 at 10:15:16AM +0800,
Chao Gao <[email protected]> wrote:

> On Thu, Sep 08, 2022 at 04:25:25PM -0700, [email protected] wrote:
> >From: Isaku Yamahata <[email protected]>
> >
> >So far the processor compatibility check is not done on resume. It should
> >be done. The resume is called for resuming from S3/S4. CPUs can be
> >replaced or the kernel can resume from S4 on a different machine. So
>
> Are they valid cases handled by other kernel components? Trying to
> handle them in KVM only doesn't help as kernel is likely to fail
> somewhere else.

I guess no. Actually without the compatibility check, kvm_resume() tries to
enable it by calling hardware_enable_nolock(). The real effect on error case of
this patch is to print out (potentially) more helpful message gracefully by
check_processor_compatibility instead of error message of haredware_enable.
--
Isaku Yamahata <[email protected]>