On Fri, Aug 19, 2022 at 11:00:18PM -0700, isaku.yamahata@xxxxxxxxx wrote: >From: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> > >So far the processor compatibility check is not done for newly added CPU. >It should be done. > >Signed-off-by: Isaku Yamahata <isaku.yamahata@xxxxxxxxx> >--- > 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 >