Re: [PATCH] kmalloc_index optimization(code size & runtime stable)
From: kbuild test robot
Date: Mon Apr 20 2020 - 09:28:53 EST
Hi Bernard,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.7-rc2 next-20200416]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Bernard-Zhao/kmalloc_index-optimization-code-size-runtime-stable/20200417-100445
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2fcd80144b93ff90836a44f2054b4d82133d3a85
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>
All errors (new ones prefixed by >>):
WARNING: unmet direct dependencies detected for FRAME_POINTER
Depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
Selected by
- FAULT_INJECTION_STACKTRACE_FILTER && FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT && !X86_64 && !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86
scripts/Makefile.build:59: 'arch/ia64/kernel/palinfo.ko' 'arch/ia64/kernel/mca_recovery.ko' 'arch/ia64/kernel/err_inject.ko' will not be built even though obj-m is specified.
scripts/Makefile.build:60: You cannot use subdir-y/m to visit a module Makefile. Use obj-y/m instead.
In file included from include/linux/irq.h:21,
from arch/ia64/include/asm/hardirq.h:19,
from include/linux/hardirq.h:9,
from include/linux/interrupt.h:11,
from arch/ia64/include/asm/mca.h:17,
from arch/ia64/kernel/asm-offsets.c:18:
include/linux/slab.h: In function 'kmalloc_index':
>> include/linux/slab.h:390:3: error: 'high_bit' undeclared (first use in this function); did you mean
390 | high_bit = fls((int)size);
| ^~~~~~~~
| assign_bit
include/linux/slab.h:390:3: note: each undeclared identifier is reported only once for each function it appears in
Makefile Module.symvers System.map arch block certs crypto drivers fs include init ipc kernel lib mm modules.builtin modules.builtin.modinfo modules.order net scripts security sound source usr virt vmlinux vmlinux.bin vmlinux.gz vmlinux.o [scripts/Makefile.build:100: arch/ia64/kernel/asm-offsets.s] Error 1
Target '__build' not remade because of errors.
Makefile Module.symvers System.map arch block certs crypto drivers fs include init ipc kernel lib mm modules.builtin modules.builtin.modinfo modules.order net scripts security sound source usr virt vmlinux vmlinux.bin vmlinux.gz vmlinux.o [Makefile:1141: prepare0] Error 2
Target 'prepare' not remade because of errors.
make: Makefile Module.symvers System.map arch block certs crypto drivers fs include init ipc kernel lib mm modules.builtin modules.builtin.modinfo modules.order net scripts security sound source usr virt vmlinux vmlinux.bin vmlinux.gz vmlinux.o [Makefile:180: sub-make] Error 2
13 real 5 user 8 sys 99.31% cpu make prepare
vim +/high_bit +390 include/linux/slab.h
356
357 /*
358 * Figure out which kmalloc slab an allocation of a certain size
359 * belongs to.
360 * 0 = zero alloc
361 * 1 = 65 .. 96 bytes
362 * 2 = 129 .. 192 bytes
363 * n = 2^(n-1)+1 .. 2^n
364 */
365 static __always_inline unsigned int kmalloc_index(size_t size)
366 {
367 if (!size)
368 return 0;
369
370 if (size <= KMALLOC_MIN_SIZE)
371 return KMALLOC_SHIFT_LOW;
372
373 if (KMALLOC_MIN_SIZE <= 32 && size > 64 && size <= 96)
374 return 1;
375 if (KMALLOC_MIN_SIZE <= 64 && size > 128 && size <= 192)
376 return 2;
377
378 if (size <= 8)
379 return 3;
380
381 /* size over KMALLOC_MAX_SIZE should trigger BUG */
382 if (size <= KMALLOC_MAX_SIZE) {
383 /*
384 * kmalloc_info[index]
385 * size 8----16----32----64----128---256---512---1024---2048.
386 * | | | | | | | | | | | | | | | | |
387 * index 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11
388 */
389
> 390 high_bit = fls((int)size);
391
392 if (size == (2 << (high_bit - KMALLOC_SIZE_POW_2_SHIFT_BIT)))
393 return (high_bit - KMALLOC_SIZE_POW_2_INDEX_BIT);
394
395 return high_bit;
396 }
397
398 BUG();
399
400 /* Will never be reached. Needed because the compiler may complain */
401 return -1;
402 }
403 #endif /* !CONFIG_SLOB */
404
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip