CC: [email protected] CC: [email protected] TO: Jack Wang <[email protected]> CC: Jason Gunthorpe <[email protected]> CC: Danil Kipnis <[email protected]> CC: Bart Van Assche <[email protected]>
Hi Jack, First bad commit (maybe != root cause): tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 2d743660786ec51f5c1fefd5782bbdee7b227db0 commit: bc01885342e193e7943d86ccbd7bc3e8fee50a68 block/rnbd: include client and server modules into kernel compilation date: 11 months ago :::::: branch date: 13 hours ago :::::: commit date: 11 months ago config: powerpc-randconfig-s032-20210407 (attached as .config) compiler: powerpc64-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 # apt-get install sparse # sparse version: v0.6.3-279-g6d5d9b42-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bc01885342e193e7943d86ccbd7bc3e8fee50a68 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout bc01885342e193e7943d86ccbd7bc3e8fee50a68 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=powerpc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> sparse warnings: (new ones prefixed by >>) >> drivers/block/rnbd/rnbd-clt.c:247:20: sparse: sparse: context imbalance in >> 'rnbd_rerun_if_needed' - different lock contexts for basic block vim +/rnbd_rerun_if_needed +247 drivers/block/rnbd/rnbd-clt.c f7a7a5c228d45e Jack Wang 2020-05-11 217 f7a7a5c228d45e Jack Wang 2020-05-11 218 /** f7a7a5c228d45e Jack Wang 2020-05-11 219 * rnbd_rerun_if_needed() - rerun next queue marked as stopped f7a7a5c228d45e Jack Wang 2020-05-11 220 * @sess: Session to rerun a queue on f7a7a5c228d45e Jack Wang 2020-05-11 221 * f7a7a5c228d45e Jack Wang 2020-05-11 222 * Description: f7a7a5c228d45e Jack Wang 2020-05-11 223 * Each CPU has it's own list of HW queues, which should be rerun. f7a7a5c228d45e Jack Wang 2020-05-11 224 * Function finds such list with HW queues, takes a list lock, picks up f7a7a5c228d45e Jack Wang 2020-05-11 225 * the first HW queue out of the list and requeues it. f7a7a5c228d45e Jack Wang 2020-05-11 226 * f7a7a5c228d45e Jack Wang 2020-05-11 227 * Return: f7a7a5c228d45e Jack Wang 2020-05-11 228 * True if the queue was requeued, false otherwise. f7a7a5c228d45e Jack Wang 2020-05-11 229 * f7a7a5c228d45e Jack Wang 2020-05-11 230 * Context: f7a7a5c228d45e Jack Wang 2020-05-11 231 * Does not matter. f7a7a5c228d45e Jack Wang 2020-05-11 232 */ f7a7a5c228d45e Jack Wang 2020-05-11 233 static bool rnbd_rerun_if_needed(struct rnbd_clt_session *sess) f7a7a5c228d45e Jack Wang 2020-05-11 234 { f7a7a5c228d45e Jack Wang 2020-05-11 235 struct rnbd_queue *q = NULL; f7a7a5c228d45e Jack Wang 2020-05-11 236 struct rnbd_cpu_qlist *cpu_q; f7a7a5c228d45e Jack Wang 2020-05-11 237 unsigned long flags; f7a7a5c228d45e Jack Wang 2020-05-11 238 int *cpup; f7a7a5c228d45e Jack Wang 2020-05-11 239 f7a7a5c228d45e Jack Wang 2020-05-11 240 /* f7a7a5c228d45e Jack Wang 2020-05-11 241 * To keep fairness and not to let other queues starve we always f7a7a5c228d45e Jack Wang 2020-05-11 242 * try to wake up someone else in round-robin manner. That of course f7a7a5c228d45e Jack Wang 2020-05-11 243 * increases latency but queues always have a chance to be executed. f7a7a5c228d45e Jack Wang 2020-05-11 244 */ f7a7a5c228d45e Jack Wang 2020-05-11 245 cpup = get_cpu_ptr(sess->cpu_rr); f7a7a5c228d45e Jack Wang 2020-05-11 246 for (cpu_q = rnbd_get_cpu_qlist(sess, nxt_cpu(*cpup)); cpu_q; f7a7a5c228d45e Jack Wang 2020-05-11 @247 cpu_q = rnbd_get_cpu_qlist(sess, nxt_cpu(cpu_q->cpu))) { f7a7a5c228d45e Jack Wang 2020-05-11 248 if (!spin_trylock_irqsave(&cpu_q->requeue_lock, flags)) f7a7a5c228d45e Jack Wang 2020-05-11 249 continue; f7a7a5c228d45e Jack Wang 2020-05-11 250 if (unlikely(!test_bit(cpu_q->cpu, sess->cpu_queues_bm))) f7a7a5c228d45e Jack Wang 2020-05-11 251 goto unlock; f7a7a5c228d45e Jack Wang 2020-05-11 252 q = list_first_entry_or_null(&cpu_q->requeue_list, f7a7a5c228d45e Jack Wang 2020-05-11 253 typeof(*q), requeue_list); f7a7a5c228d45e Jack Wang 2020-05-11 254 if (WARN_ON(!q)) f7a7a5c228d45e Jack Wang 2020-05-11 255 goto clear_bit; f7a7a5c228d45e Jack Wang 2020-05-11 256 list_del_init(&q->requeue_list); f7a7a5c228d45e Jack Wang 2020-05-11 257 clear_bit_unlock(0, &q->in_list); f7a7a5c228d45e Jack Wang 2020-05-11 258 f7a7a5c228d45e Jack Wang 2020-05-11 259 if (list_empty(&cpu_q->requeue_list)) { f7a7a5c228d45e Jack Wang 2020-05-11 260 /* Clear bit if nothing is left */ f7a7a5c228d45e Jack Wang 2020-05-11 261 clear_bit: f7a7a5c228d45e Jack Wang 2020-05-11 262 clear_bit(cpu_q->cpu, sess->cpu_queues_bm); f7a7a5c228d45e Jack Wang 2020-05-11 263 } f7a7a5c228d45e Jack Wang 2020-05-11 264 unlock: f7a7a5c228d45e Jack Wang 2020-05-11 265 spin_unlock_irqrestore(&cpu_q->requeue_lock, flags); f7a7a5c228d45e Jack Wang 2020-05-11 266 f7a7a5c228d45e Jack Wang 2020-05-11 267 if (q) f7a7a5c228d45e Jack Wang 2020-05-11 268 break; f7a7a5c228d45e Jack Wang 2020-05-11 269 } f7a7a5c228d45e Jack Wang 2020-05-11 270 f7a7a5c228d45e Jack Wang 2020-05-11 271 /** f7a7a5c228d45e Jack Wang 2020-05-11 272 * Saves the CPU that is going to be requeued on the per-cpu var. Just f7a7a5c228d45e Jack Wang 2020-05-11 273 * incrementing it doesn't work because rnbd_get_cpu_qlist() will f7a7a5c228d45e Jack Wang 2020-05-11 274 * always return the first CPU with something on the queue list when the f7a7a5c228d45e Jack Wang 2020-05-11 275 * value stored on the var is greater than the last CPU with something f7a7a5c228d45e Jack Wang 2020-05-11 276 * on the list. f7a7a5c228d45e Jack Wang 2020-05-11 277 */ f7a7a5c228d45e Jack Wang 2020-05-11 278 if (cpu_q) f7a7a5c228d45e Jack Wang 2020-05-11 279 *cpup = cpu_q->cpu; f7a7a5c228d45e Jack Wang 2020-05-11 280 put_cpu_var(sess->cpu_rr); f7a7a5c228d45e Jack Wang 2020-05-11 281 f7a7a5c228d45e Jack Wang 2020-05-11 282 if (q) f7a7a5c228d45e Jack Wang 2020-05-11 283 rnbd_clt_dev_requeue(q); f7a7a5c228d45e Jack Wang 2020-05-11 284 f7a7a5c228d45e Jack Wang 2020-05-11 285 return q; f7a7a5c228d45e Jack Wang 2020-05-11 286 } f7a7a5c228d45e Jack Wang 2020-05-11 287 :::::: The code at line 247 was first introduced by commit :::::: f7a7a5c228d45efc45d6e26a199a3ea13d2f8754 block/rnbd: client: main functionality :::::: TO: Jack Wang <[email protected]> :::::: CC: Jason Gunthorpe <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
