KVM: PPC: Book3S HV P9: Use large decrementer for HDEC
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 <npiggin@gmail.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20211123095231.1036501-6-npiggin@gmail.com
This commit is contained in:
parent
4ebbd075bc
commit
9581991a60
@ -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;
|
||||
|
@ -88,6 +88,7 @@ static struct clocksource clocksource_timebase = {
|
||||
|
||||
#define DECREMENTER_DEFAULT_MAX 0x7FFFFFFF
|
||||
u64 decrementer_max = DECREMENTER_DEFAULT_MAX;
|
||||
EXPORT_SYMBOL_GPL(decrementer_max); /* for KVM HDEC */
|
||||
|
||||
static int decrementer_set_next_event(unsigned long evt,
|
||||
struct clock_event_device *dev);
|
||||
|
@ -504,7 +504,8 @@ tm_return_to_guest:
|
||||
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);
|
||||
|
||||
save_clear_guest_mmu(kvm, vcpu);
|
||||
switch_mmu_to_host(kvm, host_pidr);
|
||||
|
Loading…
Reference in New Issue
Block a user