lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202006231934.QhH4cS4i%lkp@intel.com>
Date:   Tue, 23 Jun 2020 19:15:39 +0800
From:   kernel test robot <lkp@...el.com>
To:     Vincent Guittot <vincent.guittot@...aro.org>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        Ingo Molnar <mingo@...nel.org>
Subject: kernel//sched/fair.c:8429:20: note: in expansion of macro 'max_t'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   dd0d718152e4c65b173070d48ea9dfc06894c3e5
commit: 0b0695f2b34a4afa3f6e9aa1ff0e5336d8dad912 sched/fair: Rework load_balance()
date:   8 months ago
config: x86_64-randconfig-r011-20200623 (attached as .config)
compiler: gcc-5 (Ubuntu 5.5.0-12ubuntu1) 5.5.0 20171010
reproduce (this is a W=1 build):
        git checkout 0b0695f2b34a4afa3f6e9aa1ff0e5336d8dad912
        # 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 <lkp@...el.com>

All warnings (new ones prefixed by >>):

   In file included from arch/x86/include/asm/percpu.h:45:0,
                    from arch/x86/include/asm/current.h:6,
                    from include/linux/sched.h:12,
                    from kernel//sched/sched.h:5,
                    from kernel//sched/fair.c:23:
   kernel//sched/fair.c: In function 'calculate_imbalance':
   include/linux/kernel.h:942:63: warning: comparison is always false due to limited range of data type [-Wtype-limits]
    #define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >)
                                                                  ^
   include/linux/kernel.h:858:30: note: in definition of macro '__cmp'
    #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                                 ^
   include/linux/kernel.h:942:27: note: in expansion of macro '__careful_cmp'
    #define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >)
                              ^
>> kernel//sched/fair.c:8429:20: note: in expansion of macro 'max_t'
      env->imbalance = max_t(long, 0, (local->idle_cpus -
                       ^

vim +/max_t +8429 kernel//sched/fair.c

  8336	
  8337	/**
  8338	 * calculate_imbalance - Calculate the amount of imbalance present within the
  8339	 *			 groups of a given sched_domain during load balance.
  8340	 * @env: load balance environment
  8341	 * @sds: statistics of the sched_domain whose imbalance is to be calculated.
  8342	 */
  8343	static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *sds)
  8344	{
  8345		struct sg_lb_stats *local, *busiest;
  8346	
  8347		local = &sds->local_stat;
  8348		busiest = &sds->busiest_stat;
  8349	
  8350		if (busiest->group_type == group_misfit_task) {
  8351			/* Set imbalance to allow misfit tasks to be balanced. */
  8352			env->migration_type = migrate_misfit;
  8353			env->imbalance = busiest->group_misfit_task_load;
  8354			return;
  8355		}
  8356	
  8357		if (busiest->group_type == group_asym_packing) {
  8358			/*
  8359			 * In case of asym capacity, we will try to migrate all load to
  8360			 * the preferred CPU.
  8361			 */
  8362			env->migration_type = migrate_task;
  8363			env->imbalance = busiest->sum_h_nr_running;
  8364			return;
  8365		}
  8366	
  8367		if (busiest->group_type == group_imbalanced) {
  8368			/*
  8369			 * In the group_imb case we cannot rely on group-wide averages
  8370			 * to ensure CPU-load equilibrium, try to move any task to fix
  8371			 * the imbalance. The next load balance will take care of
  8372			 * balancing back the system.
  8373			 */
  8374			env->migration_type = migrate_task;
  8375			env->imbalance = 1;
  8376			return;
  8377		}
  8378	
  8379		/*
  8380		 * Try to use spare capacity of local group without overloading it or
  8381		 * emptying busiest
  8382		 */
  8383		if (local->group_type == group_has_spare) {
  8384			if (busiest->group_type > group_fully_busy) {
  8385				/*
  8386				 * If busiest is overloaded, try to fill spare
  8387				 * capacity. This might end up creating spare capacity
  8388				 * in busiest or busiest still being overloaded but
  8389				 * there is no simple way to directly compute the
  8390				 * amount of load to migrate in order to balance the
  8391				 * system.
  8392				 */
  8393				env->migration_type = migrate_util;
  8394				env->imbalance = max(local->group_capacity, local->group_util) -
  8395						 local->group_util;
  8396	
  8397				/*
  8398				 * In some cases, the group's utilization is max or even
  8399				 * higher than capacity because of migrations but the
  8400				 * local CPU is (newly) idle. There is at least one
  8401				 * waiting task in this overloaded busiest group. Let's
  8402				 * try to pull it.
  8403				 */
  8404				if (env->idle != CPU_NOT_IDLE && env->imbalance == 0) {
  8405					env->migration_type = migrate_task;
  8406					env->imbalance = 1;
  8407				}
  8408	
  8409				return;
  8410			}
  8411	
  8412			if (busiest->group_weight == 1 || sds->prefer_sibling) {
  8413				unsigned int nr_diff = busiest->sum_h_nr_running;
  8414				/*
  8415				 * When prefer sibling, evenly spread running tasks on
  8416				 * groups.
  8417				 */
  8418				env->migration_type = migrate_task;
  8419				lsub_positive(&nr_diff, local->sum_h_nr_running);
  8420				env->imbalance = nr_diff >> 1;
  8421				return;
  8422			}
  8423	
  8424			/*
  8425			 * If there is no overload, we just want to even the number of
  8426			 * idle cpus.
  8427			 */
  8428			env->migration_type = migrate_task;
> 8429			env->imbalance = max_t(long, 0, (local->idle_cpus -
  8430							 busiest->idle_cpus) >> 1);
  8431			return;
  8432		}
  8433	
  8434		/*
  8435		 * Local is fully busy but has to take more load to relieve the
  8436		 * busiest group
  8437		 */
  8438		if (local->group_type < group_overloaded) {
  8439			/*
  8440			 * Local will become overloaded so the avg_load metrics are
  8441			 * finally needed.
  8442			 */
  8443	
  8444			local->avg_load = (local->group_load * SCHED_CAPACITY_SCALE) /
  8445					  local->group_capacity;
  8446	
  8447			sds->avg_load = (sds->total_load * SCHED_CAPACITY_SCALE) /
  8448					sds->total_capacity;
  8449		}
  8450	
  8451		/*
  8452		 * Both group are or will become overloaded and we're trying to get all
  8453		 * the CPUs to the average_load, so we don't want to push ourselves
  8454		 * above the average load, nor do we wish to reduce the max loaded CPU
  8455		 * below the average load. At the same time, we also don't want to
  8456		 * reduce the group load below the group capacity. Thus we look for
  8457		 * the minimum possible imbalance.
  8458		 */
  8459		env->migration_type = migrate_load;
  8460		env->imbalance = min(
  8461			(busiest->avg_load - sds->avg_load) * busiest->group_capacity,
  8462			(sds->avg_load - local->avg_load) * local->group_capacity
  8463		) / SCHED_CAPACITY_SCALE;
  8464	}
  8465	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (31258 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ