[rcu:willy-maple 125/202] include/linux/maple_tree.h:79:22: error: 'MAPLE_RANGE64_SLOTS' undeclared here (not in a function)

From: kernel test robot
Date: Tue Feb 02 2021 - 17:33:51 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git willy-maple
head: 7e346d2845b4bd77663394f39fa70456e0084c86
commit: 824aa5e4af0be646da193e90e3383651b93f1c8d [125/202] Maple Tree: Add new data structure
config: m68k-randconfig-r006-20210202 (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
# https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?id=824aa5e4af0be646da193e90e3383651b93f1c8d
git remote add rcu https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
git fetch --no-tags rcu willy-maple
git checkout 824aa5e4af0be646da193e90e3383651b93f1c8d
# 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 >>):

In file included from lib/maple_tree.c:9:
>> include/linux/maple_tree.h:79:22: error: 'MAPLE_RANGE64_SLOTS' undeclared here (not in a function)
79 | unsigned long pivot[MAPLE_RANGE64_SLOTS - 1];
| ^~~~~~~~~~~~~~~~~~~
>> include/linux/maple_tree.h:85:22: error: 'MAPLE_ARANGE64_SLOTS' undeclared here (not in a function)
85 | unsigned long pivot[MAPLE_ARANGE64_SLOTS - 1];
| ^~~~~~~~~~~~~~~~~~~~
>> include/linux/maple_tree.h:91:28: error: 'MAPLE_NODE_SLOTS' undeclared here (not in a function); did you mean 'MAPLE_ALLOC_SLOTS'?
91 | #define MAPLE_ALLOC_SLOTS (MAPLE_NODE_SLOTS - 1)
| ^~~~~~~~~~~~~~~~
include/linux/maple_tree.h:96:27: note: in expansion of macro 'MAPLE_ALLOC_SLOTS'
96 | struct maple_alloc *slot[MAPLE_ALLOC_SLOTS];
| ^~~~~~~~~~~~~~~~~
lib/maple_tree.c:40:19: warning: initialization of 'unsigned char' from 'const long unsigned int *' makes integer from pointer without a cast [-Wint-conversion]
40 | [maple_dense] = MAPLE_NODE_SLOTS,
| ^~~~~~~~~~~~~~~~
lib/maple_tree.c:40:19: note: (near initialization for 'mt_slots[0]')
lib/maple_tree.c:40:19: error: initializer element is not constant
lib/maple_tree.c:40:19: note: (near initialization for 'mt_slots[0]')
lib/maple_tree.c:41:21: warning: initialization of 'unsigned char' from 'const long unsigned int *' makes integer from pointer without a cast [-Wint-conversion]
41 | [maple_leaf_64] = MAPLE_RANGE64_SLOTS,
| ^~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:41:21: note: (near initialization for 'mt_slots[1]')
lib/maple_tree.c:41:21: error: initializer element is not constant
lib/maple_tree.c:41:21: note: (near initialization for 'mt_slots[1]')
lib/maple_tree.c:42:21: warning: initialization of 'unsigned char' from 'const long unsigned int *' makes integer from pointer without a cast [-Wint-conversion]
42 | [maple_range_64] = MAPLE_RANGE64_SLOTS,
| ^~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:42:21: note: (near initialization for 'mt_slots[2]')
lib/maple_tree.c:42:21: error: initializer element is not constant
lib/maple_tree.c:42:21: note: (near initialization for 'mt_slots[2]')
lib/maple_tree.c:43:22: warning: initialization of 'unsigned char' from 'const long unsigned int *' makes integer from pointer without a cast [-Wint-conversion]
43 | [maple_arange_64] = MAPLE_ARANGE64_SLOTS,
| ^~~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:43:22: note: (near initialization for 'mt_slots[3]')
lib/maple_tree.c:43:22: error: initializer element is not constant
lib/maple_tree.c:43:22: note: (near initialization for 'mt_slots[3]')
lib/maple_tree.c:49:21: warning: initialization of 'unsigned char' from 'const unsigned char *' makes integer from pointer without a cast [-Wint-conversion]
49 | [maple_leaf_64] = MAPLE_RANGE64_SLOTS - 1,
| ^~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:49:21: note: (near initialization for 'mt_pivots[1]')
lib/maple_tree.c:49:21: error: initializer element is not constant
lib/maple_tree.c:49:21: note: (near initialization for 'mt_pivots[1]')
lib/maple_tree.c:50:21: warning: initialization of 'unsigned char' from 'const unsigned char *' makes integer from pointer without a cast [-Wint-conversion]
50 | [maple_range_64] = MAPLE_RANGE64_SLOTS - 1,
| ^~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:50:21: note: (near initialization for 'mt_pivots[2]')
lib/maple_tree.c:50:21: error: initializer element is not constant
lib/maple_tree.c:50:21: note: (near initialization for 'mt_pivots[2]')
lib/maple_tree.c:51:22: warning: initialization of 'unsigned char' from 'const unsigned char *' makes integer from pointer without a cast [-Wint-conversion]
51 | [maple_arange_64] = MAPLE_ARANGE64_SLOTS - 1,
| ^~~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:51:22: note: (near initialization for 'mt_pivots[3]')
lib/maple_tree.c:51:22: error: initializer element is not constant
lib/maple_tree.c:51:22: note: (near initialization for 'mt_pivots[3]')
lib/maple_tree.c:56:36: error: invalid operands to binary / (have 'const unsigned char *' and 'int')
56 | [maple_dense] = MAPLE_NODE_SLOTS / 2,
| ~~~~~~~~~~~~~~~~ ^
| |
| const unsigned char *
lib/maple_tree.c:56:19: warning: initialization of 'unsigned char' from 'const unsigned char *' makes integer from pointer without a cast [-Wint-conversion]
56 | [maple_dense] = MAPLE_NODE_SLOTS / 2,
| ^~~~~~~~~~~~~~~~
lib/maple_tree.c:56:19: note: (near initialization for 'mt_min_slots[0]')
lib/maple_tree.c:56:19: error: initializer element is not constant
lib/maple_tree.c:56:19: note: (near initialization for 'mt_min_slots[0]')
lib/maple_tree.c:57:42: error: invalid operands to binary / (have 'const unsigned char *' and 'int')
57 | [maple_leaf_64] = (MAPLE_RANGE64_SLOTS / 2) - 2,
| ~~~~~~~~~~~~~~~~~~~ ^
| |
| const unsigned char *
lib/maple_tree.c:57:21: warning: initialization of 'unsigned char' from 'const unsigned char *' makes integer from pointer without a cast [-Wint-conversion]
57 | [maple_leaf_64] = (MAPLE_RANGE64_SLOTS / 2) - 2,
| ^
lib/maple_tree.c:57:21: note: (near initialization for 'mt_min_slots[1]')
lib/maple_tree.c:57:21: error: initializer element is not constant
lib/maple_tree.c:57:21: note: (near initialization for 'mt_min_slots[1]')
lib/maple_tree.c:58:42: error: invalid operands to binary / (have 'const unsigned char *' and 'int')
58 | [maple_range_64] = (MAPLE_RANGE64_SLOTS / 2) - 2,
| ~~~~~~~~~~~~~~~~~~~ ^
| |
| const unsigned char *
lib/maple_tree.c:58:21: warning: initialization of 'unsigned char' from 'const unsigned char *' makes integer from pointer without a cast [-Wint-conversion]
58 | [maple_range_64] = (MAPLE_RANGE64_SLOTS / 2) - 2,
| ^
lib/maple_tree.c:58:21: note: (near initialization for 'mt_min_slots[2]')
lib/maple_tree.c:58:21: error: initializer element is not constant
lib/maple_tree.c:58:21: note: (near initialization for 'mt_min_slots[2]')
lib/maple_tree.c:59:44: error: invalid operands to binary / (have 'const unsigned char *' and 'int')
59 | [maple_arange_64] = (MAPLE_ARANGE64_SLOTS / 2) - 1,
| ~~~~~~~~~~~~~~~~~~~~ ^
| |
| const unsigned char *
lib/maple_tree.c:59:22: warning: initialization of 'unsigned char' from 'const unsigned char *' makes integer from pointer without a cast [-Wint-conversion]
59 | [maple_arange_64] = (MAPLE_ARANGE64_SLOTS / 2) - 1,
| ^
lib/maple_tree.c:59:22: note: (near initialization for 'mt_min_slots[3]')
lib/maple_tree.c:59:22: error: initializer element is not constant
lib/maple_tree.c:59:22: note: (near initialization for 'mt_min_slots[3]')
lib/maple_tree.c:63:51: error: invalid operands to binary * (have 'const unsigned char *' and 'int')
63 | #define MAPLE_BIG_NODE_SLOTS (MAPLE_RANGE64_SLOTS * 2 + 2)
| ~~~~~~~~~~~~~~~~~~~ ^
| |
| const unsigned char *
lib/maple_tree.c:67:27: note: in expansion of macro 'MAPLE_BIG_NODE_SLOTS'
67 | struct maple_enode *slot[MAPLE_BIG_NODE_SLOTS];
| ^~~~~~~~~~~~~~~~~~~~
lib/maple_tree.c:67:22: error: size of array 'slot' has non-integer type


vim +/MAPLE_RANGE64_SLOTS +79 include/linux/maple_tree.h

40
41
42 /**
43 * maple_tree node explained
44 *
45 * Each node type has a number of slots for entries and a number of slots for
46 * pivots. In the case of dense nodes, the pivots are implied by the position
47 * and are simply the slot index + the minimum of the node.
48 *
49 * In regular B-Tree terms, pivots are called keys. The term pivot is used to
50 * indicate that the tree is specifying ranges, Pivots may appear in the
51 * subtree with an entry attached to the value where as keys are unique to a
52 * specific position of a B-tree. Pivot values are inclusive of the slot with
53 * the same index.
54 *
55 *
56 * The following illustrates the layout of a range64 nodes slots and pivots.
57 *
58 * _________________________________
59 * Slots -> | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
60 * ┬ ┬ ┬ ┬ ┬ ┬ ┬ ┬ ┬
61 * │ │ │ │ │ │ │ │ └─ Implied maximum
62 * │ │ │ │ │ │ │ └─ Pivot 6
63 * │ │ │ │ │ │ └─ Pivot 5
64 * │ │ │ │ │ └─ Pivot 4
65 * │ │ │ │ └─ Pivot 3
66 * │ │ │ └─ Pivot 2
67 * │ │ └─ Pivot 1
68 * │ └─ Pivot 0
69 * └─ Implied minimum
70 *
71 * Slot contents:
72 * Internal (non-leaf) nodes contain pointers to other nodes.
73 * Leaf nodes contain entries.
74 *
75 *
76 */
77 struct maple_range_64 {
78 struct maple_pnode *parent;
> 79 unsigned long pivot[MAPLE_RANGE64_SLOTS - 1];
80 void __rcu *slot[MAPLE_RANGE64_SLOTS];
81 };
82
83 struct maple_arange_64 {
84 struct maple_pnode *parent;
> 85 unsigned long pivot[MAPLE_ARANGE64_SLOTS - 1];
86 void __rcu *slot[MAPLE_ARANGE64_SLOTS];
87 unsigned long gap[MAPLE_ARANGE64_SLOTS];
88 unsigned char meta;
89 };
90
> 91 #define MAPLE_ALLOC_SLOTS (MAPLE_NODE_SLOTS - 1)
92 struct maple_alloc {
93 unsigned long total;
94 unsigned char node_count;
95 unsigned int request_count;
96 struct maple_alloc *slot[MAPLE_ALLOC_SLOTS];
97 };
98

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

Attachment: .config.gz
Description: application/gzip