Messages in this thread | | | Date | Thu, 1 Feb 2018 15:43:58 +0800 | From | kbuild test robot <> | Subject | [rcu:rcu/dev 48/48] kernel/rcu/tree_exp.h:407:3: note: in expansion of macro 'trace_printk' |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/dev head: 32860a6da7c75039afea229ba396aeac3b708d6b commit: 32860a6da7c75039afea229ba396aeac3b708d6b [48/48] EXP rcu: Add trace_printk()s to probe expedited CPU selection config: sparc64-allyesconfig (attached as .config) compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout 32860a6da7c75039afea229ba396aeac3b708d6b # save the attached .config to linux build tree make.cross ARCH=sparc64
All warnings (new ones prefixed by >>):
In file included from kernel/rcu/tree.c:31:0: kernel/rcu/tree_exp.h: In function 'sync_rcu_exp_select_cpus': kernel/rcu/tree_exp.h:407:16: warning: format '%ld' expects argument of type 'long int', but argument 6 has type 'int' [-Wformat=] trace_printk("%s rnp %d:%d first pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!rnp->exp_tasks); ^ ~~~~~~~~ include/linux/kernel.h:634:33: note: in definition of macro '__trace_printk_check_format' ____trace_printk_check_format(fmt, ##args); \ ^~~ >> include/linux/kernel.h:671:3: note: in expansion of macro 'do_trace_printk' do_trace_printk(fmt, ##__VA_ARGS__); \ ^~~~~~~~~~~~~~~ >> kernel/rcu/tree_exp.h:407:3: note: in expansion of macro 'trace_printk' trace_printk("%s rnp %d:%d first pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!rnp->exp_tasks); ^~~~~~~~~~~~ kernel/rcu/tree_exp.h:407:16: warning: format '%ld' expects argument of type 'long int', but argument 7 has type 'int' [-Wformat=] trace_printk("%s rnp %d:%d first pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!rnp->exp_tasks); ^ ~~~~~~~~ include/linux/kernel.h:687:29: note: in definition of macro 'do_trace_printk' __trace_printk(_THIS_IP_, fmt, ##args); \ ^~~ >> kernel/rcu/tree_exp.h:407:3: note: in expansion of macro 'trace_printk' trace_printk("%s rnp %d:%d first pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!rnp->exp_tasks); ^~~~~~~~~~~~ kernel/rcu/tree_exp.h:446:16: warning: format '%ld' expects argument of type 'long int', but argument 6 has type 'int' [-Wformat=] trace_printk("%s rnp %d:%d second pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!READ_ONCE(rnp->exp_tasks)); ^ include/linux/kernel.h:634:33: note: in definition of macro '__trace_printk_check_format' ____trace_printk_check_format(fmt, ##args); \ ^~~ >> include/linux/kernel.h:671:3: note: in expansion of macro 'do_trace_printk' do_trace_printk(fmt, ##__VA_ARGS__); \ ^~~~~~~~~~~~~~~ kernel/rcu/tree_exp.h:446:3: note: in expansion of macro 'trace_printk' trace_printk("%s rnp %d:%d second pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!READ_ONCE(rnp->exp_tasks)); ^~~~~~~~~~~~ kernel/rcu/tree_exp.h:446:16: warning: format '%ld' expects argument of type 'long int', but argument 7 has type 'int' [-Wformat=] trace_printk("%s rnp %d:%d second pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!READ_ONCE(rnp->exp_tasks)); ^ include/linux/kernel.h:687:29: note: in definition of macro 'do_trace_printk' __trace_printk(_THIS_IP_, fmt, ##args); \ ^~~ kernel/rcu/tree_exp.h:446:3: note: in expansion of macro 'trace_printk' trace_printk("%s rnp %d:%d second pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!READ_ONCE(rnp->exp_tasks)); ^~~~~~~~~~~~
vim +/trace_printk +407 kernel/rcu/tree_exp.h
363 364 /* 365 * Select the nodes that the upcoming expedited grace period needs 366 * to wait for. 367 */ 368 static void sync_rcu_exp_select_cpus(struct rcu_state *rsp, 369 smp_call_func_t func) 370 { 371 int cpu; 372 unsigned long flags; 373 unsigned long mask_ofl_test; 374 unsigned long mask_ofl_ipi; 375 int ret; 376 struct rcu_node *rnp; 377 378 trace_rcu_exp_grace_period(rsp->name, rcu_exp_gp_seq_endval(rsp), TPS("reset")); 379 sync_exp_reset_tree(rsp); 380 trace_rcu_exp_grace_period(rsp->name, rcu_exp_gp_seq_endval(rsp), TPS("select")); 381 rcu_for_each_leaf_node(rsp, rnp) { 382 raw_spin_lock_irqsave_rcu_node(rnp, flags); 383 384 /* Each pass checks a CPU for identity, offline, and idle. */ 385 mask_ofl_test = 0; 386 for_each_leaf_node_possible_cpu(rnp, cpu) { 387 struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu); 388 389 rdp->exp_dynticks_snap = 390 rcu_dynticks_snap(rdp->dynticks); 391 if (raw_smp_processor_id() == cpu || 392 rcu_dynticks_in_eqs(rdp->exp_dynticks_snap) || 393 !(rnp->qsmaskinitnext & rdp->grpmask)) 394 mask_ofl_test |= rdp->grpmask; 395 trace_printk("%s rnp %d:%d first pass CPU %d\n", __func__, rnp->grplo, rnp->grphi, cpu); 396 } 397 mask_ofl_ipi = rnp->expmask & ~mask_ofl_test; 398 399 /* 400 * Need to wait for any blocked tasks as well. Note that 401 * additional blocking tasks will also block the expedited 402 * GP until such time as the ->expmask bits are cleared. 403 */ 404 if (rcu_preempt_has_tasks(rnp)) 405 rnp->exp_tasks = rnp->blkd_tasks.next; 406 raw_spin_unlock_irqrestore_rcu_node(rnp, flags); > 407 trace_printk("%s rnp %d:%d first pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!rnp->exp_tasks); 408 409 /* IPI the remaining CPUs for expedited quiescent state. */ 410 for_each_leaf_node_possible_cpu(rnp, cpu) { 411 unsigned long mask = leaf_node_cpu_bit(rnp, cpu); 412 struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu); 413 414 if (!(mask_ofl_ipi & mask)) 415 continue; 416 retry_ipi: 417 if (rcu_dynticks_in_eqs_since(rdp->dynticks, 418 rdp->exp_dynticks_snap)) { 419 mask_ofl_test |= mask; 420 continue; 421 } 422 ret = smp_call_function_single(cpu, func, rsp, 0); 423 if (!ret) { 424 mask_ofl_ipi &= ~mask; 425 continue; 426 } 427 /* Failed, raced with CPU hotplug operation. */ 428 raw_spin_lock_irqsave_rcu_node(rnp, flags); 429 if ((rnp->qsmaskinitnext & mask) && 430 (rnp->expmask & mask)) { 431 /* Online, so delay for a bit and try again. */ 432 raw_spin_unlock_irqrestore_rcu_node(rnp, flags); 433 trace_rcu_exp_grace_period(rsp->name, rcu_exp_gp_seq_endval(rsp), TPS("selectofl")); 434 schedule_timeout_uninterruptible(1); 435 goto retry_ipi; 436 } 437 /* CPU really is offline, so we can ignore it. */ 438 if (!(rnp->expmask & mask)) 439 mask_ofl_ipi &= ~mask; 440 raw_spin_unlock_irqrestore_rcu_node(rnp, flags); 441 } 442 /* Report quiescent states for those that went offline. */ 443 mask_ofl_test |= mask_ofl_ipi; 444 if (mask_ofl_test) 445 rcu_report_exp_cpu_mult(rsp, rnp, mask_ofl_test, false); 446 trace_printk("%s rnp %d:%d second pass mask %#lx tasks %ld\n", __func__, rnp->grplo, rnp->grphi, mask_ofl_ipi, !!READ_ONCE(rnp->exp_tasks)); 447 } 448 } 449
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [unhandled content-type:application/gzip] | |