FROMLIST: KVM: arm64: Refactor __load_guest_stage2()
Refactor __load_guest_stage2() to introduce __load_stage2() which will be re-used when loading the host stage 2. Acked-by: Will Deacon <will@kernel.org> Signed-off-by: Quentin Perret <qperret@google.com> Link: https://lore.kernel.org/r/20210315143536.214621-24-qperret@google.com Bug: 178098380 Change-Id: I9fe5b39cc065bc12460ef69279700139b28e12c7
This commit is contained in:
@@ -270,9 +270,9 @@ static __always_inline u64 kvm_get_vttbr(struct kvm_s2_mmu *mmu)
|
|||||||
* Must be called from hyp code running at EL2 with an updated VTTBR
|
* Must be called from hyp code running at EL2 with an updated VTTBR
|
||||||
* and interrupts disabled.
|
* and interrupts disabled.
|
||||||
*/
|
*/
|
||||||
static __always_inline void __load_guest_stage2(struct kvm_s2_mmu *mmu)
|
static __always_inline void __load_stage2(struct kvm_s2_mmu *mmu, unsigned long vtcr)
|
||||||
{
|
{
|
||||||
write_sysreg(kern_hyp_va(mmu->arch)->vtcr, vtcr_el2);
|
write_sysreg(vtcr, vtcr_el2);
|
||||||
write_sysreg(kvm_get_vttbr(mmu), vttbr_el2);
|
write_sysreg(kvm_get_vttbr(mmu), vttbr_el2);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -283,6 +283,11 @@ static __always_inline void __load_guest_stage2(struct kvm_s2_mmu *mmu)
|
|||||||
asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT));
|
asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __always_inline void __load_guest_stage2(struct kvm_s2_mmu *mmu)
|
||||||
|
{
|
||||||
|
__load_stage2(mmu, kern_hyp_va(mmu->arch)->vtcr);
|
||||||
|
}
|
||||||
|
|
||||||
static inline struct kvm *kvm_s2_mmu_to_kvm(struct kvm_s2_mmu *mmu)
|
static inline struct kvm *kvm_s2_mmu_to_kvm(struct kvm_s2_mmu *mmu)
|
||||||
{
|
{
|
||||||
return container_of(mmu->arch, struct kvm, arch);
|
return container_of(mmu->arch, struct kvm, arch);
|
||||||
|
Reference in New Issue
Block a user