From e210ad7cd99fd6c2a54c1255d53bb767436f8f98 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 17 Nov 2022 15:22:58 +0000 Subject: [PATCH] ANDROID: KVM: arm64: Introduce kvm_has_memrelinquish_services Used to determine whether memrelinquish services have been initialised. Bug: 240239989 Change-Id: I81dd23d8122ea54924d52b3fdc1fc4a8cdb28ea5 Signed-off-by: Keir Fraser Signed-off-by: Quentin Perret --- arch/arm64/include/asm/mem_relinquish.h | 1 + arch/arm64/mm/mem_relinquish.c | 6 ++++++ include/linux/mem_relinquish.h | 1 + 3 files changed, 8 insertions(+) diff --git a/arch/arm64/include/asm/mem_relinquish.h b/arch/arm64/include/asm/mem_relinquish.h index 091de6767440..ac51786a4a11 100644 --- a/arch/arm64/include/asm/mem_relinquish.h +++ b/arch/arm64/include/asm/mem_relinquish.h @@ -9,6 +9,7 @@ struct page; +bool kvm_has_memrelinquish_services(void); void page_relinquish(struct page *page); #endif /* __ASM_MEM_RELINQUISH_H */ diff --git a/arch/arm64/mm/mem_relinquish.c b/arch/arm64/mm/mem_relinquish.c index feea3adc2acc..7948098288e3 100644 --- a/arch/arm64/mm/mem_relinquish.c +++ b/arch/arm64/mm/mem_relinquish.c @@ -36,6 +36,12 @@ void kvm_init_memrelinquish_services(void) memshare_granule_sz = res.a0; } +bool kvm_has_memrelinquish_services(void) +{ + return !!memshare_granule_sz; +} +EXPORT_SYMBOL_GPL(kvm_has_memrelinquish_services); + void page_relinquish(struct page *page) { phys_addr_t phys, end; diff --git a/include/linux/mem_relinquish.h b/include/linux/mem_relinquish.h index d3213cb77fc5..b906c4196d11 100644 --- a/include/linux/mem_relinquish.h +++ b/include/linux/mem_relinquish.h @@ -13,6 +13,7 @@ #else /* !CONFIG_MEMORY_RELINQUISH */ +static inline bool kvm_has_memrelinquish_services(void) { return false; } static inline void page_relinquish(struct page *page) { } #endif /* CONFIG_MEMORY_RELINQUISH */