powerpc/mm: Add early_[cpu|mmu]_has_feature()
authorMichael Ellerman <mpe@ellerman.id.au>
Wed, 27 Jul 2016 10:48:36 +0000 (20:48 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 1 Aug 2016 01:15:00 +0000 (11:15 +1000)
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 <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/cputable.h
arch/powerpc/include/asm/mmu.h

index 7bb87017d9dbdbcc7e7d691e713baf76f3694073..3d8dc9a7831d51cf9fbda0fb9235361ad84390bd 100644 (file)
@@ -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__ */
index f413b3213a3bfbf5bb0491986fc3e94817c37259..08b4c06604d6fe53e0999e1d1a21f76e26831d2b 100644 (file)
@@ -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__ */