Nicholas Piggin <npig...@gmail.com> writes: > 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 cb428e2f7140..928ed8180d9d 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)");
Isn't this also a security feature, where there was an ask to make sure threads/vCPU from other VM won't run on this core? In that context isn't this applicable also for P9? > > #ifdef CONFIG_KVM_XICS > static const struct kernel_param_ops module_param_ops = { > @@ -2227,7 +2223,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; > } > @@ -4319,7 +4315,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 > @@ -4934,21 +4930,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(); > > /* > @@ -4989,7 +4972,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