Rather than passing arbitrary function pointers to run at hyp, define and equivalent set of SMCCC functions. Since the SMCCC functions are strongly tied to the original function prototypes, it is not expected for the host to ever call an invalid ID but a warning is raised if this does ever occur. As __kvm_vcpu_run is used for every switch between the host and a guest, it is explicitly singled out to be identified before the other function IDs to improve the performance of the hot path. Signed-off-by: Andrew Scull <ascull@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20200915104643.2543892-18-ascull@google.com
23 lines
495 B
ArmAsm
23 lines
495 B
ArmAsm
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2012,2013 - ARM Ltd
|
|
* Author: Marc Zyngier <marc.zyngier@arm.com>
|
|
*/
|
|
|
|
#include <linux/linkage.h>
|
|
|
|
#include <asm/alternative.h>
|
|
#include <asm/assembler.h>
|
|
#include <asm/cpufeature.h>
|
|
|
|
/*
|
|
* u64 __kvm_call_hyp_init(phys_addr_t pgd_ptr,
|
|
* unsigned long hyp_stack_ptr,
|
|
* unsigned long vector_ptr,
|
|
* unsigned long tpidr_el2);
|
|
*/
|
|
SYM_FUNC_START(__kvm_call_hyp_init)
|
|
hvc #0
|
|
ret
|
|
SYM_FUNC_END(__kvm_call_hyp_init)
|