| Message ID | b231dfa040ce4cc37f702f5c3a595fdeabfe0462.1615378209.git.christophe.leroy@csgroup.eu (mailing list archive) |
|---|---|
| State | Accepted |
| Headers | show |
| Series | powerpc: Force inlining of cpu_has_feature() to avoid build failure | expand |
| Context | Check | Description |
|---|---|---|
| snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (91966823812efbd175f904599e5cf2a854b39809) |
| snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
| snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
| snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
| snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
| snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 16 lines checked |
| snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
Le 10/03/2021 à 13:10, Christophe Leroy a écrit : > The code relies on constant folding of cpu_has_feature() based > on possible and always true values as defined per > CPU_FTRS_ALWAYS and CPU_FTRS_POSSIBLE. > > Build failure is encountered with for instance > book3e_all_defconfig on kisskb in the AMDGPU driver which uses > cpu_has_feature(CPU_FTR_VSX_COMP) to decide whether calling > kernel_enable_vsx() or not. > > The failure is due to cpu_has_feature() not being inlined with > that configuration with gcc 4.9. > > In the same way as commit acdad8fb4a15 ("powerpc: Force inlining of > mmu_has_feature to fix build failure"), for inlining of > cpu_has_feature(). > > Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Fixes following build http://kisskb.ellerman.id.au/kisskb/buildresult/14489391/ > --- > arch/powerpc/include/asm/cpu_has_feature.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/include/asm/cpu_has_feature.h b/arch/powerpc/include/asm/cpu_has_feature.h > index 7897d16e0990..727d4b321937 100644 > --- a/arch/powerpc/include/asm/cpu_has_feature.h > +++ b/arch/powerpc/include/asm/cpu_has_feature.h > @@ -7,7 +7,7 @@ > #include <linux/bug.h> > #include <asm/cputable.h> > > -static inline bool early_cpu_has_feature(unsigned long feature) > +static __always_inline bool early_cpu_has_feature(unsigned long feature) > { > return !!((CPU_FTRS_ALWAYS & feature) || > (CPU_FTRS_POSSIBLE & cur_cpu_spec->cpu_features & feature)); > @@ -46,7 +46,7 @@ static __always_inline bool cpu_has_feature(unsigned long feature) > return static_branch_likely(&cpu_feature_keys[i]); > } > #else > -static inline bool cpu_has_feature(unsigned long feature) > +static __always_inline bool cpu_has_feature(unsigned long feature) > { > return early_cpu_has_feature(feature); > } >
On Wed, 10 Mar 2021 12:10:34 +0000 (UTC), Christophe Leroy wrote: > The code relies on constant folding of cpu_has_feature() based > on possible and always true values as defined per > CPU_FTRS_ALWAYS and CPU_FTRS_POSSIBLE. > > Build failure is encountered with for instance > book3e_all_defconfig on kisskb in the AMDGPU driver which uses > cpu_has_feature(CPU_FTR_VSX_COMP) to decide whether calling > kernel_enable_vsx() or not. > > [...] Applied to powerpc/fixes. [1/1] powerpc: Force inlining of cpu_has_feature() to avoid build failure https://git.kernel.org/powerpc/c/eed5fae00593ab9d261a0c1ffc1bdb786a87a55a cheers
diff --git a/arch/powerpc/include/asm/cpu_has_feature.h b/arch/powerpc/include/asm/cpu_has_feature.h index 7897d16e0990..727d4b321937 100644 --- a/arch/powerpc/include/asm/cpu_has_feature.h +++ b/arch/powerpc/include/asm/cpu_has_feature.h @@ -7,7 +7,7 @@ #include <linux/bug.h> #include <asm/cputable.h> -static inline bool early_cpu_has_feature(unsigned long feature) +static __always_inline bool early_cpu_has_feature(unsigned long feature) { return !!((CPU_FTRS_ALWAYS & feature) || (CPU_FTRS_POSSIBLE & cur_cpu_spec->cpu_features & feature)); @@ -46,7 +46,7 @@ static __always_inline bool cpu_has_feature(unsigned long feature) return static_branch_likely(&cpu_feature_keys[i]); } #else -static inline bool cpu_has_feature(unsigned long feature) +static __always_inline bool cpu_has_feature(unsigned long feature) { return early_cpu_has_feature(feature); }
The code relies on constant folding of cpu_has_feature() based on possible and always true values as defined per CPU_FTRS_ALWAYS and CPU_FTRS_POSSIBLE. Build failure is encountered with for instance book3e_all_defconfig on kisskb in the AMDGPU driver which uses cpu_has_feature(CPU_FTR_VSX_COMP) to decide whether calling kernel_enable_vsx() or not. The failure is due to cpu_has_feature() not being inlined with that configuration with gcc 4.9. In the same way as commit acdad8fb4a15 ("powerpc: Force inlining of mmu_has_feature to fix build failure"), for inlining of cpu_has_feature(). Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> --- arch/powerpc/include/asm/cpu_has_feature.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)