Skip to content

Commit e0d4acb

Browse files
iamjpnmpe
authored andcommitted
KVM: PPC: Book3S HV nestedv2: Avoid reloading the tb offset
The kvmppc_get_tb_offset() getter reloads KVMPPC_GSID_TB_OFFSET from the L0 for nestedv2 host. This is unnecessary as the value does not change. KVMPPC_GSID_TB_OFFSET also need not be reloaded in kvmppc_{s,g}et_dec_expires(). Signed-off-by: Jordan Niethe <jniethe5@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20231201132618.555031-3-vaibhav@linux.ibm.com
1 parent 7d370e1 commit e0d4acb

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

arch/powerpc/include/asm/kvm_book3s.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -594,21 +594,24 @@ static inline u##size kvmppc_get_##reg(struct kvm_vcpu *vcpu) \
594594

595595

596596
KVMPPC_BOOK3S_VCORE_ACCESSOR(vtb, 64, KVMPPC_GSID_VTB)
597-
KVMPPC_BOOK3S_VCORE_ACCESSOR(tb_offset, 64, KVMPPC_GSID_TB_OFFSET)
598597
KVMPPC_BOOK3S_VCORE_ACCESSOR_GET(arch_compat, 32, KVMPPC_GSID_LOGICAL_PVR)
599598
KVMPPC_BOOK3S_VCORE_ACCESSOR_GET(lpcr, 64, KVMPPC_GSID_LPCR)
599+
KVMPPC_BOOK3S_VCORE_ACCESSOR_SET(tb_offset, 64, KVMPPC_GSID_TB_OFFSET)
600+
601+
static inline u64 kvmppc_get_tb_offset(struct kvm_vcpu *vcpu)
602+
{
603+
return vcpu->arch.vcore->tb_offset;
604+
}
600605

601606
static inline u64 kvmppc_get_dec_expires(struct kvm_vcpu *vcpu)
602607
{
603-
WARN_ON(kvmhv_nestedv2_cached_reload(vcpu, KVMPPC_GSID_TB_OFFSET) < 0);
604608
WARN_ON(kvmhv_nestedv2_cached_reload(vcpu, KVMPPC_GSID_DEC_EXPIRY_TB) < 0);
605609
return vcpu->arch.dec_expires;
606610
}
607611

608612
static inline void kvmppc_set_dec_expires(struct kvm_vcpu *vcpu, u64 val)
609613
{
610614
vcpu->arch.dec_expires = val;
611-
WARN_ON(kvmhv_nestedv2_cached_reload(vcpu, KVMPPC_GSID_TB_OFFSET) < 0);
612615
kvmhv_nestedv2_mark_dirty(vcpu, KVMPPC_GSID_DEC_EXPIRY_TB);
613616
}
614617

0 commit comments

Comments
 (0)