Message ID | 159625233419.3040297.13342516597848248917.stgit@dwillia2-desk3.amr.corp.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | device-dax: Support sub-dividing soft-reserved ranges | expand |
Hi Dan, I love your patch! Yet something to improve: [auto build test ERROR on 01830e6c042e8eb6eb202e05d7df8057135b4c26] url: https://github.com/0day-ci/linux/commits/Dan-Williams/device-dax-Support-sub-dividing-soft-reserved-ranges/20200801-114823 base: 01830e6c042e8eb6eb202e05d7df8057135b4c26 config: s390-randconfig-r033-20200731 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 5110fd0343c2d06c8ae538741fbef13ece5e68de) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install s390 cross compiling tool for clang build # apt-get install binutils-s390x-linux-gnu # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=s390 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from arch/s390/kernel/asm-offsets.c:11: In file included from include/linux/kvm_host.h:14: In file included from include/linux/mm.h:10: In file included from include/linux/gfp.h:6: In file included from include/linux/mmzone.h:813: >> include/linux/memory_hotplug.h:160:19: error: redefinition of 'phys_to_target_node' static inline int phys_to_target_node(u64 start) ^ include/linux/numa.h:38:19: note: previous definition is here static inline int phys_to_target_node(phys_addr_t addr) ^ In file included from arch/s390/kernel/asm-offsets.c:11: In file included from include/linux/kvm_host.h:32: In file included from include/linux/kvm_para.h:5: In file included from include/uapi/linux/kvm_para.h:36: In file included from arch/s390/include/asm/kvm_para.h:25: In file included from arch/s390/include/asm/diag.h:12: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:31: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:9: In file included from arch/s390/include/asm/io.h:72: include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __raw_readb(PCI_IOBASE + addr); ~~~~~~~~~~ ^ include/asm-generic/io.h:477:45: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le16_to_cpu(__raw_readw(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) ^ include/uapi/linux/swab.h:105:32: note: expanded from macro '__swab16' (__builtin_constant_p((__u16)(x)) ? \ ^ In file included from arch/s390/kernel/asm-offsets.c:11: In file included from include/linux/kvm_host.h:32: In file included from include/linux/kvm_para.h:5: In file included from include/uapi/linux/kvm_para.h:36: In file included from arch/s390/include/asm/kvm_para.h:25: In file included from arch/s390/include/asm/diag.h:12: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:31: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:9: In file included from arch/s390/include/asm/io.h:72: include/asm-generic/io.h:477:45: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le16_to_cpu(__raw_readw(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) ^ include/uapi/linux/swab.h:106:21: note: expanded from macro '__swab16' ___constant_swab16(x) : \ ^ include/uapi/linux/swab.h:15:12: note: expanded from macro '___constant_swab16' (((__u16)(x) & (__u16)0x00ffU) << 8) | \ ^ In file included from arch/s390/kernel/asm-offsets.c:11: In file included from include/linux/kvm_host.h:32: In file included from include/linux/kvm_para.h:5: In file included from include/uapi/linux/kvm_para.h:36: In file included from arch/s390/include/asm/kvm_para.h:25: In file included from arch/s390/include/asm/diag.h:12: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:31: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:9: In file included from arch/s390/include/asm/io.h:72: include/asm-generic/io.h:477:45: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le16_to_cpu(__raw_readw(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) ^ include/uapi/linux/swab.h:106:21: note: expanded from macro '__swab16' ___constant_swab16(x) : \ ^ include/uapi/linux/swab.h:16:12: note: expanded from macro '___constant_swab16' (((__u16)(x) & (__u16)0xff00U) >> 8))) ^ In file included from arch/s390/kernel/asm-offsets.c:11: In file included from include/linux/kvm_host.h:32: In file included from include/linux/kvm_para.h:5: In file included from include/uapi/linux/kvm_para.h:36: In file included from arch/s390/include/asm/kvm_para.h:25: In file included from arch/s390/include/asm/diag.h:12: In file included from include/linux/if_ether.h:19: In file included from include/linux/skbuff.h:31: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:9: In file included from arch/s390/include/asm/io.h:72: include/asm-generic/io.h:477:45: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] val = __le16_to_cpu(__raw_readw(PCI_IOBASE + addr)); ~~~~~~~~~~ ^ include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro '__le16_to_cpu' #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x)) ^ include/uapi/linux/swab.h:107:12: note: expanded from macro '__swab16' __fswab16(x)) ^ In file included from arch/s390/kernel/asm-offsets.c:11: In file included from include/linux/kvm_host.h:32: In file included from include/linux/kvm_para.h:5: In file included from include/uapi/linux/kvm_para.h:36: In file included from arch/s390/include/asm/kvm_para.h:25: In file included from arch/s390/include/asm/diag.h:12: vim +/phys_to_target_node +160 include/linux/memory_hotplug.h 151 152 #ifdef CONFIG_NUMA 153 extern int memory_add_physaddr_to_nid(u64 start); 154 extern int phys_to_target_node(u64 start); 155 #else 156 static inline int memory_add_physaddr_to_nid(u64 start) 157 { 158 return 0; 159 } > 160 static inline int phys_to_target_node(u64 start) 161 { 162 return 0; 163 } 164 #endif 165 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Dan, I love your patch! Yet something to improve: [auto build test ERROR on 01830e6c042e8eb6eb202e05d7df8057135b4c26] url: https://github.com/0day-ci/linux/commits/Dan-Williams/device-dax-Support-sub-dividing-soft-reserved-ranges/20200801-114823 base: 01830e6c042e8eb6eb202e05d7df8057135b4c26 config: x86_64-randconfig-a012-20200731 (attached as .config) compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from include/linux/mmzone.h:813, from include/linux/gfp.h:6, from include/linux/slab.h:15, from include/linux/crypto.h:20, from arch/x86/kernel/asm-offsets.c:9: >> include/linux/memory_hotplug.h:160:19: error: redefinition of 'phys_to_target_node' 160 | static inline int phys_to_target_node(u64 start) | ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/mmzone.h:14, from include/linux/gfp.h:6, from include/linux/slab.h:15, from include/linux/crypto.h:20, from arch/x86/kernel/asm-offsets.c:9: include/linux/numa.h:38:19: note: previous definition of 'phys_to_target_node' was here 38 | static inline int phys_to_target_node(phys_addr_t addr) | ^~~~~~~~~~~~~~~~~~~ make[2]: *** [scripts/Makefile.build:114: arch/x86/kernel/asm-offsets.s] Error 1 make[2]: Target '__build' not remade because of errors. make[1]: *** [Makefile:1197: prepare0] Error 2 make[1]: Target 'prepare' not remade because of errors. make: *** [Makefile:185: __sub-make] Error 2 make: Target 'prepare' not remade because of errors. vim +/phys_to_target_node +160 include/linux/memory_hotplug.h 151 152 #ifdef CONFIG_NUMA 153 extern int memory_add_physaddr_to_nid(u64 start); 154 extern int phys_to_target_node(u64 start); 155 #else 156 static inline int memory_add_physaddr_to_nid(u64 start) 157 { 158 return 0; 159 } > 160 static inline int phys_to_target_node(u64 start) 161 { 162 return 0; 163 } 164 #endif 165 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c index f3805bbaa784..c62e274d52d0 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c @@ -917,7 +917,6 @@ int phys_to_target_node(phys_addr_t start) return meminfo_to_nid(&numa_reserved_meminfo, start); } -EXPORT_SYMBOL_GPL(phys_to_target_node); int memory_add_physaddr_to_nid(u64 start) { diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index 375515803cd8..dcdc7d6206d5 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h @@ -151,11 +151,16 @@ int add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, #ifdef CONFIG_NUMA extern int memory_add_physaddr_to_nid(u64 start); +extern int phys_to_target_node(u64 start); #else static inline int memory_add_physaddr_to_nid(u64 start) { return 0; } +static inline int phys_to_target_node(u64 start) +{ + return 0; +} #endif #ifdef CONFIG_HAVE_ARCH_NODEDATA_EXTENSION diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index dcdf3271f87e..426b79adf529 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -353,11 +353,19 @@ int __ref __add_pages(int nid, unsigned long pfn, unsigned long nr_pages, #ifdef CONFIG_NUMA int __weak memory_add_physaddr_to_nid(u64 start) { - pr_info_once("Unknown target node for memory at 0x%llx, assuming node 0\n", + pr_info_once("Unknown online node for memory at 0x%llx, assuming node 0\n", start); return 0; } EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid); + +int __weak phys_to_target_node(u64 start) +{ + pr_info_once("Unknown target node for memory at 0x%llx, assuming node 0\n", + start); + return 0; +} +EXPORT_SYMBOL_GPL(phys_to_target_node); #endif /* find the smallest valid pfn in the range [start_pfn, end_pfn) */
In preparation to set a fallback value for dev_dax->target_node, introduce generic fallback helpers for phys_to_target_node() A generic implementation based on node-data or memblock was proposed, but as noted by Mike: "Here again, I would prefer to add a weak default for phys_to_target_node() because the "generic" implementation is not really generic. The fallback to reserved ranges is x86 specfic because on x86 most of the reserved areas is not in memblock.memory. AFAIK, no other architecture does this." The info message in the generic memory_add_physaddr_to_nid() implementation is fixed up to properly reflect that memory_add_physaddr_to_nid() communicates "online" node info and phys_to_target_node() indicates "target / to-be-onlined" node info. Cc: David Hildenbrand <david@redhat.com> Cc: Mike Rapoport <rppt@linux.ibm.com> Cc: Jia He <justin.he@arm.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> --- arch/x86/mm/numa.c | 1 - include/linux/memory_hotplug.h | 5 +++++ mm/memory_hotplug.c | 10 +++++++++- 3 files changed, 14 insertions(+), 2 deletions(-)