From: Fabiano Rosas <farosas@linux.ibm.com>
To: Nicholas Piggin <npiggin@gmail.com>, kvm-ppc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org, Nicholas Piggin <npiggin@gmail.com>
Subject: Re: [RFC PATCH 35/43] KVM: PPC: Book3S HV P9: Demand fault TM facility registers
Date: Thu, 08 Jul 2021 17:46:17 +0000 [thread overview]
Message-ID: <87sg0oog0m.fsf@linux.ibm.com> (raw)
In-Reply-To: <20210622105736.633352-36-npiggin@gmail.com>
Nicholas Piggin <npiggin@gmail.com> writes:
> Use HFSCR facility disabling to implement demand faulting for TM, with
> a hysteresis counter similar to the load_fp etc counters in context
> switching that implement the equivalent demand faulting for userspace
> facilities.
>
> This speeds up guest entry/exit by avoiding the register save/restore
> when a guest is not frequently using them. When a guest does use them
> often, there will be some additional demand fault overhead, but these
> are not commonly used facilities.
>
> -304 cycles (6681) POWER9 virt-mode NULL hcall with the previous patch
>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
> ---
> arch/powerpc/include/asm/kvm_host.h | 1 +
> arch/powerpc/kvm/book3s_hv.c | 21 +++++++++++++++++----
> arch/powerpc/kvm/book3s_hv_nested.c | 2 +-
> arch/powerpc/kvm/book3s_hv_p9_entry.c | 18 ++++++++++++------
> 4 files changed, 31 insertions(+), 11 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
> index bee95106c1f2..d79f0b1b1578 100644
> --- a/arch/powerpc/include/asm/kvm_host.h
> +++ b/arch/powerpc/include/asm/kvm_host.h
> @@ -586,6 +586,7 @@ struct kvm_vcpu_arch {
> ulong ppr;
> u32 pspb;
> u8 load_ebb;
> + u8 load_tm;
> ulong fscr;
> ulong shadow_fscr;
> ulong ebbhr;
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index 99e9da078e7d..2430725f29f7 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -1373,6 +1373,13 @@ static int kvmppc_ebb_unavailable(struct kvm_vcpu *vcpu)
> return RESUME_GUEST;
> }
>
> +static int kvmppc_tm_unavailable(struct kvm_vcpu *vcpu)
> +{
> + vcpu->arch.hfscr |= HFSCR_TM;
> +
> + return RESUME_GUEST;
> +}
> +
> static int kvmppc_handle_exit_hv(struct kvm_vcpu *vcpu,
> struct task_struct *tsk)
> {
> @@ -1654,6 +1661,8 @@ XXX benchmark guest exits
> r = kvmppc_pmu_unavailable(vcpu);
> if (cause = FSCR_EBB_LG)
> r = kvmppc_ebb_unavailable(vcpu);
> + if (cause = FSCR_TM_LG)
> + r = kvmppc_tm_unavailable(vcpu);
> }
> if (r = EMULATE_FAIL) {
> kvmppc_core_queue_program(vcpu, SRR1_PROGILL);
> @@ -1775,6 +1784,8 @@ static int kvmppc_handle_nested_exit(struct kvm_vcpu *vcpu)
> r = kvmppc_pmu_unavailable(vcpu);
> if (cause = FSCR_EBB_LG && (vcpu->arch.nested_hfscr & HFSCR_EBB))
> r = kvmppc_ebb_unavailable(vcpu);
> + if (cause = FSCR_TM_LG && (vcpu->arch.nested_hfscr & HFSCR_TM))
> + r = kvmppc_tm_unavailable(vcpu);
>
> if (r = EMULATE_FAIL)
> r = RESUME_HOST;
> @@ -3737,8 +3748,9 @@ static int kvmhv_vcpu_entry_p9_nested(struct kvm_vcpu *vcpu, u64 time_limit, uns
> msr |= MSR_VEC;
> if (cpu_has_feature(CPU_FTR_VSX))
> msr |= MSR_VSX;
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM))
> msr |= MSR_TM;
> msr = msr_check_and_set(msr);
>
> @@ -4453,8 +4465,9 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
> msr |= MSR_VEC;
> if (cpu_has_feature(CPU_FTR_VSX))
> msr |= MSR_VSX;
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM))
> msr |= MSR_TM;
> msr = msr_check_and_set(msr);
>
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
> index ee8668f056f9..5a534f7924f2 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -168,7 +168,7 @@ static void sanitise_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state *hr)
> * but preserve the interrupt cause field and facilities that might
> * be disabled for demand faulting in the L1.
> */
> - hr->hfscr &= (HFSCR_INTR_CAUSE | HFSCR_PM | HFSCR_EBB |
> + hr->hfscr &= (HFSCR_INTR_CAUSE | HFSCR_PM | HFSCR_TM | HFSCR_EBB |
> vcpu->arch.hfscr);
>
> /* Don't let data address watchpoint match in hypervisor state */
> diff --git a/arch/powerpc/kvm/book3s_hv_p9_entry.c b/arch/powerpc/kvm/book3s_hv_p9_entry.c
> index cf41261daa97..653f2765a399 100644
> --- a/arch/powerpc/kvm/book3s_hv_p9_entry.c
> +++ b/arch/powerpc/kvm/book3s_hv_p9_entry.c
> @@ -284,8 +284,9 @@ static void store_spr_state(struct kvm_vcpu *vcpu)
> void load_vcpu_state(struct kvm_vcpu *vcpu,
> struct p9_host_os_sprs *host_os_sprs)
> {
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) {
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM)) {
> unsigned long msr = vcpu->arch.shregs.msr;
> if (MSR_TM_ACTIVE(msr)) {
> kvmppc_restore_tm_hv(vcpu, msr, true);
> @@ -316,8 +317,9 @@ void store_vcpu_state(struct kvm_vcpu *vcpu)
> #endif
> vcpu->arch.vrsave = mfspr(SPRN_VRSAVE);
>
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) {
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM)) {
> unsigned long msr = vcpu->arch.shregs.msr;
> if (MSR_TM_ACTIVE(msr)) {
> kvmppc_save_tm_hv(vcpu, msr, true);
> @@ -326,6 +328,9 @@ void store_vcpu_state(struct kvm_vcpu *vcpu)
> vcpu->arch.tfhar = mfspr(SPRN_TFHAR);
> vcpu->arch.tfiar = mfspr(SPRN_TFIAR);
> }
> + vcpu->arch.load_tm++; /* see load_ebb comment for details */
> + if (!vcpu->arch.load_tm)
> + vcpu->arch.hfscr &= ~HFSCR_TM;
> }
> }
> EXPORT_SYMBOL_GPL(store_vcpu_state);
> @@ -615,8 +620,9 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
> msr |= MSR_VEC;
> if (cpu_has_feature(CPU_FTR_VSX))
> msr |= MSR_VSX;
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM))
> msr |= MSR_TM;
> msr = msr_check_and_set(msr);
> /* Save MSR for restore. This is after hard disable, so EE is clear. */
WARNING: multiple messages have this Message-ID (diff)
From: Fabiano Rosas <farosas@linux.ibm.com>
To: Nicholas Piggin <npiggin@gmail.com>, kvm-ppc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org, Nicholas Piggin <npiggin@gmail.com>
Subject: Re: [RFC PATCH 35/43] KVM: PPC: Book3S HV P9: Demand fault TM facility registers
Date: Thu, 08 Jul 2021 14:46:17 -0300 [thread overview]
Message-ID: <87sg0oog0m.fsf@linux.ibm.com> (raw)
In-Reply-To: <20210622105736.633352-36-npiggin@gmail.com>
Nicholas Piggin <npiggin@gmail.com> writes:
> Use HFSCR facility disabling to implement demand faulting for TM, with
> a hysteresis counter similar to the load_fp etc counters in context
> switching that implement the equivalent demand faulting for userspace
> facilities.
>
> This speeds up guest entry/exit by avoiding the register save/restore
> when a guest is not frequently using them. When a guest does use them
> often, there will be some additional demand fault overhead, but these
> are not commonly used facilities.
>
> -304 cycles (6681) POWER9 virt-mode NULL hcall with the previous patch
>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
> ---
> arch/powerpc/include/asm/kvm_host.h | 1 +
> arch/powerpc/kvm/book3s_hv.c | 21 +++++++++++++++++----
> arch/powerpc/kvm/book3s_hv_nested.c | 2 +-
> arch/powerpc/kvm/book3s_hv_p9_entry.c | 18 ++++++++++++------
> 4 files changed, 31 insertions(+), 11 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
> index bee95106c1f2..d79f0b1b1578 100644
> --- a/arch/powerpc/include/asm/kvm_host.h
> +++ b/arch/powerpc/include/asm/kvm_host.h
> @@ -586,6 +586,7 @@ struct kvm_vcpu_arch {
> ulong ppr;
> u32 pspb;
> u8 load_ebb;
> + u8 load_tm;
> ulong fscr;
> ulong shadow_fscr;
> ulong ebbhr;
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index 99e9da078e7d..2430725f29f7 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -1373,6 +1373,13 @@ static int kvmppc_ebb_unavailable(struct kvm_vcpu *vcpu)
> return RESUME_GUEST;
> }
>
> +static int kvmppc_tm_unavailable(struct kvm_vcpu *vcpu)
> +{
> + vcpu->arch.hfscr |= HFSCR_TM;
> +
> + return RESUME_GUEST;
> +}
> +
> static int kvmppc_handle_exit_hv(struct kvm_vcpu *vcpu,
> struct task_struct *tsk)
> {
> @@ -1654,6 +1661,8 @@ XXX benchmark guest exits
> r = kvmppc_pmu_unavailable(vcpu);
> if (cause == FSCR_EBB_LG)
> r = kvmppc_ebb_unavailable(vcpu);
> + if (cause == FSCR_TM_LG)
> + r = kvmppc_tm_unavailable(vcpu);
> }
> if (r == EMULATE_FAIL) {
> kvmppc_core_queue_program(vcpu, SRR1_PROGILL);
> @@ -1775,6 +1784,8 @@ static int kvmppc_handle_nested_exit(struct kvm_vcpu *vcpu)
> r = kvmppc_pmu_unavailable(vcpu);
> if (cause == FSCR_EBB_LG && (vcpu->arch.nested_hfscr & HFSCR_EBB))
> r = kvmppc_ebb_unavailable(vcpu);
> + if (cause == FSCR_TM_LG && (vcpu->arch.nested_hfscr & HFSCR_TM))
> + r = kvmppc_tm_unavailable(vcpu);
>
> if (r == EMULATE_FAIL)
> r = RESUME_HOST;
> @@ -3737,8 +3748,9 @@ static int kvmhv_vcpu_entry_p9_nested(struct kvm_vcpu *vcpu, u64 time_limit, uns
> msr |= MSR_VEC;
> if (cpu_has_feature(CPU_FTR_VSX))
> msr |= MSR_VSX;
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM))
> msr |= MSR_TM;
> msr = msr_check_and_set(msr);
>
> @@ -4453,8 +4465,9 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
> msr |= MSR_VEC;
> if (cpu_has_feature(CPU_FTR_VSX))
> msr |= MSR_VSX;
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM))
> msr |= MSR_TM;
> msr = msr_check_and_set(msr);
>
> diff --git a/arch/powerpc/kvm/book3s_hv_nested.c b/arch/powerpc/kvm/book3s_hv_nested.c
> index ee8668f056f9..5a534f7924f2 100644
> --- a/arch/powerpc/kvm/book3s_hv_nested.c
> +++ b/arch/powerpc/kvm/book3s_hv_nested.c
> @@ -168,7 +168,7 @@ static void sanitise_hv_regs(struct kvm_vcpu *vcpu, struct hv_guest_state *hr)
> * but preserve the interrupt cause field and facilities that might
> * be disabled for demand faulting in the L1.
> */
> - hr->hfscr &= (HFSCR_INTR_CAUSE | HFSCR_PM | HFSCR_EBB |
> + hr->hfscr &= (HFSCR_INTR_CAUSE | HFSCR_PM | HFSCR_TM | HFSCR_EBB |
> vcpu->arch.hfscr);
>
> /* Don't let data address watchpoint match in hypervisor state */
> diff --git a/arch/powerpc/kvm/book3s_hv_p9_entry.c b/arch/powerpc/kvm/book3s_hv_p9_entry.c
> index cf41261daa97..653f2765a399 100644
> --- a/arch/powerpc/kvm/book3s_hv_p9_entry.c
> +++ b/arch/powerpc/kvm/book3s_hv_p9_entry.c
> @@ -284,8 +284,9 @@ static void store_spr_state(struct kvm_vcpu *vcpu)
> void load_vcpu_state(struct kvm_vcpu *vcpu,
> struct p9_host_os_sprs *host_os_sprs)
> {
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) {
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM)) {
> unsigned long msr = vcpu->arch.shregs.msr;
> if (MSR_TM_ACTIVE(msr)) {
> kvmppc_restore_tm_hv(vcpu, msr, true);
> @@ -316,8 +317,9 @@ void store_vcpu_state(struct kvm_vcpu *vcpu)
> #endif
> vcpu->arch.vrsave = mfspr(SPRN_VRSAVE);
>
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) {
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM)) {
> unsigned long msr = vcpu->arch.shregs.msr;
> if (MSR_TM_ACTIVE(msr)) {
> kvmppc_save_tm_hv(vcpu, msr, true);
> @@ -326,6 +328,9 @@ void store_vcpu_state(struct kvm_vcpu *vcpu)
> vcpu->arch.tfhar = mfspr(SPRN_TFHAR);
> vcpu->arch.tfiar = mfspr(SPRN_TFIAR);
> }
> + vcpu->arch.load_tm++; /* see load_ebb comment for details */
> + if (!vcpu->arch.load_tm)
> + vcpu->arch.hfscr &= ~HFSCR_TM;
> }
> }
> EXPORT_SYMBOL_GPL(store_vcpu_state);
> @@ -615,8 +620,9 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
> msr |= MSR_VEC;
> if (cpu_has_feature(CPU_FTR_VSX))
> msr |= MSR_VSX;
> - if (cpu_has_feature(CPU_FTR_TM) ||
> - cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))
> + if ((cpu_has_feature(CPU_FTR_TM) ||
> + cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST)) &&
> + (vcpu->arch.hfscr & HFSCR_TM))
> msr |= MSR_TM;
> msr = msr_check_and_set(msr);
> /* Save MSR for restore. This is after hard disable, so EE is clear. */
next prev parent reply other threads:[~2021-07-08 17:46 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-22 10:56 [RFC PATCH 00/43] KVM: PPC: Book3S HV P9: entry/exit optimisations round 1 Nicholas Piggin
2021-06-22 10:56 ` Nicholas Piggin
2021-06-22 10:56 ` [RFC PATCH 01/43] powerpc/64s: Remove WORT SPR from POWER9/10 Nicholas Piggin
2021-06-22 10:56 ` Nicholas Piggin
2021-06-30 17:29 ` Fabiano Rosas
2021-06-30 17:29 ` Fabiano Rosas
2021-06-22 10:56 ` [RFC PATCH 02/43] KMV: PPC: Book3S HV P9: Use set_dec to set decrementer to host Nicholas Piggin
2021-06-22 10:56 ` Nicholas Piggin
2021-06-22 10:56 ` [RFC PATCH 03/43] KVM: PPC: Book3S HV P9: Use host timer accounting to avoid decrementer read Nicholas Piggin
2021-06-22 10:56 ` Nicholas Piggin
2021-06-22 10:56 ` [RFC PATCH 04/43] KVM: PPC: Book3S HV P9: Use large decrementer for HDEC Nicholas Piggin
2021-06-22 10:56 ` Nicholas Piggin
2021-06-22 10:56 ` [RFC PATCH 05/43] KVM: PPC: Book3S HV P9: Reduce mftb per guest entry/exit Nicholas Piggin
2021-06-22 10:56 ` Nicholas Piggin
2021-06-22 10:56 ` [RFC PATCH 06/43] powerpc/time: add API for KVM to re-arm the host timer/decrementer Nicholas Piggin
2021-06-22 10:56 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 07/43] KVM: PPC: Book3S HV: POWER10 enable HAIL when running radix guests Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-30 19:41 ` Fabiano Rosas
2021-06-30 19:41 ` Fabiano Rosas
2021-06-22 10:57 ` [RFC PATCH 08/43] powerpc/64s: Keep AMOR SPR a constant ~0 at runtime Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-30 19:17 ` Fabiano Rosas
2021-06-30 19:17 ` Fabiano Rosas
2021-06-22 10:57 ` [RFC PATCH 09/43] KVM: PPC: Book3S HV: Don't always save PMU for guest capable of nesting Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in use Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-07-01 13:17 ` Madhavan Srinivasan
2021-07-01 13:29 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in u Madhavan Srinivasan
2021-07-02 0:27 ` Nicholas Piggin
2021-07-02 0:27 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in use Nicholas Piggin
2021-07-08 12:45 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in u Nicholas Piggin
2021-07-08 12:45 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in use Nicholas Piggin
2021-07-12 3:42 ` Madhavan Srinivasan
2021-07-12 3:54 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in u Madhavan Srinivasan
2021-07-10 2:50 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in use Athira Rajeev
2021-07-10 2:50 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in u Athira Rajeev
2021-07-12 2:41 ` Nicholas Piggin
2021-07-12 2:41 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in use Nicholas Piggin
2021-07-12 3:17 ` Athira Rajeev
2021-07-14 12:39 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in u Nicholas Piggin
2021-07-14 12:39 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in use Nicholas Piggin
2021-07-16 3:43 ` Madhavan Srinivasan
2021-07-16 3:55 ` [RFC PATCH 10/43] powerpc/64s: Always set PMU control registers to frozen/disabled when not in u Madhavan Srinivasan
2021-06-22 10:57 ` [RFC PATCH 11/43] KVM: PPC: Book3S HV P9: Implement PMU save/restore in C Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-07-10 2:47 ` Athira Rajeev
2021-07-10 2:59 ` Athira Rajeev
2021-07-12 2:49 ` Nicholas Piggin
2021-07-12 2:49 ` Nicholas Piggin
2021-07-12 14:07 ` Athira Rajeev
2021-07-12 14:19 ` Athira Rajeev
2021-06-22 10:57 ` [RFC PATCH 12/43] KVM: PPC: Book3S HV P9: Factor out yield_count increment Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-07-08 17:56 ` Fabiano Rosas
2021-07-08 17:56 ` Fabiano Rosas
2021-06-22 10:57 ` [RFC PATCH 13/43] KVM: PPC: Book3S HV P9: Factor PMU save/load into context switch functions Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 14/43] KVM: PPC: Book3S HV P9: Demand fault PMU SPRs when marked not inuse Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 15/43] KVM: PPC: Book3S HV: CTRL SPR does not require read-modify-write Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 16/43] KVM: PPC: Book3S HV P9: Move SPRG restore to restore_p9_host_os_sprs Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 17/43] KVM: PPC: Book3S HV P9: Reduce mtmsrd instructions required to save host SPRs Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 18/43] KVM: PPC: Book3S HV P9: Improve mtmsrd scheduling by delaying MSR[EE] disable Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 19/43] KVM: PPC: Book3S HV P9: Add kvmppc_stop_thread to match kvmppc_start_thread Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-30 20:18 ` Fabiano Rosas
2021-06-30 20:18 ` Fabiano Rosas
2021-06-22 10:57 ` [RFC PATCH 20/43] KVM: PPC: Book3S HV: Change dec_expires to be relative to guest timebase Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 21/43] KVM: PPC: Book3S HV P9: Move TB updates Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 22/43] KVM: PPC: Book3S HV P9: Optimise timebase reads Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 23/43] KVM: PPC: Book3S HV P9: Avoid SPR scoreboard stalls Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 24/43] KVM: PPC: Book3S HV P9: Only execute mtSPR if the value changed Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 25/43] KVM: PPC: Book3S HV P9: Juggle SPR switching around Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 26/43] KVM: PPC: Book3S HV P9: Move vcpu register save/restore into functions Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 27/43] KVM: PPC: Book3S HV P9: Move host OS save/restore functions to built-in Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-07-08 5:32 ` Athira Rajeev
2021-07-08 5:44 ` Athira Rajeev
2021-07-12 2:50 ` Nicholas Piggin
2021-07-12 2:50 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 28/43] KVM: PPC: Book3S HV P9: Move nested guest entry into its own function Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 29/43] KVM: PPC: Book3S HV P9: Move remaining SPR and MSR access into low level entry Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 30/43] KVM: PPC: Book3S HV P9: Implement TM fastpath for guest entry/exit Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 31/43] KVM: PPC: Book3S HV P9: Switch PMU to guest as late as possible Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 32/43] KVM: PPC: Book3S HV P9: Restrict DSISR canary workaround to processors that requir Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 32/43] KVM: PPC: Book3S HV P9: Restrict DSISR canary workaround to processors that require it Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 33/43] KVM: PPC: Book3S HV P9: More SPR speed improvements Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 34/43] KVM: PPC: Book3S HV P9: Demand fault EBB facility registers Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-07-08 17:46 ` Fabiano Rosas
2021-07-08 17:46 ` Fabiano Rosas
2021-06-22 10:57 ` [RFC PATCH 35/43] KVM: PPC: Book3S HV P9: Demand fault TM " Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-07-08 17:46 ` Fabiano Rosas [this message]
2021-07-08 17:46 ` Fabiano Rosas
2021-06-22 10:57 ` [RFC PATCH 36/43] KVM: PPC: Book3S HV P9: Use Linux SPR save/restore to manage some host SPRs Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 37/43] KVM: PPC: Book3S HV P9: Comment and fix MMU context switching code Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 38/43] KVM: PPC: Book3S HV P9: Test dawr_enabled() before saving host DAWR SPRs Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-30 17:51 ` Fabiano Rosas
2021-06-30 17:51 ` Fabiano Rosas
2021-07-01 8:04 ` Nicholas Piggin
2021-07-01 8:04 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 39/43] KVM: PPC: Book3S HV P9: Don't restore PSSCR if not needed Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 40/43] KVM: PPC: Book3S HV P9: Avoid tlbsync sequence on radix guest exit Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 41/43] KVM: PPC: Book3S HV Nested: Avoid extra mftb() in nested entry Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 42/43] KVM: PPC: Book3S HV P9: Improve mfmsr performance on entry Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
2021-06-22 10:57 ` [RFC PATCH 43/43] KVM: PPC: Book3S HV P9: Optimise hash guest SLB saving Nicholas Piggin
2021-06-22 10:57 ` Nicholas Piggin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87sg0oog0m.fsf@linux.ibm.com \
--to=farosas@linux.ibm.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=npiggin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.