On Sun, Nov 07, 2021 at 07:25:13AM +0800, kernel test robot wrote:
Hi Naoya,
I love your patch! Yet something to improve:
[auto build test ERROR on hnaz-mm/master]
url:
https://github.com/0day-ci/linux/commits/Naoya-Horiguchi/mm-hwpoison-fix-...
base:
https://github.com/hnaz/linux-mm master
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
#
https://github.com/0day-ci/linux/commit/1b78bd027ee061f9378cf47687f9f4649...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Naoya-Horiguchi/mm-hwpoison-fix-unpoison_memory/20211105-135311
git checkout 1b78bd027ee061f9378cf47687f9f4649a160fa4
# save the attached .config to linux build tree
make W=1 ARCH=i386
I can't reproduce the same error with the above procedure (maybe because I
use newer version of gcc?), but anyway I suspect that memory-failure.c
should be compiled for i386 (which should not support software-recoverable
memory error).
X86_SUPPORTS_MEMORY_FAILURE depends on (X86_64 || !SPARSEMEM) in arch/x86/Kconfig,
where according to commit d949f36f1865 ("x86: Fix hwpoison code related build
failure on 32-bit NUMAQ"), dependency on !SPRASEMEM is just to avoid exhaustion of
page flag field. So I'm thinking of fixing this error by removing the dependency
on !SPARSEMEM like below.
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index bc9503674249..9a047cb71bba 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -717,11 +717,10 @@ config X86_32_NON_STANDARD
config X86_SUPPORTS_MEMORY_FAILURE
def_bool y
# MCE code calls memory_failure():
depends on X86_MCE
- # On 32-bit this adds too big of NODES_SHIFT and we run out of page flags:
- # On 32-bit SPARSEMEM adds too big of SECTIONS_WIDTH:
- depends on X86_64 || !SPARSEMEM
+ # On 32-bit software recoverable memory error is not supported:
+ depends on X86_64
select ARCH_SUPPORTS_MEMORY_FAILURE
config STA2X11
bool "STA2X11 Companion Chip Support"
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
I'll add the tag. Thank you for the report.
- Naoya Horiguchi
All errors (new ones prefixed by >>):
In file included from include/linux/mmzone.h:22,
from include/linux/gfp.h:6,
from include/linux/mm.h:10,
from mm/memory-failure.c:37:
mm/memory-failure.c: In function 'SetPageHWPoisonTakenOff':
>> include/linux/page-flags.h:525:24: error: unsigned conversion from 'long
long int' to 'long unsigned int' changes value from
'5212723395167473486' to '1230196558' [-Werror=overflow]
525 | #define MAGIC_HWPOISON 0x4857504f49534f4e
| ^~~~~~~~~~~~~~~~~~
mm/memory-failure.c:1170:25: note: in expansion of macro 'MAGIC_HWPOISON'
1170 | set_page_private(page, MAGIC_HWPOISON);
| ^~~~~~~~~~~~~~
cc1: all warnings being treated as errors
vim +525 include/linux/page-flags.h
520
521 #ifdef CONFIG_MEMORY_FAILURE
522 PAGEFLAG(HWPoison, hwpoison, PF_ANY)
523 TESTSCFLAG(HWPoison, hwpoison, PF_ANY)
524 #define __PG_HWPOISON (1UL << PG_hwpoison)
> 525 #define MAGIC_HWPOISON 0x4857504f49534f4e
526 extern void SetPageHWPoisonTakenOff(struct page *page);
527 extern void ClearPageHWPoisonTakenOff(struct page *page);
528 extern bool take_page_off_buddy(struct page *page);
529 extern bool put_page_back_buddy(struct page *page);
530 #else
531 PAGEFLAG_FALSE(HWPoison, hwpoison)
532 #define __PG_HWPOISON 0
533 #endif
534
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org