Commit a4faf2e7 authored by Paul Mackerras's avatar Paul Mackerras

KVM: PPC: Book3S HV: Fix case where HDEC is treated as 32-bit on POWER9

Commit 2f272463 ("KVM: PPC: Book3S HV: Cope with host using large
decrementer mode", 2017-05-22) added code to treat the hypervisor
decrementer (HDEC) as a 64-bit value on POWER9 rather than 32-bit.
Unfortunately, that commit missed one place where HDEC is treated
as a 32-bit value.  This fixes it.

This bug should not have any user-visible consequences that I can
think of, beyond an occasional unnecessary exit to the host kernel.
If the hypervisor decrementer has gone negative, then the bottom
32 bits will be negative for about 4 seconds after that, so as
long as we get out of the guest within those 4 seconds we won't
conclude that the HDEC interrupt is spurious.
Reported-by: default avatarSuraj Jitindar Singh <sjitindarsingh@gmail.com>
Fixes: 2f272463 ("KVM: PPC: Book3S HV: Cope with host using large decrementer mode")
Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
parent 0bfa33c7
...@@ -1280,7 +1280,8 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) ...@@ -1280,7 +1280,8 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
cmpwi r12,BOOK3S_INTERRUPT_HV_DECREMENTER cmpwi r12,BOOK3S_INTERRUPT_HV_DECREMENTER
bne 2f bne 2f
mfspr r3,SPRN_HDEC mfspr r3,SPRN_HDEC
cmpwi r3,0 EXTEND_HDEC(r3)
cmpdi r3,0
mr r4,r9 mr r4,r9
bge fast_guest_return bge fast_guest_return
2: 2:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment