From e742f9d1da1008be8f35b51247b5182ab2b0eae4 Mon Sep 17 00:00:00 2001 From: Michalis Pappas Date: Sun, 11 Dec 2022 13:17:58 +0100 Subject: [PATCH] plat/kvm: Enable Pointer Authentication in KVM Signed-off-by: Michalis Pappas Reviewed-by: Maria Sfiraiala Reviewed-by: Razvan Virtan Approved-by: Razvan Deaconescu Tested-by: Unikraft CI GitHub-Closes: #686 --- plat/kvm/Makefile.uk | 3 +++ plat/kvm/arm/setup.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk index c8464512f..8a132efd9 100644 --- a/plat/kvm/Makefile.uk +++ b/plat/kvm/Makefile.uk @@ -92,6 +92,9 @@ endif ifeq ($(CONFIG_ENFORCE_W_XOR_X),y) LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/w_xor_x.c|common endif +ifeq ($(CONFIG_ARM64_FEAT_PAUTH),y) +LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/pauth.c|common +endif LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/cpu_native.c|common LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/cache64.S|common LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/smccc.c|common diff --git a/plat/kvm/arm/setup.c b/plat/kvm/arm/setup.c index 9912eb4ad..cee4b76d4 100644 --- a/plat/kvm/arm/setup.c +++ b/plat/kvm/arm/setup.c @@ -33,6 +33,10 @@ #include #include +#ifdef CONFIG_ARM64_FEAT_PAUTH +#include +#endif /* CONFIG_ARM64_FEAT_PAUTH */ + #ifdef CONFIG_HAVE_MEMTAG #include #endif /* CONFIG_HAVE_MEMTAG */ @@ -311,6 +315,12 @@ void __no_pauth _libkvmplat_start(void *dtb_pointer) #endif /* CONFIG_ENFORCE_W_XOR_X */ #endif /* CONFIG_PAGING */ +#ifdef CONFIG_ARM64_FEAT_PAUTH + ret = ukplat_pauth_init(); + if (unlikely(ret)) + UK_CRASH("Could not initialize PAuth (%d)\n", ret); +#endif /* CONFIG_ARM64_FEAT_PAUTH */ + #ifdef CONFIG_HAVE_MEMTAG ret = ukarch_memtag_init(); if (unlikely(ret)) -- 2.39.5