From a141cca3892bb391d17a73dae917ad51d40ff69a Mon Sep 17 00:00:00 2001 From: Michael Ellerman Date: Wed, 27 Jul 2016 20:48:36 +1000 Subject: [PATCH] powerpc/mm: Add early_[cpu|mmu]_has_feature() In later patches, we will be switching CPU and MMU feature checks to use static keys. For checks in early boot before jump label is initialized we need a variant of [cpu|mmu]_has_feature() that doesn't use jump labels. So create those called, unimaginatively, early_[cpu|mmu]_has_feature(). Signed-off-by: Aneesh Kumar K.V Signed-off-by: Michael Ellerman --- arch/powerpc/include/asm/cputable.h | 7 ++++++- arch/powerpc/include/asm/mmu.h | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h index 7bb8701..3d8dc9a 100644 --- a/arch/powerpc/include/asm/cputable.h +++ b/arch/powerpc/include/asm/cputable.h @@ -577,12 +577,17 @@ enum { }; #endif /* __powerpc64__ */ -static inline bool cpu_has_feature(unsigned long feature) +static inline bool early_cpu_has_feature(unsigned long feature) { return !!((CPU_FTRS_ALWAYS & feature) || (CPU_FTRS_POSSIBLE & cur_cpu_spec->cpu_features & feature)); } +static inline bool cpu_has_feature(unsigned long feature) +{ + return early_cpu_has_feature(feature); +} + #define HBP_NUM 1 #endif /* !__ASSEMBLY__ */ diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h index f413b32..08b4c06 100644 --- a/arch/powerpc/include/asm/mmu.h +++ b/arch/powerpc/include/asm/mmu.h @@ -135,11 +135,16 @@ enum { 0, }; -static inline bool mmu_has_feature(unsigned long feature) +static inline bool early_mmu_has_feature(unsigned long feature) { return !!(MMU_FTRS_POSSIBLE & cur_cpu_spec->mmu_features & feature); } +static inline bool mmu_has_feature(unsigned long feature) +{ + return early_mmu_has_feature(feature); +} + static inline void mmu_clear_feature(unsigned long feature) { cur_cpu_spec->mmu_features &= ~feature; @@ -168,11 +173,21 @@ static inline bool radix_enabled(void) { return mmu_has_feature(MMU_FTR_TYPE_RADIX); } + +static inline bool early_radix_enabled(void) +{ + return early_mmu_has_feature(MMU_FTR_TYPE_RADIX); +} #else static inline bool radix_enabled(void) { return false; } + +static inline bool early_radix_enabled(void) +{ + return false; +} #endif #endif /* !__ASSEMBLY__ */ -- 2.7.4