[PATCH v7 06/16] arm64: hyp/kvm: Extend hyp-stub API to allow function calls at EL2

Marc Zyngier marc.zyngier at arm.com
Tue Apr 19 08:22:04 PDT 2016


On 01/04/16 17:53, James Morse wrote:
> From: Geoff Levand <geoff at infradead.org>
> 
> The existing arm64 hcall implementations are limited in that they only
> allow for two distinct hcalls; with the x0 register either zero or not
> zero.  Also, the API of the hyp-stub exception vector routines and the
> KVM exception vector routines differ; hyp-stub uses a non-zero value in
> x0 to implement __hyp_set_vectors, whereas KVM uses it to implement
> kvm_call_hyp.
> 
> To allow for additional hcalls to be defined and to make the arm64 hcall
> API more consistent across exception vector routines, change the hcall
> implementations to reserve all x0 values below PAGE_SIZE for hcalls such
> as {s,g}et_vectors().

<pedantic>
Given that we already have 3 possible page sizes, defining an API in
terms of PAGE_SIZE is a bit risky. I don't anticipate someone coming up
with a 4097th host hypercall anytime soon, but just to be on the safe
size, let's cap it to 0xfff.
</pedantic>

> 
> Define two new preprocessor macros HVC_GET_VECTORS, and HVC_SET_VECTORS
> to be used as hcall type specifiers and convert the existing
> __hyp_get_vectors() and __hyp_set_vectors() routines to use these new
> macros when executing an HVC call.  Also, change the corresponding
> hyp-stub and KVM el1_sync exception vector routines to use these new
> macros.
> 
> Signed-off-by: Geoff Levand <geoff at infradead.org>
> [Merged two hcall patches, moved immediate value from esr to x0, use lr
>  as a scratch register]
> Signed-off-by: James Morse <james.morse at arm.com>

Otherwise:

Acked-by: Marc Zyngier <marc.zyngier at arm.com>

	M.
-- 
Jazz is not dead. It just smells funny...



More information about the linux-arm-kernel mailing list