On Tue, Jan 30, 2024 at 05:30:38PM +0800, kernel test robot wrote: > Hi Vincent, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on 29142dc92c37d3259a33aef15b03e6ee25b0d188] > > url: > https://github.com/intel-lab-lkp/linux/commits/Vincent-Donnefort/ring-buffer-Zero-ring-buffer-sub-buffers/20240129-223025 > base: 29142dc92c37d3259a33aef15b03e6ee25b0d188 > patch link: > https://lore.kernel.org/r/20240129142802.2145305-4-vdonnefort%40google.com > patch subject: [PATCH v13 3/6] tracing: Add snapshot refcount > config: arc-randconfig-002-20240130 > (https://download.01.org/0day-ci/archive/20240130/202401301740.qzzlpcyv-...@intel.com/config) > compiler: arceb-elf-gcc (GCC) 13.2.0 > reproduce (this is a W=1 build): > (https://download.01.org/0day-ci/archive/20240130/202401301740.qzzlpcyv-...@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version > of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <l...@intel.com> > | Closes: > https://lore.kernel.org/oe-kbuild-all/202401301740.qzzlpcyv-...@intel.com/ > > All errors (new ones prefixed by >>): > > kernel/trace/trace.c: In function 'tracing_set_tracer': > kernel/trace/trace.c:6644:17: error: implicit declaration of function > 'tracing_disarm_snapshot_locked'; did you mean 'tracing_disarm_snapshot'? > [-Werror=implicit-function-declaration] > 6644 | tracing_disarm_snapshot_locked(tr); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | tracing_disarm_snapshot > >> kernel/trace/trace.c:6648:23: error: implicit declaration of function > >> 'tracing_arm_snapshot_locked'; did you mean 'tracing_arm_snapshot'? > >> [-Werror=implicit-function-declaration] > 6648 | ret = tracing_arm_snapshot_locked(tr); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > | tracing_arm_snapshot > cc1: some warnings being treated as errors
Right, two tracers (hwlat and osnoise) select _only_ MAX_TRACE and not TRACER_SNAPSHOT. However, AFAICT, they will not call any of the swapping functions (they don't set use_max_tr). So I suppose arm/disarm can be ommited in that case. > > > vim +6648 kernel/trace/trace.c > > 6560 > 6561 int tracing_set_tracer(struct trace_array *tr, const char *buf) > 6562 { > 6563 struct tracer *t; > 6564 #ifdef CONFIG_TRACER_MAX_TRACE > 6565 bool had_max_tr; > 6566 #endif > 6567 int ret = 0; > 6568 > 6569 mutex_lock(&trace_types_lock); > 6570 > 6571 if (!tr->ring_buffer_expanded) { > 6572 ret = __tracing_resize_ring_buffer(tr, > trace_buf_size, > 6573 > RING_BUFFER_ALL_CPUS); > 6574 if (ret < 0) > 6575 goto out; > 6576 ret = 0; > 6577 } > 6578 > 6579 for (t = trace_types; t; t = t->next) { > 6580 if (strcmp(t->name, buf) == 0) > 6581 break; > 6582 } > 6583 if (!t) { > 6584 ret = -EINVAL; > 6585 goto out; > 6586 } > 6587 if (t == tr->current_trace) > 6588 goto out; > 6589 > 6590 #ifdef CONFIG_TRACER_SNAPSHOT > 6591 if (t->use_max_tr) { > 6592 local_irq_disable(); > 6593 arch_spin_lock(&tr->max_lock); > 6594 if (tr->cond_snapshot) > 6595 ret = -EBUSY; > 6596 arch_spin_unlock(&tr->max_lock); > 6597 local_irq_enable(); > 6598 if (ret) > 6599 goto out; > 6600 } > 6601 #endif > 6602 /* Some tracers won't work on kernel command line */ > 6603 if (system_state < SYSTEM_RUNNING && t->noboot) { > 6604 pr_warn("Tracer '%s' is not allowed on command > line, ignored\n", > 6605 t->name); > 6606 goto out; > 6607 } > 6608 > 6609 /* Some tracers are only allowed for the top level > buffer */ > 6610 if (!trace_ok_for_array(t, tr)) { > 6611 ret = -EINVAL; > 6612 goto out; > 6613 } > 6614 > 6615 /* If trace pipe files are being read, we can't change > the tracer */ > 6616 if (tr->trace_ref) { > 6617 ret = -EBUSY; > 6618 goto out; > 6619 } > 6620 > 6621 trace_branch_disable(); > 6622 > 6623 tr->current_trace->enabled--; > 6624 > 6625 if (tr->current_trace->reset) > 6626 tr->current_trace->reset(tr); > 6627 > 6628 #ifdef CONFIG_TRACER_MAX_TRACE > 6629 had_max_tr = tr->current_trace->use_max_tr; > 6630 > 6631 /* Current trace needs to be nop_trace before > synchronize_rcu */ > 6632 tr->current_trace = &nop_trace; > 6633 > 6634 if (had_max_tr && !t->use_max_tr) { > 6635 /* > 6636 * We need to make sure that the update_max_tr > sees that > 6637 * current_trace changed to nop_trace to keep > it from > 6638 * swapping the buffers after we resize it. > 6639 * The update_max_tr is called from interrupts > disabled > 6640 * so a synchronized_sched() is sufficient. > 6641 */ > 6642 synchronize_rcu(); > 6643 free_snapshot(tr); > 6644 tracing_disarm_snapshot_locked(tr); > 6645 } > 6646 > 6647 if (t->use_max_tr) { > > 6648 ret = tracing_arm_snapshot_locked(tr); > 6649 if (ret) > 6650 goto out; > 6651 } > 6652 #else > 6653 tr->current_trace = &nop_trace; > 6654 #endif > 6655 > 6656 if (t->init) { > 6657 ret = tracer_init(t, tr); > 6658 if (ret) { > 6659 #ifdef CONFIG_TRACER_MAX_TRACE > 6660 if (t->use_max_tr) > 6661 > tracing_disarm_snapshot_locked(tr); > 6662 #endif > 6663 goto out; > 6664 } > 6665 } > 6666 > 6667 tr->current_trace = t; > 6668 tr->current_trace->enabled++; > 6669 trace_branch_enable(tr); > 6670 out: > 6671 mutex_unlock(&trace_types_lock); > 6672 > 6673 return ret; > 6674 } > 6675 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki