Commit a141cca3 authored by Michael Ellerman's avatar Michael Ellerman

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: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent bab4c8de
...@@ -577,12 +577,17 @@ enum { ...@@ -577,12 +577,17 @@ enum {
}; };
#endif /* __powerpc64__ */ #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) || return !!((CPU_FTRS_ALWAYS & feature) ||
(CPU_FTRS_POSSIBLE & cur_cpu_spec->cpu_features & 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 #define HBP_NUM 1
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
...@@ -135,11 +135,16 @@ enum { ...@@ -135,11 +135,16 @@ enum {
0, 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); 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) static inline void mmu_clear_feature(unsigned long feature)
{ {
cur_cpu_spec->mmu_features &= ~feature; cur_cpu_spec->mmu_features &= ~feature;
...@@ -168,11 +173,21 @@ static inline bool radix_enabled(void) ...@@ -168,11 +173,21 @@ static inline bool radix_enabled(void)
{ {
return mmu_has_feature(MMU_FTR_TYPE_RADIX); 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 #else
static inline bool radix_enabled(void) static inline bool radix_enabled(void)
{ {
return false; return false;
} }
static inline bool early_radix_enabled(void)
{
return false;
}
#endif #endif
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment