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

From: Stephen Rothwell <[email-masked]>
Date: Thu, 14 May 2015 18:21:14 +1000

Hi Andrew,

After merging the akpm-current tree, today's linux-next build (sparc
defconfig) failed like this:

In file included from arch/sparc/include/asm/pgtable_32.h:437:0,
                 from arch/sparc/include/asm/pgtable.h:6,
                 from include/linux/mm.h:53,
                 from include/linux/ring_buffer.h:5,
                 from include/linux/ftrace_event.h:5,
                 from include/trace/syscall.h:6,
                 from include/linux/syscalls.h:81,
                 from init/initramfs.c:19:
include/asm-generic/pgtable.h: In function 'pmdp_collapse_flush':
include/asm-generic/pgtable.h:211:2: error: implicit declaration of function '__pmd' [-Werror=implicit-function-declaration]
  return __pmd(0);
  ^
include/asm-generic/pgtable.h:211:2: error: incompatible types when returning type 'int' but 'pmd_t' was expected

Caused by commit b0593c13d7f6 ("mm/thp: split out pmd collapse/flush
into separate functions").

sparc 32 has no __pmd().  I applied this temporary fix for today just
to get it building:

From: Stephen Rothwell <[email-masked]>
Date: Thu, 14 May 2015 18:06:06 +1000
Subject: [PATCH] temporary fix for sparc 32 no having __pmd()

Signed-off-by: Stephen Rothwell <[email-masked]>
---
 arch/sparc/include/asm/page_32.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page_32.h
index f82a1f36b655..b2881f326e8e 100644
--- a/arch/sparc/include/asm/page_32.h
+++ b/arch/sparc/include/asm/page_32.h
@@ -69,7 +69,7 @@ typedef struct { unsigned long iopgprot; } iopgprot_t;
 
 #define __pte(x)	((pte_t) { (x) } )
 #define __iopte(x)	((iopte_t) { (x) } )
-/* #define __pmd(x)        ((pmd_t) { (x) } ) */ /* XXX procedure with loop */
+#define __pmd(x)        ((pmd_t) { { (x) } } ) /* XXX procedure with loop */
 #define __pgd(x)	((pgd_t) { (x) } )
 #define __ctxd(x)	((ctxd_t) { (x) } )
 #define __pgprot(x)	((pgprot_t) { (x) } )
@@ -97,7 +97,7 @@ typedef unsigned long iopgprot_t;
 
 #define __pte(x)	(x)
 #define __iopte(x)	(x)
-/* #define __pmd(x)        (x) */ /* XXX later */
+#define __pmd(x)        ((pmd_t) { { (x) } } ) /* XXX procedure with loop */
 #define __pgd(x)	(x)
 #define __ctxd(x)	(x)
 #define __pgprot(x)	(x)
-- 
2.1.4

-- 
Cheers,
Stephen Rothwell                    [email-masked]