On Wed, Jan 20, 2021 at 10:26:51AM +1000, Nicholas Piggin wrote: > Excerpts from Aneesh Kumar K.V's message of January 19, 2021 7:45 pm: > > Nicholas Piggin <npiggin@xxxxxxxxx> writes: > > > >> As explained in the comment, there is no need to flush TLBs on all > >> threads in a core when a vcpu moves between threads in the same core. > >> > >> Thread migrations can be a significant proportion of vcpu migrations, > >> so this can help reduce the TLB flushing and IPI traffic. > >> > >> Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> > >> --- > >> I believe we can do this and have the TLB coherency correct as per > >> the architecture, but would appreciate someone else verifying my > >> thinking. > >> > >> Thanks, > >> Nick > >> > >> arch/powerpc/kvm/book3s_hv.c | 28 ++++++++++++++++++++++++++-- > >> 1 file changed, 26 insertions(+), 2 deletions(-) > >> > >> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c > >> index 752daf43f780..53d0cbfe5933 100644 > >> --- a/arch/powerpc/kvm/book3s_hv.c > >> +++ b/arch/powerpc/kvm/book3s_hv.c > >> @@ -2584,7 +2584,7 @@ static void kvmppc_release_hwthread(int cpu) > >> tpaca->kvm_hstate.kvm_split_mode = NULL; > >> } > >> > >> -static void radix_flush_cpu(struct kvm *kvm, int cpu, struct kvm_vcpu *vcpu) > >> +static void radix_flush_cpu(struct kvm *kvm, int cpu, bool core, struct kvm_vcpu *vcpu) > >> { > > > > Can we rename 'core' to something like 'core_sched' or 'within_core' > > > >> struct kvm_nested_guest *nested = vcpu->arch.nested; > >> cpumask_t *cpu_in_guest; > >> @@ -2599,6 +2599,14 @@ static void radix_flush_cpu(struct kvm *kvm, int cpu, struct kvm_vcpu *vcpu) > >> cpu_in_guest = &kvm->arch.cpu_in_guest; > >> } > >> > > > > and do > > if (core_sched) { > > This function is called to flush guest TLBs on this cpu / all threads on > this cpu core. I don't think it helps to bring any "why" logic into it > because the caller has already dealt with that. I agree with Aneesh that the name "core" doesn't really help the reader to know what the parameter means. Either it needs a comment or a more descriptive name. Paul.