Re: [PATCH v3 21/23] device-dax: Add an 'align' attribute

From: kernel test robot
Date: Sat Aug 01 2020 - 02:18:14 EST


Hi Dan,

Thank you for the 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: m68k-randconfig-r034-20200731 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

from include/linux/irqflags.h:16,
from arch/m68k/include/asm/atomic.h:6,
from include/linux/atomic.h:7,
from include/linux/percpu-refcount.h:53,
from include/linux/memremap.h:6,
from drivers/dax/bus.c:3:
drivers/dax/bus.c: In function 'dev_dax_shrink':
include/linux/kernel.h:850:29: warning: comparison of distinct pointer types lacks a cast
850 | (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
| ^~
include/linux/kernel.h:864:4: note: in expansion of macro '__typecheck'
864 | (__typecheck(x, y) && __no_side_effects(x, y))
| ^~~~~~~~~~~
include/linux/kernel.h:874:24: note: in expansion of macro '__safe_cmp'
874 | __builtin_choose_expr(__safe_cmp(x, y), \
| ^~~~~~~~~~
include/linux/kernel.h:883:19: note: in expansion of macro '__careful_cmp'
883 | #define min(x, y) __careful_cmp(x, y, <)
| ^~~~~~~~~~~~~
drivers/dax/bus.c:881:12: note: in expansion of macro 'min'
881 | shrink = min(to_shrink, range_len(range));
| ^~~
In file included from include/linux/printk.h:405,
from include/linux/kernel.h:15,
from include/linux/list.h:9,
from include/linux/preempt.h:11,
from arch/m68k/include/asm/irqflags.h:6,
from include/linux/irqflags.h:16,
from arch/m68k/include/asm/atomic.h:6,
from include/linux/atomic.h:7,
from include/linux/percpu-refcount.h:53,
from include/linux/memremap.h:6,
from drivers/dax/bus.c:3:
drivers/dax/bus.c: In function 'dev_dax_validate_align':
drivers/dax/bus.c:1062:16: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 6 has type 'resource_size_t' {aka 'unsigned int'} [-Wformat=]
1062 | dev_dbg(dev, "%s: align %u invalid for size %llu\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:125:15: note: in definition of macro '__dynamic_func_call'
125 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:157:2: note: in expansion of macro '_dynamic_func_call'
157 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:115:2: note: in expansion of macro 'dynamic_dev_dbg'
115 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:115:23: note: in expansion of macro 'dev_fmt'
115 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dax/bus.c:1062:3: note: in expansion of macro 'dev_dbg'
1062 | dev_dbg(dev, "%s: align %u invalid for size %llu\n",
| ^~~~~~~
drivers/dax/bus.c:1062:50: note: format string is defined here
1062 | dev_dbg(dev, "%s: align %u invalid for size %llu\n",
| ~~~^
| |
| long long unsigned int
| %u
In file included from include/linux/printk.h:405,
from include/linux/kernel.h:15,
from include/linux/list.h:9,
from include/linux/preempt.h:11,
from arch/m68k/include/asm/irqflags.h:6,
from include/linux/irqflags.h:16,
from arch/m68k/include/asm/atomic.h:6,
from include/linux/atomic.h:7,
from include/linux/percpu-refcount.h:53,
from include/linux/memremap.h:6,
from drivers/dax/bus.c:3:
drivers/dax/bus.c:1071:17: warning: format '%ld' expects argument of type 'long int', but argument 6 has type 'ssize_t' {aka 'int'} [-Wformat=]
1071 | dev_dbg(dev, "%s: align %u invalid for range %ld\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:125:15: note: in definition of macro '__dynamic_func_call'
125 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:157:2: note: in expansion of macro '_dynamic_func_call'
157 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:115:2: note: in expansion of macro 'dynamic_dev_dbg'
115 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:115:23: note: in expansion of macro 'dev_fmt'
115 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dax/bus.c:1071:4: note: in expansion of macro 'dev_dbg'
1071 | dev_dbg(dev, "%s: align %u invalid for range %ld\n",
| ^~~~~~~
drivers/dax/bus.c:1071:51: note: format string is defined here
1071 | dev_dbg(dev, "%s: align %u invalid for range %ld\n",
| ~~^
| |
| long int
| %d
In file included from include/asm-generic/pgtable-nopud.h:7,
from arch/m68k/include/asm/pgtable_no.h:5,
from arch/m68k/include/asm/pgtable.h:3,
from include/linux/pgtable.h:6,
from include/linux/mm.h:33,
from include/linux/dax.h:6,
from drivers/dax/bus.c:8:
>> include/asm-generic/pgtable-nop4d.h:11:20: error: 'PGDIR_SHIFT' undeclared (first use in this function); did you mean 'PUD_SHIFT'?
11 | #define P4D_SHIFT PGDIR_SHIFT
| ^~~~~~~~~~~
include/asm-generic/pgtable-nopud.h:18:19: note: in expansion of macro 'P4D_SHIFT'
18 | #define PUD_SHIFT P4D_SHIFT
| ^~~~~~~~~
include/asm-generic/pgtable-nopud.h:20:28: note: in expansion of macro 'PUD_SHIFT'
20 | #define PUD_SIZE (1UL << PUD_SHIFT)
| ^~~~~~~~~
drivers/dax/bus.c:1078:7: note: in expansion of macro 'PUD_SIZE'
1078 | case PUD_SIZE:
| ^~~~~~~~
include/asm-generic/pgtable-nop4d.h:11:20: note: each undeclared identifier is reported only once for each function it appears in
11 | #define P4D_SHIFT PGDIR_SHIFT
| ^~~~~~~~~~~
include/asm-generic/pgtable-nopud.h:18:19: note: in expansion of macro 'P4D_SHIFT'
18 | #define PUD_SHIFT P4D_SHIFT
| ^~~~~~~~~
include/asm-generic/pgtable-nopud.h:20:28: note: in expansion of macro 'PUD_SHIFT'
20 | #define PUD_SIZE (1UL << PUD_SHIFT)
| ^~~~~~~~~
drivers/dax/bus.c:1078:7: note: in expansion of macro 'PUD_SIZE'
1078 | case PUD_SIZE:
| ^~~~~~~~
>> drivers/dax/bus.c:1082:7: error: 'PMD_SIZE' undeclared (first use in this function); did you mean 'P4D_SIZE'?
1082 | case PMD_SIZE:
| ^~~~~~~~
| P4D_SIZE

vim +1082 drivers/dax/bus.c

1050
1051 static ssize_t dev_dax_validate_align(struct dev_dax *dev_dax)
1052 {
1053 resource_size_t dev_size = dev_dax_size(dev_dax);
1054 struct device *dev = &dev_dax->dev;
1055 ssize_t rc, i;
1056
1057 if (dev->driver)
1058 return -EBUSY;
1059
1060 rc = -EINVAL;
1061 if (dev_size > 0 && !alloc_is_aligned(dev_dax, dev_size)) {
1062 dev_dbg(dev, "%s: align %u invalid for size %llu\n",
1063 __func__, dev_dax->align, dev_size);
1064 return rc;
1065 }
1066
1067 for (i = 0; i < dev_dax->nr_range; i++) {
1068 size_t len = range_len(&dev_dax->ranges[i].range);
1069
1070 if (!alloc_is_aligned(dev_dax, len)) {
1071 dev_dbg(dev, "%s: align %u invalid for range %ld\n",
1072 __func__, dev_dax->align, i);
1073 return rc;
1074 }
1075 }
1076
1077 switch (dev_dax->align) {
1078 case PUD_SIZE:
1079 if (!IS_ENABLED(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD))
1080 break;
1081 fallthrough;
> 1082 case PMD_SIZE:
1083 if (!has_transparent_hugepage())
1084 break;
1085 fallthrough;
1086 case PAGE_SIZE:
1087 rc = 0;
1088 break;
1089 }
1090
1091 return rc;
1092 }
1093

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip