diff options
author | Marc Zyngier <maz@kernel.org> | 2024-08-30 15:01:44 +0200 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2024-08-30 17:30:41 +0200 |
commit | 0ba5b4ba61781f1eca843d9e5d499da329a8a275 (patch) | |
tree | c913b25d5880a85dc23d7b3d750832f5a4367335 | |
parent | Linux 6.11-rc3 (diff) | |
download | linux-0ba5b4ba61781f1eca843d9e5d499da329a8a275.tar.xz linux-0ba5b4ba61781f1eca843d9e5d499da329a8a275.zip |
firmware/smccc: Call arch-specific hook on discovering KVM services
arm64 will soon require its own callback to initialise services
that are only available on this architecture. Introduce a hook
that can be overloaded by the architecture.
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20240830130150.8568-2-will@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
-rw-r--r-- | arch/arm/include/asm/hypervisor.h | 2 | ||||
-rw-r--r-- | arch/arm64/include/asm/hypervisor.h | 4 | ||||
-rw-r--r-- | drivers/firmware/smccc/kvm_guest.c | 2 |
3 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/include/asm/hypervisor.h b/arch/arm/include/asm/hypervisor.h index bd61502b9715..8a648e506540 100644 --- a/arch/arm/include/asm/hypervisor.h +++ b/arch/arm/include/asm/hypervisor.h @@ -7,4 +7,6 @@ void kvm_init_hyp_services(void); bool kvm_arm_hyp_service_available(u32 func_id); +static inline void kvm_arch_init_hyp_services(void) { }; + #endif diff --git a/arch/arm64/include/asm/hypervisor.h b/arch/arm64/include/asm/hypervisor.h index 0ae427f352c8..8cab2ab535b7 100644 --- a/arch/arm64/include/asm/hypervisor.h +++ b/arch/arm64/include/asm/hypervisor.h @@ -7,4 +7,8 @@ void kvm_init_hyp_services(void); bool kvm_arm_hyp_service_available(u32 func_id); +static inline void kvm_arch_init_hyp_services(void) +{ +}; + #endif diff --git a/drivers/firmware/smccc/kvm_guest.c b/drivers/firmware/smccc/kvm_guest.c index 89a68e7eeaa6..f3319be20b36 100644 --- a/drivers/firmware/smccc/kvm_guest.c +++ b/drivers/firmware/smccc/kvm_guest.c @@ -39,6 +39,8 @@ void __init kvm_init_hyp_services(void) pr_info("hypervisor services detected (0x%08lx 0x%08lx 0x%08lx 0x%08lx)\n", res.a3, res.a2, res.a1, res.a0); + + kvm_arch_init_hyp_services(); } bool kvm_arm_hyp_service_available(u32 func_id) |