tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 9f24705effef8c3b9eca00d70594ef7e0364a6da commit: 3b4f9530977112ddf177282e396d0715dc60b9a3 [3800/3829] fix up for merge involving nft_pipapo_lookup() config: x86_64-randconfig-a001-20210520 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=3b4f9530977112ddf177282e396d0715dc60b9a3 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 3b4f9530977112ddf177282e396d0715dc60b9a3 # 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 All errors (new ones prefixed by >>): net/netfilter/nft_set_pipapo_avx2.c: In function 'nft_pipapo_avx2_lookup': >> net/netfilter/nft_set_pipapo_avx2.c:1135:10: error: implicit declaration of function 'nft_pipapo_lookup'; did you mean 'nft_pipapo_avx2_lookup'? [-Werror=implicit-function-declaration] 1135 | return nft_pipapo_lookup(net, set, key, ext); | ^~~~~~~~~~~~~~~~~ | nft_pipapo_avx2_lookup cc1: some warnings being treated as errors vim +1135 net/netfilter/nft_set_pipapo_avx2.c 7400b063969bdca Stefano Brivio 2020-03-07 1107 7400b063969bdca Stefano Brivio 2020-03-07 1108 /** 7400b063969bdca Stefano Brivio 2020-03-07 1109 * nft_pipapo_avx2_lookup() - Lookup function for AVX2 implementation 7400b063969bdca Stefano Brivio 2020-03-07 1110 * @net: Network namespace 7400b063969bdca Stefano Brivio 2020-03-07 1111 * @set: nftables API set representation 7400b063969bdca Stefano Brivio 2020-03-07 1112 * @elem: nftables API element representation containing key data 7400b063969bdca Stefano Brivio 2020-03-07 1113 * @ext: nftables API extension pointer, filled with matching reference 7400b063969bdca Stefano Brivio 2020-03-07 1114 * 7400b063969bdca Stefano Brivio 2020-03-07 1115 * For more details, see DOC: Theory of Operation in nft_set_pipapo.c. 7400b063969bdca Stefano Brivio 2020-03-07 1116 * 7400b063969bdca Stefano Brivio 2020-03-07 1117 * This implementation exploits the repetitive characteristic of the algorithm 7400b063969bdca Stefano Brivio 2020-03-07 1118 * to provide a fast, vectorised version using the AVX2 SIMD instruction set. 7400b063969bdca Stefano Brivio 2020-03-07 1119 * 7400b063969bdca Stefano Brivio 2020-03-07 1120 * Return: true on match, false otherwise. 7400b063969bdca Stefano Brivio 2020-03-07 1121 */ 7400b063969bdca Stefano Brivio 2020-03-07 1122 bool nft_pipapo_avx2_lookup(const struct net *net, const struct nft_set *set, 7400b063969bdca Stefano Brivio 2020-03-07 1123 const u32 *key, const struct nft_set_ext **ext) 7400b063969bdca Stefano Brivio 2020-03-07 1124 { 7400b063969bdca Stefano Brivio 2020-03-07 1125 struct nft_pipapo *priv = nft_set_priv(set); 7400b063969bdca Stefano Brivio 2020-03-07 1126 unsigned long *res, *fill, *scratch; 7400b063969bdca Stefano Brivio 2020-03-07 1127 u8 genmask = nft_genmask_cur(net); 7400b063969bdca Stefano Brivio 2020-03-07 1128 const u8 *rp = (const u8 *)key; 7400b063969bdca Stefano Brivio 2020-03-07 1129 struct nft_pipapo_match *m; 7400b063969bdca Stefano Brivio 2020-03-07 1130 struct nft_pipapo_field *f; 7400b063969bdca Stefano Brivio 2020-03-07 1131 bool map_index; 7400b063969bdca Stefano Brivio 2020-03-07 1132 int i, ret = 0; 7400b063969bdca Stefano Brivio 2020-03-07 1133 f0b3d338064e1fe Stefano Brivio 2021-05-10 1134 if (unlikely(!irq_fpu_usable())) f0b3d338064e1fe Stefano Brivio 2021-05-10 @1135 return nft_pipapo_lookup(net, set, key, ext); f0b3d338064e1fe Stefano Brivio 2021-05-10 1136 7400b063969bdca Stefano Brivio 2020-03-07 1137 m = rcu_dereference(priv->match); 7400b063969bdca Stefano Brivio 2020-03-07 1138 0dc0f088e7314e0 Stefano Brivio 2021-05-10 1139 /* This also protects access to all data related to scratch maps. 0dc0f088e7314e0 Stefano Brivio 2021-05-10 1140 * 0dc0f088e7314e0 Stefano Brivio 2021-05-10 1141 * Note that we don't need a valid MXCSR state for any of the 0dc0f088e7314e0 Stefano Brivio 2021-05-10 1142 * operations we use here, so pass 0 as mask and spare a LDMXCSR 0dc0f088e7314e0 Stefano Brivio 2021-05-10 1143 * instruction. 0dc0f088e7314e0 Stefano Brivio 2021-05-10 1144 */ 0dc0f088e7314e0 Stefano Brivio 2021-05-10 1145 kernel_fpu_begin_mask(0); 7400b063969bdca Stefano Brivio 2020-03-07 1146 7400b063969bdca Stefano Brivio 2020-03-07 1147 scratch = *raw_cpu_ptr(m->scratch_aligned); 7400b063969bdca Stefano Brivio 2020-03-07 1148 if (unlikely(!scratch)) { 7400b063969bdca Stefano Brivio 2020-03-07 1149 kernel_fpu_end(); 7400b063969bdca Stefano Brivio 2020-03-07 1150 return false; 7400b063969bdca Stefano Brivio 2020-03-07 1151 } 7400b063969bdca Stefano Brivio 2020-03-07 1152 map_index = raw_cpu_read(nft_pipapo_avx2_scratch_index); 7400b063969bdca Stefano Brivio 2020-03-07 1153 7400b063969bdca Stefano Brivio 2020-03-07 1154 res = scratch + (map_index ? m->bsize_max : 0); 7400b063969bdca Stefano Brivio 2020-03-07 1155 fill = scratch + (map_index ? 0 : m->bsize_max); 7400b063969bdca Stefano Brivio 2020-03-07 1156 7400b063969bdca Stefano Brivio 2020-03-07 1157 /* Starting map doesn't need to be set for this implementation */ 7400b063969bdca Stefano Brivio 2020-03-07 1158 7400b063969bdca Stefano Brivio 2020-03-07 1159 nft_pipapo_avx2_prepare(); 7400b063969bdca Stefano Brivio 2020-03-07 1160 7400b063969bdca Stefano Brivio 2020-03-07 1161 next_match: 7400b063969bdca Stefano Brivio 2020-03-07 1162 nft_pipapo_for_each_field(f, i, m) { 7400b063969bdca Stefano Brivio 2020-03-07 1163 bool last = i == m->field_count - 1, first = !i; 7400b063969bdca Stefano Brivio 2020-03-07 1164 :::::: The code at line 1135 was first introduced by commit :::::: f0b3d338064e1fe7531f0d2977e35f3b334abfb4 netfilter: nft_set_pipapo_avx2: Add irq_fpu_usable() check, fallback to non-AVX2 version :::::: TO: Stefano Brivio :::::: CC: Pablo Neira Ayuso --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org