KVM: arm64: Remove @arch from __load_stage2()
PATCH 1/1 KVM: arm64: Remove @arch from __load_stage2()
From: "Zenghui Yu (Huawei)" <[email protected]>
Since commit fe49fd940e22 ("KVM: arm64: Move VTCR_EL2 into struct s2_mmu"), @arch is no longer required to obtain the per-kvm_s2_mmu vtcr and can be removed from __load_stage2().
--- arch/arm64/include/asm/kvm_mmu.h | 3 +-- arch/arm64/kvm/at.c | 2 +- arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 2 +- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 2 +- arch/arm64/kvm/hyp/nvhe/switch.c | 2 +- arch/arm64/kvm/hyp/nvhe/tlb.c | 4 ++-- arch/arm64/kvm/hyp/vhe/switch.c | 2 +- arch/arm64/kvm/hyp/vhe/tlb.c | 4 ++-- 8 files changed, 10 insertions(+), 11 deletions(-)
arch/arm64/include/asm/kvm_mmu.h +1 -2
@@ -318,8 +318,7 @@ 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 * and interrupts disabled. */ -static __always_inline void __load_stage2(struct kvm_s2_mmu *mmu, -struct kvm_arch *arch) +static __always_inline void __load_stage2(struct kvm_s2_mmu *mmu) {write_sysreg (mmu->vtcr, vtcr_el2);write_sysreg (kvm_get_vttbr (mmu), vttbr_el2);
arch/arm64/kvm/at.c +1 -1
@@ -1379,7 +1379,7 @@ static u64 __kvm_at_s1e01_fast(struct kvm_vcpu *vcpu, u32 op, u64 vaddr) } }write_sysreg_el1 (vcpu_read_sys_reg (vcpu,SCTLR_EL1 ),SYS_SCTLR ); -__load_stage2 (mmu, mmu->arch); +__load_stage2 (mmu); skip_mmu_switch:/* Temporarily switch back to guest context */
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h +1 -1
@@ -63,7 +63,7 @@ int refill_memcache(struct kvm_hyp_memcache *mc, unsigned long min_pages, static __always_inline void __load_host_stage2(void) {if (static_branch_likely (&kvm_protected_mode_initialized)) -__load_stage2 (&host_mmu.arch.mmu, &host_mmu.arch); +__load_stage2 (&host_mmu.arch.mmu);else write_sysreg (0 , vttbr_el2); }
arch/arm64/kvm/hyp/nvhe/mem_protect.c +1 -1
@@ -336,7 +336,7 @@ int __pkvm_prot_finalize(void)kvm_flush_dcache_to_poc (params,sizeof (*params));write_sysreg_hcr (params->hcr_el2); -__load_stage2 (&host_mmu.arch.mmu, &host_mmu.arch); +__load_stage2 (&host_mmu.arch.mmu);/* * Make sure to have an ISB before the TLB maintenance below but only
arch/arm64/kvm/hyp/nvhe/switch.c +1 -1
@@ -299,7 +299,7 @@ int __kvm_vcpu_run(struct kvm_vcpu *vcpu)__sysreg_restore_state_nvhe (guest_ctxt); mmu =kern_hyp_va (vcpu->arch.hw_mmu); -__load_stage2 (mmu,kern_hyp_va (mmu->arch)); +__load_stage2 (mmu);__activate_traps (vcpu);__hyp_vgic_restore_state (vcpu);
arch/arm64/kvm/hyp/nvhe/tlb.c +2 -2
@@ -110,7 +110,7 @@ static void enter_vmid_context(struct kvm_s2_mmu *mmu,if (vcpu)__load_host_stage2 ();else -__load_stage2 (mmu,kern_hyp_va (mmu->arch)); +__load_stage2 (mmu); asm(ALTERNATIVE("isb", "nop", ARM64_WORKAROUND_SPECULATIVE_AT)); }
@@ -128,7 +128,7 @@ static void exit_vmid_context(struct tlb_inv_context *cxt)return ;if (vcpu) -__load_stage2 (mmu,kern_hyp_va (mmu->arch)); +__load_stage2 (mmu);else __load_host_stage2 ();
arch/arm64/kvm/hyp/vhe/switch.c +1 -1
@@ -219,7 +219,7 @@ void kvm_vcpu_load_vhe(struct kvm_vcpu *vcpu)__vcpu_load_switch_sysregs (vcpu);__vcpu_load_activate_traps (vcpu); -__load_stage2 (vcpu->arch.hw_mmu, vcpu->arch.hw_mmu->arch); +__load_stage2 (vcpu->arch.hw_mmu); }void kvm_vcpu_put_vhe (struct kvm_vcpu *vcpu)
arch/arm64/kvm/hyp/vhe/tlb.c +2 -2
@@ -60,7 +60,7 @@ static void enter_vmid_context(struct kvm_s2_mmu *mmu,* place before clearing TGE. __load_stage2() already * has an ISB in order to deal with this. */ -__load_stage2 (mmu, mmu->arch); +__load_stage2 (mmu); val =read_sysreg (hcr_el2); val &= ~HCR_TGE ;write_sysreg_hcr (val);
@@ -78,7 +78,7 @@ static void exit_vmid_context(struct tlb_inv_context *cxt)/* ... and the stage-2 MMU context that we switched away from */ if (cxt->mmu) -__load_stage2 (cxt->mmu, cxt->mmu->arch); +__load_stage2 (cxt->mmu);if (cpus_have_final_cap (ARM64_WORKAROUND_SPECULATIVE_AT )) {/* Restore the registers to what they were */
Signature · 1 line
2.53.0
Quoted 7 lines · Zenghui Yu
From: "Zenghui Yu (Huawei)" <[email protected]>
Since commit
fe49fd940e22("KVM: arm64: MoveVTCR_EL2into structs2_mmu"), @arch is no longer required to obtain the per-kvm_s2_mmu vtcr and can be removed from__load_stage2().Signed-off-by Zenghui Yu (Huawei) <[email protected]>
Quoted 134 lines
--- arch/arm64/include/asm/kvm_mmu.h | 3 +-- arch/arm64/kvm/at.c | 2 +- arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 2 +- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 2 +- arch/arm64/kvm/hyp/nvhe/switch.c | 2 +- arch/arm64/kvm/hyp/nvhe/tlb.c | 4 ++-- arch/arm64/kvm/hyp/vhe/switch.c | 2 +- arch/arm64/kvm/hyp/vhe/tlb.c | 4 ++-- 8 files changed, 10 insertions(+), 11 deletions(-)arch/arm64/include/asm/kvm_mmu.h +1
-2@@ -318,8 +318,7 @@ 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 * and interrupts disabled. */ -static __always_inline void __load_stage2(struct kvm_s2_mmu *mmu, -struct kvm_arch *arch) +static __always_inline void __load_stage2(struct kvm_s2_mmu *mmu) {write_sysreg (mmu->vtcr, vtcr_el2);write_sysreg (kvm_get_vttbr (mmu), vttbr_el2);arch/arm64/kvm/at.c +1
-1@@ -1379,7 +1379,7 @@ static u64 __kvm_at_s1e01_fast(struct kvm_vcpu *vcpu, u32 op, u64 vaddr) } }write_sysreg_el1 (vcpu_read_sys_reg (vcpu,SCTLR_EL1 ),SYS_SCTLR ); -__load_stage2 (mmu, mmu->arch); +__load_stage2 (mmu); skip_mmu_switch:/* Temporarily switch back to guest context */ arch/arm64/kvm/hyp/include/nvhe/mem_protect.h +1
-1@@ -63,7 +63,7 @@ int refill_memcache(struct kvm_hyp_memcache *mc, unsigned long min_pages, static __always_inline void __load_host_stage2(void) {if (static_branch_likely (&kvm_protected_mode_initialized)) -__load_stage2 (&host_mmu.arch.mmu, &host_mmu.arch); +__load_stage2 (&host_mmu.arch.mmu);else write_sysreg (0 , vttbr_el2); }arch/arm64/kvm/hyp/nvhe/mem_protect.c +1
-1@@ -336,7 +336,7 @@ int __pkvm_prot_finalize(void)kvm_flush_dcache_to_poc (params,sizeof (*params));write_sysreg_hcr (params->hcr_el2); -__load_stage2 (&host_mmu.arch.mmu, &host_mmu.arch); +__load_stage2 (&host_mmu.arch.mmu);/* * Make sure to have an ISB before the TLB maintenance below but only arch/arm64/kvm/hyp/nvhe/switch.c +1
-1@@ -299,7 +299,7 @@ int __kvm_vcpu_run(struct kvm_vcpu *vcpu)__sysreg_restore_state_nvhe (guest_ctxt); mmu =kern_hyp_va (vcpu->arch.hw_mmu); -__load_stage2 (mmu,kern_hyp_va (mmu->arch)); +__load_stage2 (mmu);__activate_traps (vcpu);__hyp_vgic_restore_state (vcpu);arch/arm64/kvm/hyp/nvhe/tlb.c +2
-2@@ -110,7 +110,7 @@ static void enter_vmid_context(struct kvm_s2_mmu *mmu,if (vcpu)__load_host_stage2 ();else -__load_stage2 (mmu,kern_hyp_va (mmu->arch)); +__load_stage2 (mmu); asm(ALTERNATIVE("isb", "nop", ARM64_WORKAROUND_SPECULATIVE_AT)); }@@ -128,7 +128,7 @@ static void exit_vmid_context(struct tlb_inv_context *cxt)return ;if (vcpu) -__load_stage2 (mmu,kern_hyp_va (mmu->arch)); +__load_stage2 (mmu);else __load_host_stage2 ();arch/arm64/kvm/hyp/vhe/switch.c +1
-1@@ -219,7 +219,7 @@ void kvm_vcpu_load_vhe(struct kvm_vcpu *vcpu)__vcpu_load_switch_sysregs (vcpu);__vcpu_load_activate_traps (vcpu); -__load_stage2 (vcpu->arch.hw_mmu, vcpu->arch.hw_mmu->arch); +__load_stage2 (vcpu->arch.hw_mmu); }void kvm_vcpu_put_vhe (struct kvm_vcpu *vcpu)arch/arm64/kvm/hyp/vhe/tlb.c +2
-2@@ -60,7 +60,7 @@ static void enter_vmid_context(struct kvm_s2_mmu *mmu,* place before clearing TGE. __load_stage2() already * has an ISB in order to deal with this. */ -__load_stage2 (mmu, mmu->arch); +__load_stage2 (mmu); val =read_sysreg (hcr_el2); val &= ~HCR_TGE ;write_sysreg_hcr (val);@@ -78,7 +78,7 @@ static void exit_vmid_context(struct tlb_inv_context *cxt)/* ... and the stage-2 MMU context that we switched away from */ if (cxt->mmu) -__load_stage2 (cxt->mmu, cxt->mmu->arch); +__load_stage2 (cxt->mmu);if (cpus_have_final_cap (ARM64_WORKAROUND_SPECULATIVE_AT )) {/* Restore the registers to what they were */
Quoted 5 lines · Zenghui Yu
Since commit
fe49fd940e22("KVM: arm64: MoveVTCR_EL2into structs2_mmu"), @arch is no longer required to obtain the per-kvm_s2_mmu vtcr and can be removed from__load_stage2().
Applied to next, thanks!
[1/1] KVM: arm64: Remove @arch from __load_stage2()
commit: e72b425f617edebf6f374fa39f2c763c9b3696ec
Cheers,
M.
Signature · 1 line
Without deviation from the norm, progress is not possible.