Re: [PATCH v5 1/6] cgroup/cpuset: Properly transition to invalid partition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Waiman,

I love your patch! Perhaps something to improve:

[auto build test WARNING on cgroup/for-next]
[also build test WARNING on next-20210813]
[cannot apply to kselftest/next v5.14-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Waiman-Long/cgroup-cpuset-Add-new-cpuset-partition-type-empty-effecitve-cpus/20210815-014333
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-next
config: ia64-defconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/56ec7dd271c77e3cc92f0df6fd766004a7a0aa88
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Waiman-Long/cgroup-cpuset-Add-new-cpuset-partition-type-empty-effecitve-cpus/20210815-014333
        git checkout 56ec7dd271c77e3cc92f0df6fd766004a7a0aa88
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=ia64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   kernel/cgroup/cpuset.c: In function 'update_prstate':
>> kernel/cgroup/cpuset.c:2068:1: warning: the frame size of 3072 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    2068 | }
         | ^


vim +2068 kernel/cgroup/cpuset.c

^1da177e4c3f41 kernel/cpuset.c        Linus Torvalds 2005-04-16  1966  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1967  /*
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1968   * update_prstate - update partititon_root_state
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1969   * cs: the cpuset to update
0f3adb8a1e5f36 kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1970   * new_prs: new partition root state
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1971   *
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1972   * Call with cpuset_mutex held.
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1973   */
0f3adb8a1e5f36 kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1974  static int update_prstate(struct cpuset *cs, int new_prs)
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1975  {
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1976  	int err, old_prs = cs->partition_root_state;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1977  	struct cpuset *parent = parent_cs(cs);
0f3adb8a1e5f36 kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1978  	struct tmpmasks tmpmask;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1979  
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1980  	if (old_prs == new_prs)
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1981  		return 0;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1982  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1983  	/*
3881b86128d0be kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1984  	 * Cannot force a partial or invalid partition root to a full
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1985  	 * partition root.
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1986  	 */
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1987  	if (new_prs && (old_prs == PRS_ERROR))
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1988  		return -EINVAL;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1989  
0f3adb8a1e5f36 kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1990  	if (alloc_cpumasks(NULL, &tmpmask))
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1991  		return -ENOMEM;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1992  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1993  	err = -EINVAL;
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  1994  	if (!old_prs) {
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1995  		/*
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1996  		 * Turning on partition root requires setting the
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1997  		 * CS_CPU_EXCLUSIVE bit implicitly as well and cpus_allowed
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1998  		 * cannot be NULL.
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  1999  		 */
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2000  		if (cpumask_empty(cs->cpus_allowed))
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2001  			goto out;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2002  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2003  		err = update_flag(CS_CPU_EXCLUSIVE, cs, 1);
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2004  		if (err)
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2005  			goto out;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2006  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2007  		err = update_parent_subparts_cpumask(cs, partcmd_enable,
0f3adb8a1e5f36 kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2008  						     NULL, &tmpmask);
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2009  		if (err) {
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2010  			update_flag(CS_CPU_EXCLUSIVE, cs, 0);
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2011  			goto out;
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2012  		}
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2013  	} else {
3881b86128d0be kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2014  		/*
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2015  		 * Switch back to member is always allowed even if it
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2016  		 * causes child partitions to become invalid.
3881b86128d0be kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2017  		 */
3881b86128d0be kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2018  		err = 0;
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2019  		update_parent_subparts_cpumask(cs, partcmd_disable, NULL,
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2020  					       &tmpmask);
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2021  		/*
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2022  		 * If there are child partitions, we have to make them invalid.
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2023  		 */
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2024  		if (unlikely(cs->nr_subparts_cpus)) {
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2025  			struct tmpmasks tmp;
3881b86128d0be kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2026  
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2027  			spin_lock_irq(&callback_lock);
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2028  			cs->nr_subparts_cpus = 0;
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2029  			cpumask_clear(cs->subparts_cpus);
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2030  			compute_effective_cpumask(cs->effective_cpus, cs, parent);
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2031  			spin_unlock_irq(&callback_lock);
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2032  
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2033  			/*
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2034  			 * If alloc_cpumasks() fails, we are running out
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2035  			 * of memory and there isn't much we can do.
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2036  			 */
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2037  			if (!alloc_cpumasks(NULL, &tmp)) {
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2038  				update_cpumasks_hier(cs, &tmp);
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2039  				free_cpumasks(NULL, &tmp);
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2040  			}
56ec7dd271c77e kernel/cgroup/cpuset.c Waiman Long    2021-08-14  2041  		}
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2042  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2043  		/* Turning off CS_CPU_EXCLUSIVE will not return error */
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2044  		update_flag(CS_CPU_EXCLUSIVE, cs, 0);
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2045  	}
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2046  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2047  	/*
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2048  	 * Update cpumask of parent's tasks except when it is the top
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2049  	 * cpuset as some system daemons cannot be mapped to other CPUs.
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2050  	 */
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2051  	if (parent != &top_cpuset)
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2052  		update_tasks_cpumask(parent);
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2053  
4716909cc5c566 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2054  	if (parent->child_ecpus_count)
0f3adb8a1e5f36 kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2055  		update_sibling_cpumasks(parent, cs, &tmpmask);
4716909cc5c566 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2056  
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2057  	rebuild_sched_domains_locked();
ee8dde0cd2ce78 kernel/cgroup/cpuset.c Waiman Long    2018-11-08  2058  out:
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2059  	if (!err) {
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2060  		spin_lock_irq(&callback_lock);
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2061  		cs->partition_root_state = new_prs;
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2062  		spin_unlock_irq(&callback_lock);
e7cc9888dc5792 kernel/cgroup/cpuset.c Waiman Long    2021-08-10  2063  		notify_partition_change(cs, old_prs, new_prs);
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2064  	}
6ba34d3c73674e kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2065  
0f3adb8a1e5f36 kernel/cgroup/cpuset.c Waiman Long    2021-07-20  2066  	free_cpumasks(NULL, &tmpmask);
645fcc9d2f6946 kernel/cpuset.c        Li Zefan       2009-01-07  2067  	return err;
^1da177e4c3f41 kernel/cpuset.c        Linus Torvalds 2005-04-16 @2068  }
^1da177e4c3f41 kernel/cpuset.c        Linus Torvalds 2005-04-16  2069  

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux