Subject: linux-next: build failure after merge of the kbuild tree

From: Stephen Rothwell <[email-masked]>
Date: Thu, 28 Jul 2016 12:08:14 +1000

Hi Michal,

After merging the kbuild tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

In file included from <command-line>:0:0:
arch/powerpc/mm/hash_utils_64.c: In function 'hash__early_init_mmu':
include/linux/kconfig.h:19:65: error: expected '(' before numeric constant
 #define ____or(arg1_or_junk, y)  __take_second_arg(arg1_or_junk 1, y)
                                                                 ^
include/linux/kconfig.h:7:48: note: in definition of macro '__take_second_arg'
 #define __take_second_arg(__ignored, val, ...) val
                                                ^
include/linux/kconfig.h:18:23: note: in expansion of macro '____or'
 #define ___or(x, y)   ____or(__ARG_PLACEHOLDER_##x, y)
                       ^
include/linux/kconfig.h:17:22: note: in expansion of macro '___or'
 #define __or(x, y)   ___or(x, y)   
                      ^
include/linux/kconfig.h:65:28: note: in expansion of macro '__or'
 #define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))
                            ^
arch/powerpc/mm/hash_utils_64.c:929:10: note: in expansion of macro 'IS_ENABLED'
  else if IS_ENABLED(CONFIG_PPC_NATIVE)
          ^
include/linux/kconfig.h:19:65: error: statement with no effect [-Werror=unused-value]
 #define ____or(arg1_or_junk, y)  __take_second_arg(arg1_or_junk 1, y)
                                                                 ^
include/linux/kconfig.h:7:48: note: in definition of macro '__take_second_arg'
 #define __take_second_arg(__ignored, val, ...) val
                                                ^
include/linux/kconfig.h:18:23: note: in expansion of macro '____or'
 #define ___or(x, y)   ____or(__ARG_PLACEHOLDER_##x, y)
                       ^
include/linux/kconfig.h:17:22: note: in expansion of macro '___or'
 #define __or(x, y)   ___or(x, y)   
                      ^
include/linux/kconfig.h:65:28: note: in expansion of macro '__or'
 #define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))
                            ^
arch/powerpc/mm/hash_utils_64.c:929:10: note: in expansion of macro 'IS_ENABLED'
  else if IS_ENABLED(CONFIG_PPC_NATIVE)
          ^
cc1: all warnings being treated as errors

Caused by commit

  7353644fa9df ("powerpc/mm: Fix build break when PPC_NATIVE=n")

from the powerpc tree interacting with commit

  5e8754fd80b0 ("kconfig.h: allow to use IS_{ENABLE,REACHABLE} in macro expansion")

from the kbuild tree.

I have applied the following fix patch (that should be applied to the
powerpc tree):

From: Stephen Rothwell <[email-masked]>
Date: Thu, 28 Jul 2016 12:03:25 +1000
Subject: [PATCH] powerpc/mm: parenthesise the if condition

The breakage here used to be hidden by the macro expansion.

Fixes: 7353644fa9df ("powerpc/mm: Fix build break when PPC_NATIVE=n")
Signed-off-by: Stephen Rothwell <[email-masked]>
---
 arch/powerpc/mm/hash_utils_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 1ff11c1bb182..b78b5d211278 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -926,7 +926,7 @@ void __init hash__early_init_mmu(void)
 		ps3_early_mm_init();
 	else if (firmware_has_feature(FW_FEATURE_LPAR))
 		hpte_init_pseries();
-	else if IS_ENABLED(CONFIG_PPC_NATIVE)
+	else if (IS_ENABLED(CONFIG_PPC_NATIVE))
 		hpte_init_native();
 
 	if (!mmu_hash_ops.hpte_insert)
-- 
2.8.1

-- 
Cheers,
Stephen Rothwell