On 06/03/2021 02:06, Nicholas Piggin wrote:
On processors that don't suppress the HDEC exceptions when LPCR[HDICE]=0,
this could help reduce needless guest exits due to leftover exceptions on
entering the guest.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>

Reviewed-by: Alexey Kardashevskiy <a...@ozlabs.ru>


---
  arch/powerpc/include/asm/time.h | 2 ++
  arch/powerpc/kvm/book3s_hv.c    | 3 ++-
  2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h
index 8dd3cdb25338..68d94711811e 100644
--- a/arch/powerpc/include/asm/time.h
+++ b/arch/powerpc/include/asm/time.h
@@ -18,6 +18,8 @@
  #include <asm/vdso/timebase.h>
/* time.c */
+extern u64 decrementer_max;
+
  extern unsigned long tb_ticks_per_jiffy;
  extern unsigned long tb_ticks_per_usec;
  extern unsigned long tb_ticks_per_sec;
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index ffde1917ab68..24b0680f0ad7 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -3623,7 +3623,8 @@ static int kvmhv_load_hv_regs_and_go(struct kvm_vcpu 
*vcpu, u64 time_limit,
                vc->tb_offset_applied = 0;
        }
- mtspr(SPRN_HDEC, 0x7fffffff);
+       /* HDEC must be at least as large as DEC, so decrementer_max fits */
+       mtspr(SPRN_HDEC, decrementer_max);
switch_mmu_to_host_radix(kvm, host_pidr);




--
Alexey

Reply via email to