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

From: Stephen Rothwell <[email-masked]>
Date: Mon, 16 May 2022 19:10:05 +1000

Hi all,

After merging the nvdimm tree, today's linux-next build (i386 defconfig)
failed like this:

In file included from include/linux/bits.h:6,
                 from include/linux/bitops.h:6,
                 from include/linux/kernel.h:22,
                 from arch/x86/include/asm/percpu.h:27,
                 from arch/x86/include/asm/preempt.h:6,
                 from include/linux/preempt.h:78,
                 from include/linux/spinlock.h:55,
                 from include/linux/wait.h:9,
                 from include/linux/wait_bit.h:8,
                 from include/linux/fs.h:6,
                 from include/linux/highmem.h:5,
                 from arch/x86/mm/pat/set_memory.c:6:
arch/x86/mm/pat/set_memory.c: In function 'set_mce_nospec':
include/vdso/bits.h:7:40: error: left shift count >= width of type [-Werror=shift-count-overflow]
    7 | #define BIT(nr)                 (UL(1) << (nr))
      |                                        ^~
arch/x86/mm/pat/set_memory.c:1941:59: note: in expansion of macro 'BIT'
 1941 |         decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
      |                                                           ^~~

Caused by commit

  39702cf7885c ("x86/mce: relocate set{clear}_mce_nospec() functions")

I applied the following patch for today.

From: Stephen Rothwell <[email-masked]>
Date: Mon, 16 May 2022 19:00:54 +1000
Subject: [PATCH] fix up for "x86/mce: relocate set{clear}_mce_nospec() functions"

Signed-off-by: Stephen Rothwell <[email-masked]>
---
 arch/x86/mm/pat/set_memory.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c
index 59d9efb4257c..9200e619d8b7 100644
--- a/arch/x86/mm/pat/set_memory.c
+++ b/arch/x86/mm/pat/set_memory.c
@@ -1914,6 +1914,7 @@ int set_memory_wb(unsigned long addr, int numpages)
 }
 EXPORT_SYMBOL(set_memory_wb);
 
+#ifdef CONFIG_X86_64
 /* Prevent speculative access to a page by marking it not-present */
 int set_mce_nospec(unsigned long pfn)
 {
@@ -1959,6 +1960,7 @@ int clear_mce_nospec(unsigned long pfn)
 	return set_memory_present(&addr, 1);
 }
 EXPORT_SYMBOL_GPL(clear_mce_nospec);
+#endif
 
 int set_memory_x(unsigned long addr, int numpages)
 {
-- 
2.35.1

-- 
Cheers,
Stephen Rothwell