[PATCH 3/3] arm64/kvm: use alternative auto-nop
Christoffer Dall
christoffer.dall at linaro.org
Thu Sep 8 04:16:48 PDT 2016
On Wed, Sep 07, 2016 at 11:07:10AM +0100, Mark Rutland wrote:
> Make use of the new alternative_if and alternative_else_nop_endif and
> get rid of our homebew NOP sleds, making the code simpler to read.
homebew?
>
> Note that for __kvm_call_hyp the branch to __vhe_hyp_call has been moved
> out of the alternative sequence, and in the default case there will be
> four additional NOPs executed.
>
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Cc: Marc Zyngier <marc.zyngier at arm.com>
> Cc: Christoffer Dall <christoffer.dall at linaro.org>
> Cc: kvmarm at lists.cs.columbia.edu
Acked-by: Christoffer Dall <christoffer.dall at linaro.org>
> ---
> arch/arm64/include/asm/kvm_mmu.h | 10 +++-------
> arch/arm64/kvm/hyp.S | 6 +-----
> 2 files changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
> index b6bb834..dff1098 100644
> --- a/arch/arm64/include/asm/kvm_mmu.h
> +++ b/arch/arm64/include/asm/kvm_mmu.h
> @@ -99,14 +99,10 @@
> .macro kern_hyp_va reg
> alternative_if_not ARM64_HAS_VIRT_HOST_EXTN
> and \reg, \reg, #HYP_PAGE_OFFSET_HIGH_MASK
> -alternative_else
> - nop
> -alternative_endif
> -alternative_if_not ARM64_HYP_OFFSET_LOW
> - nop
> -alternative_else
> +alternative_else_nop_endif
> +alternative_if ARM64_HYP_OFFSET_LOW
> and \reg, \reg, #HYP_PAGE_OFFSET_LOW_MASK
> -alternative_endif
> +alternative_else_nop_endif
> .endm
>
> #else
> diff --git a/arch/arm64/kvm/hyp.S b/arch/arm64/kvm/hyp.S
> index 7ce9315..2726635 100644
> --- a/arch/arm64/kvm/hyp.S
> +++ b/arch/arm64/kvm/hyp.S
> @@ -46,10 +46,6 @@ alternative_if_not ARM64_HAS_VIRT_HOST_EXTN
> hvc #0
> ldr lr, [sp], #16
> ret
> -alternative_else
> +alternative_else_nop_endif
> b __vhe_hyp_call
> - nop
> - nop
> - nop
> -alternative_endif
> ENDPROC(__kvm_call_hyp)
> --
> 1.9.1
>
More information about the linux-arm-kernel
mailing list