diff mbox series

[v2,bpf-next,7/8] vmalloc: introduce huge_vmalloc_supported

Message ID 20220519202037.2401584-8-song@kernel.org (mailing list archive)
State New
Headers show
Series bpf_prog_pack followup | expand

Commit Message

Song Liu May 19, 2022, 8:20 p.m. UTC
huge_vmalloc_supported() exposes vmap_allow_huge so that users of vmalloc
APIs could know whether vmalloc will return huge pages.

Suggested-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
Signed-off-by: Song Liu <song@kernel.org>
---
 include/linux/vmalloc.h | 2 ++
 mm/vmalloc.c            | 5 +++++
 2 files changed, 7 insertions(+)

Comments

kernel test robot May 20, 2022, 12:52 a.m. UTC | #1
Hi Song,

I love your patch! Yet something to improve:

[auto build test ERROR on bpf-next/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Song-Liu/bpf_prog_pack-followup/20220520-043417
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: sh-randconfig-r024-20220519 (https://download.01.org/0day-ci/archive/20220520/202205200826.fu46joi3-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 11.3.0
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
        # https://github.com/intel-lab-lkp/linux/commit/f1d2b40a3e45708f74228a552a43399b20c71954
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Song-Liu/bpf_prog_pack-followup/20220520-043417
        git checkout f1d2b40a3e45708f74228a552a43399b20c71954
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=sh SHELL=/bin/bash

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 >>):

   sh4-linux-ld: drivers/firewire/core-iso.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/firewire/core-cdev.o:include/linux/vmalloc.h:251: first defined here
--
   sh4-linux-ld: drivers/mtd/ubi/vmt.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/upd.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/build.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/cdev.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/kapi.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/eba.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/io.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/wl.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/attach.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/misc.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/mtd/ubi/debug.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/mtd/ubi/vtbl.o:include/linux/vmalloc.h:251: first defined here
--
   sh4-linux-ld: drivers/usb/gadget/function/uvc_queue.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/usb/gadget/function/f_uvc.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: drivers/usb/gadget/function/uvc_v4l2.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/usb/gadget/function/f_uvc.o:include/linux/vmalloc.h:251: first defined here
--
   sh4-linux-ld: drivers/hid/hid-picolcd_cir.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; drivers/hid/hid-picolcd_core.o:include/linux/vmalloc.h:251: first defined here
--
   sh4-linux-ld: fs/jffs2/read.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/write.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/gc.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/build.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/fs.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/super.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/compr_rtime.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/compr_zlib.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/jffs2/compr_lzo.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/jffs2/compr.o:include/linux/vmalloc.h:251: first defined here
--
   sh4-linux-ld: fs/ubifs/journal.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/file.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/dir.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/super.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/sb.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/io.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/tnc.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/master.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/scan.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/replay.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/log.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/commit.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/gc.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/orphan.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/budget.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/find.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/tnc_commit.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/compress.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/lpt.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/lprops.o: in function `huge_vmalloc_supported':
>> include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/recovery.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/ioctl.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/lpt_commit.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/tnc_misc.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/debug.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/misc.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/sysfs.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/crypto.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/xattr.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here
   sh4-linux-ld: fs/ubifs/auth.o: in function `huge_vmalloc_supported':
   include/linux/vmalloc.h:251: multiple definition of `huge_vmalloc_supported'; fs/ubifs/shrinker.o:include/linux/vmalloc.h:251: first defined here


vim +251 include/linux/vmalloc.h

   246	
   247	#else
   248	static inline void set_vm_flush_reset_perms(void *addr)
   249	{
   250	}
 > 251	bool huge_vmalloc_supported(void) { return false; }
   252	#endif
   253
diff mbox series

Patch

diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
index 5e0d0a60d9d5..3268e7e875ff 100644
--- a/include/linux/vmalloc.h
+++ b/include/linux/vmalloc.h
@@ -242,11 +242,13 @@  static inline void set_vm_flush_reset_perms(void *addr)
 	if (vm)
 		vm->flags |= VM_FLUSH_RESET_PERMS;
 }
+bool huge_vmalloc_supported(void);
 
 #else
 static inline void set_vm_flush_reset_perms(void *addr)
 {
 }
+bool huge_vmalloc_supported(void) { return false; }
 #endif
 
 /* for /proc/kcore */
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 07da85ae825b..d3b11317b025 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -72,6 +72,11 @@  early_param("nohugevmalloc", set_nohugevmalloc);
 static const bool vmap_allow_huge = false;
 #endif	/* CONFIG_HAVE_ARCH_HUGE_VMALLOC */
 
+bool huge_vmalloc_supported(void)
+{
+	return vmap_allow_huge;
+}
+
 bool is_vmalloc_addr(const void *x)
 {
 	unsigned long addr = (unsigned long)kasan_reset_tag(x);