Radix guest support will be removed from the P7/8 path, so disallow
dependent threads mode on P9.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/include/asm/kvm_host.h |  1 -
 arch/powerpc/kvm/book3s_hv.c        | 27 +++++----------------------
 2 files changed, 5 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/include/asm/kvm_host.h 
b/arch/powerpc/include/asm/kvm_host.h
index 05fb00d37609..dd017dfa4e65 100644
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -304,7 +304,6 @@ struct kvm_arch {
        u8 fwnmi_enabled;
        u8 secure_guest;
        u8 svm_enabled;
-       bool threads_indep;
        bool nested_enable;
        bool dawr1_enabled;
        pgd_t *pgtable;
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 8480cbe4b4fa..85a14ce0ea0e 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -103,13 +103,9 @@ static int target_smt_mode;
 module_param(target_smt_mode, int, 0644);
 MODULE_PARM_DESC(target_smt_mode, "Target threads per core (0 = max)");
 
-static bool indep_threads_mode = true;
-module_param(indep_threads_mode, bool, S_IRUGO | S_IWUSR);
-MODULE_PARM_DESC(indep_threads_mode, "Independent-threads mode (only on 
POWER9)");
-
 static bool one_vm_per_core;
 module_param(one_vm_per_core, bool, S_IRUGO | S_IWUSR);
-MODULE_PARM_DESC(one_vm_per_core, "Only run vCPUs from the same VM on a core 
(requires indep_threads_mode=N)");
+MODULE_PARM_DESC(one_vm_per_core, "Only run vCPUs from the same VM on a core 
(requires POWER8 or older)");
 
 #ifdef CONFIG_KVM_XICS
 static const struct kernel_param_ops module_param_ops = {
@@ -2247,7 +2243,7 @@ static int kvmppc_set_one_reg_hv(struct kvm_vcpu *vcpu, 
u64 id,
  */
 static int threads_per_vcore(struct kvm *kvm)
 {
-       if (kvm->arch.threads_indep)
+       if (cpu_has_feature(CPU_FTR_ARCH_300))
                return 1;
        return threads_per_subcore;
 }
@@ -4345,7 +4341,7 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
        vcpu->arch.state = KVMPPC_VCPU_BUSY_IN_HOST;
 
        do {
-               if (kvm->arch.threads_indep && kvm_is_radix(kvm))
+               if (kvm_is_radix(kvm))
                        r = kvmhv_run_single_vcpu(vcpu, ~(u64)0,
                                                  vcpu->arch.vcore->lpcr);
                else
@@ -4961,21 +4957,8 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
        /*
         * Track that we now have a HV mode VM active. This blocks secondary
         * CPU threads from coming online.
-        * On POWER9, we only need to do this if the "indep_threads_mode"
-        * module parameter has been set to N.
         */
-       if (cpu_has_feature(CPU_FTR_ARCH_300)) {
-               if (!indep_threads_mode && !cpu_has_feature(CPU_FTR_HVMODE)) {
-                       pr_warn("KVM: Ignoring indep_threads_mode=N in nested 
hypervisor\n");
-                       kvm->arch.threads_indep = true;
-               } else if (!indep_threads_mode && 
cpu_has_feature(CPU_FTR_P9_RADIX_PREFETCH_BUG)) {
-                       pr_warn("KVM: Ignoring indep_threads_mode=N on 
pre-DD2.2 POWER9\n");
-                       kvm->arch.threads_indep = true;
-               } else {
-                       kvm->arch.threads_indep = indep_threads_mode;
-               }
-       }
-       if (!kvm->arch.threads_indep)
+       if (!cpu_has_feature(CPU_FTR_ARCH_300))
                kvm_hv_vm_activated();
 
        /*
@@ -5016,7 +4999,7 @@ static void kvmppc_core_destroy_vm_hv(struct kvm *kvm)
 {
        debugfs_remove_recursive(kvm->arch.debugfs_dir);
 
-       if (!kvm->arch.threads_indep)
+       if (!cpu_has_feature(CPU_FTR_ARCH_300))
                kvm_hv_vm_deactivated();
 
        kvmppc_free_vcores(kvm);
-- 
2.23.0

Reply via email to