All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android14-kiwi-6.1 166/166] kernel/sched/pelt.c:180:1: warning: no previous prototype for function '___update_load_sum'
@ 2026-07-02 11:49 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-02 11:49 UTC (permalink / raw)
  To: cros-kernel-buildreports; +Cc: oe-kbuild-all

tree:   https://android.googlesource.com/kernel/common android14-kiwi-6.1
head:   2a9e8b82544e3c1e2678c2c07bef3d3706156ee4
commit: eb9686932be35a47b6d621cc033a861b51e42741 [166/166] ANDROID: sched: Export symbols needed for vendor hooks
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20260702/202607021907.SLt4sGGE-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 6cc609bb250b21b47fc7d394b4019101e9983597)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260702/202607021907.SLt4sGGE-lkp@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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202607021907.SLt4sGGE-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from <built-in>:3:
   In file included from include/linux/compiler_types.h:94:
   include/linux/compiler-clang.h:24:9: warning: '__SANITIZE_ADDRESS__' macro redefined [-Wmacro-redefined]
      24 | #define __SANITIZE_ADDRESS__
         |         ^
   <built-in>:368:9: note: previous definition is here
     368 | #define __SANITIZE_ADDRESS__ 1
         |         ^
   In file included from kernel/sched/build_policy.c:49:
>> kernel/sched/pelt.c:180:1: warning: no previous prototype for function '___update_load_sum' [-Wmissing-prototypes]
     180 | ___update_load_sum(u64 now, struct sched_avg *sa,
         | ^
   kernel/sched/pelt.c:179:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     179 | int
         | ^
         | static 
>> kernel/sched/pelt.c:258:1: warning: no previous prototype for function '___update_load_avg' [-Wmissing-prototypes]
     258 | ___update_load_avg(struct sched_avg *sa, unsigned long load)
         | ^
   kernel/sched/pelt.c:257:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     257 | void
         | ^
         | static 
   kernel/sched/pelt.c:480:5: warning: no previous prototype for function 'sched_pelt_multiplier' [-Wmissing-prototypes]
     480 | int sched_pelt_multiplier(struct ctl_table *table, int write, void *buffer,
         |     ^
   kernel/sched/pelt.c:480:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     480 | int sched_pelt_multiplier(struct ctl_table *table, int write, void *buffer,
         | ^
         | static 
   4 warnings generated.


vim +/___update_load_sum +180 kernel/sched/pelt.c

c079629862b20c Vincent Guittot 2018-06-28  150  
c079629862b20c Vincent Guittot 2018-06-28  151  /*
c079629862b20c Vincent Guittot 2018-06-28  152   * We can represent the historical contribution to runnable average as the
c079629862b20c Vincent Guittot 2018-06-28  153   * coefficients of a geometric series.  To do this we sub-divide our runnable
c079629862b20c Vincent Guittot 2018-06-28  154   * history into segments of approximately 1ms (1024us); label the segment that
c079629862b20c Vincent Guittot 2018-06-28  155   * occurred N-ms ago p_N, with p_0 corresponding to the current period, e.g.
c079629862b20c Vincent Guittot 2018-06-28  156   *
c079629862b20c Vincent Guittot 2018-06-28  157   * [<- 1024us ->|<- 1024us ->|<- 1024us ->| ...
c079629862b20c Vincent Guittot 2018-06-28  158   *      p0            p1           p2
c079629862b20c Vincent Guittot 2018-06-28  159   *     (now)       (~1ms ago)  (~2ms ago)
c079629862b20c Vincent Guittot 2018-06-28  160   *
c079629862b20c Vincent Guittot 2018-06-28  161   * Let u_i denote the fraction of p_i that the entity was runnable.
c079629862b20c Vincent Guittot 2018-06-28  162   *
c079629862b20c Vincent Guittot 2018-06-28  163   * We then designate the fractions u_i as our co-efficients, yielding the
c079629862b20c Vincent Guittot 2018-06-28  164   * following representation of historical load:
c079629862b20c Vincent Guittot 2018-06-28  165   *   u_0 + u_1*y + u_2*y^2 + u_3*y^3 + ...
c079629862b20c Vincent Guittot 2018-06-28  166   *
c079629862b20c Vincent Guittot 2018-06-28  167   * We choose y based on the with of a reasonably scheduling period, fixing:
c079629862b20c Vincent Guittot 2018-06-28  168   *   y^32 = 0.5
c079629862b20c Vincent Guittot 2018-06-28  169   *
c079629862b20c Vincent Guittot 2018-06-28  170   * This means that the contribution to load ~32ms ago (u_32) will be weighted
c079629862b20c Vincent Guittot 2018-06-28  171   * approximately half as much as the contribution to load within the last ms
c079629862b20c Vincent Guittot 2018-06-28  172   * (u_0).
c079629862b20c Vincent Guittot 2018-06-28  173   *
c079629862b20c Vincent Guittot 2018-06-28  174   * When a period "rolls over" and we have new u_0`, multiplying the previous
c079629862b20c Vincent Guittot 2018-06-28  175   * sum again by y is sufficient to update:
c079629862b20c Vincent Guittot 2018-06-28  176   *   load_avg = u_0` + y*(u_0 + u_1*y + u_2*y^2 + ... )
c079629862b20c Vincent Guittot 2018-06-28  177   *            = u_0 + u_1*y + u_2*y^2 + ... [re-labeling u_i --> u_{i+1}]
c079629862b20c Vincent Guittot 2018-06-28  178   */
eb9686932be35a Rick Yiu        2023-08-28  179  int
23127296889fe8 Vincent Guittot 2019-01-23 @180  ___update_load_sum(u64 now, struct sched_avg *sa,
9f68395333ad7f Vincent Guittot 2020-02-24  181  		  unsigned long load, unsigned long runnable, int running)
c079629862b20c Vincent Guittot 2018-06-28  182  {
c079629862b20c Vincent Guittot 2018-06-28  183  	u64 delta;
c079629862b20c Vincent Guittot 2018-06-28  184  
c079629862b20c Vincent Guittot 2018-06-28  185  	delta = now - sa->last_update_time;
c079629862b20c Vincent Guittot 2018-06-28  186  	/*
c079629862b20c Vincent Guittot 2018-06-28  187  	 * This should only happen when time goes backwards, which it
c079629862b20c Vincent Guittot 2018-06-28  188  	 * unfortunately does during sched clock init when we swap over to TSC.
c079629862b20c Vincent Guittot 2018-06-28  189  	 */
c079629862b20c Vincent Guittot 2018-06-28  190  	if ((s64)delta < 0) {
c079629862b20c Vincent Guittot 2018-06-28  191  		sa->last_update_time = now;
c079629862b20c Vincent Guittot 2018-06-28  192  		return 0;
c079629862b20c Vincent Guittot 2018-06-28  193  	}
c079629862b20c Vincent Guittot 2018-06-28  194  
c079629862b20c Vincent Guittot 2018-06-28  195  	/*
c079629862b20c Vincent Guittot 2018-06-28  196  	 * Use 1024ns as the unit of measurement since it's a reasonable
c079629862b20c Vincent Guittot 2018-06-28  197  	 * approximation of 1us and fast to compute.
c079629862b20c Vincent Guittot 2018-06-28  198  	 */
c079629862b20c Vincent Guittot 2018-06-28  199  	delta >>= 10;
c079629862b20c Vincent Guittot 2018-06-28  200  	if (!delta)
c079629862b20c Vincent Guittot 2018-06-28  201  		return 0;
c079629862b20c Vincent Guittot 2018-06-28  202  
c079629862b20c Vincent Guittot 2018-06-28  203  	sa->last_update_time += delta << 10;
c079629862b20c Vincent Guittot 2018-06-28  204  
c079629862b20c Vincent Guittot 2018-06-28  205  	/*
c079629862b20c Vincent Guittot 2018-06-28  206  	 * running is a subset of runnable (weight) so running can't be set if
c079629862b20c Vincent Guittot 2018-06-28  207  	 * runnable is clear. But there are some corner cases where the current
c079629862b20c Vincent Guittot 2018-06-28  208  	 * se has been already dequeued but cfs_rq->curr still points to it.
c079629862b20c Vincent Guittot 2018-06-28  209  	 * This means that weight will be 0 but not running for a sched_entity
c079629862b20c Vincent Guittot 2018-06-28  210  	 * but also for a cfs_rq if the latter becomes idle. As an example,
c079629862b20c Vincent Guittot 2018-06-28  211  	 * this happens during idle_balance() which calls
d040e0734fb3de Peng Wang       2019-12-13  212  	 * update_blocked_averages().
d040e0734fb3de Peng Wang       2019-12-13  213  	 *
d040e0734fb3de Peng Wang       2019-12-13  214  	 * Also see the comment in accumulate_sum().
c079629862b20c Vincent Guittot 2018-06-28  215  	 */
c079629862b20c Vincent Guittot 2018-06-28  216  	if (!load)
9f68395333ad7f Vincent Guittot 2020-02-24  217  		runnable = running = 0;
c079629862b20c Vincent Guittot 2018-06-28  218  
c079629862b20c Vincent Guittot 2018-06-28  219  	/*
c079629862b20c Vincent Guittot 2018-06-28  220  	 * Now we know we crossed measurement unit boundaries. The *_avg
c079629862b20c Vincent Guittot 2018-06-28  221  	 * accrues by two steps:
c079629862b20c Vincent Guittot 2018-06-28  222  	 *
c079629862b20c Vincent Guittot 2018-06-28  223  	 * Step 1: accumulate *_sum since last_update_time. If we haven't
c079629862b20c Vincent Guittot 2018-06-28  224  	 * crossed period boundaries, finish.
c079629862b20c Vincent Guittot 2018-06-28  225  	 */
9f68395333ad7f Vincent Guittot 2020-02-24  226  	if (!accumulate_sum(delta, sa, load, runnable, running))
c079629862b20c Vincent Guittot 2018-06-28  227  		return 0;
c079629862b20c Vincent Guittot 2018-06-28  228  
c079629862b20c Vincent Guittot 2018-06-28  229  	return 1;
c079629862b20c Vincent Guittot 2018-06-28  230  }
eb9686932be35a Rick Yiu        2023-08-28  231  EXPORT_SYMBOL_GPL(___update_load_sum);
c079629862b20c Vincent Guittot 2018-06-28  232  
95d685935a2edf Vincent Guittot 2020-05-06  233  /*
95d685935a2edf Vincent Guittot 2020-05-06  234   * When syncing *_avg with *_sum, we must take into account the current
95d685935a2edf Vincent Guittot 2020-05-06  235   * position in the PELT segment otherwise the remaining part of the segment
95d685935a2edf Vincent Guittot 2020-05-06  236   * will be considered as idle time whereas it's not yet elapsed and this will
95d685935a2edf Vincent Guittot 2020-05-06  237   * generate unwanted oscillation in the range [1002..1024[.
95d685935a2edf Vincent Guittot 2020-05-06  238   *
95d685935a2edf Vincent Guittot 2020-05-06  239   * The max value of *_sum varies with the position in the time segment and is
95d685935a2edf Vincent Guittot 2020-05-06  240   * equals to :
95d685935a2edf Vincent Guittot 2020-05-06  241   *
95d685935a2edf Vincent Guittot 2020-05-06  242   *   LOAD_AVG_MAX*y + sa->period_contrib
95d685935a2edf Vincent Guittot 2020-05-06  243   *
95d685935a2edf Vincent Guittot 2020-05-06  244   * which can be simplified into:
95d685935a2edf Vincent Guittot 2020-05-06  245   *
95d685935a2edf Vincent Guittot 2020-05-06  246   *   LOAD_AVG_MAX - 1024 + sa->period_contrib
95d685935a2edf Vincent Guittot 2020-05-06  247   *
95d685935a2edf Vincent Guittot 2020-05-06  248   * because LOAD_AVG_MAX*y == LOAD_AVG_MAX-1024
95d685935a2edf Vincent Guittot 2020-05-06  249   *
95d685935a2edf Vincent Guittot 2020-05-06  250   * The same care must be taken when a sched entity is added, updated or
95d685935a2edf Vincent Guittot 2020-05-06  251   * removed from a cfs_rq and we need to update sched_avg. Scheduler entities
95d685935a2edf Vincent Guittot 2020-05-06  252   * and the cfs rq, to which they are attached, have the same position in the
95d685935a2edf Vincent Guittot 2020-05-06  253   * time segment because they use the same clock. This means that we can use
95d685935a2edf Vincent Guittot 2020-05-06  254   * the period_contrib of cfs_rq when updating the sched_avg of a sched_entity
95d685935a2edf Vincent Guittot 2020-05-06  255   * if it's more convenient.
95d685935a2edf Vincent Guittot 2020-05-06  256   */
eb9686932be35a Rick Yiu        2023-08-28  257  void
0dacee1bfa70e1 Vincent Guittot 2020-02-24 @258  ___update_load_avg(struct sched_avg *sa, unsigned long load)
c079629862b20c Vincent Guittot 2018-06-28  259  {
87e867b4269f29 Vincent Guittot 2020-06-12  260  	u32 divider = get_pelt_divider(sa);
c079629862b20c Vincent Guittot 2018-06-28  261  
c079629862b20c Vincent Guittot 2018-06-28  262  	/*
c079629862b20c Vincent Guittot 2018-06-28  263  	 * Step 2: update *_avg.
c079629862b20c Vincent Guittot 2018-06-28  264  	 */
c079629862b20c Vincent Guittot 2018-06-28  265  	sa->load_avg = div_u64(load * sa->load_sum, divider);
9f68395333ad7f Vincent Guittot 2020-02-24  266  	sa->runnable_avg = div_u64(sa->runnable_sum, divider);
523e979d316481 Vincent Guittot 2018-06-28  267  	WRITE_ONCE(sa->util_avg, sa->util_sum / divider);
c079629862b20c Vincent Guittot 2018-06-28  268  }
eb9686932be35a Rick Yiu        2023-08-28  269  EXPORT_SYMBOL_GPL(___update_load_avg);
c079629862b20c Vincent Guittot 2018-06-28  270  

:::::: The code at line 180 was first introduced by commit
:::::: 23127296889fe84b0762b191b5d041e8ba6f2599 sched/fair: Update scale invariance of PELT

:::::: TO: Vincent Guittot <vincent.guittot@linaro.org>
:::::: CC: Ingo Molnar <mingo@kernel.org>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-02 11:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-02 11:49 [android-common:android14-kiwi-6.1 166/166] kernel/sched/pelt.c:180:1: warning: no previous prototype for function '___update_load_sum' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.