CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Huang Ying <[email protected]>

Hi Huang,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on tip/sched/core]
[also build test WARNING on linux/master linus/master v5.17-rc3 next-20220209]
[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/Huang-Ying/NUMA-balancing-fix-NUMA-topology-for-systems-with-CPU-less-nodes/20220208-212402
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 
c8eaf6ac76f40f6c59fc7d056e2e08c4a57ea9c7
:::::: branch date: 27 hours ago
:::::: commit date: 27 hours ago
config: arm64-randconfig-m031-20220209 
(https://download.01.org/0day-ci/archive/20220209/[email protected]/config)
compiler: aarch64-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
kernel/sched/topology.c:1866 sched_init_numa() warn: possible memory leak of 
'masks'

vim +/masks +1866 kernel/sched/topology.c

620a6dc40754dc2 Valentin Schneider    2021-01-22  1785  
ed82092e5093338 Huang Ying            2022-02-08  1786  void 
sched_init_numa(int offline_node)
f2cb13609d5397c Ingo Molnar           2017-02-01  1787  {
f2cb13609d5397c Ingo Molnar           2017-02-01  1788          struct 
sched_domain_topology_level *tl;
620a6dc40754dc2 Valentin Schneider    2021-01-22  1789          unsigned long 
*distance_map;
620a6dc40754dc2 Valentin Schneider    2021-01-22  1790          int nr_levels = 
0;
620a6dc40754dc2 Valentin Schneider    2021-01-22  1791          int i, j;
ed82092e5093338 Huang Ying            2022-02-08  1792          int *distances;
ed82092e5093338 Huang Ying            2022-02-08  1793          struct cpumask 
***masks;
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1794  
f2cb13609d5397c Ingo Molnar           2017-02-01  1795          /*
f2cb13609d5397c Ingo Molnar           2017-02-01  1796           * 
O(nr_nodes^2) deduplicating selection sort -- in order to find the
f2cb13609d5397c Ingo Molnar           2017-02-01  1797           * unique 
distances in the node_distance() table.
f2cb13609d5397c Ingo Molnar           2017-02-01  1798           */
620a6dc40754dc2 Valentin Schneider    2021-01-22  1799          distance_map = 
bitmap_alloc(NR_DISTANCE_VALUES, GFP_KERNEL);
620a6dc40754dc2 Valentin Schneider    2021-01-22  1800          if 
(!distance_map)
620a6dc40754dc2 Valentin Schneider    2021-01-22  1801                  return;
620a6dc40754dc2 Valentin Schneider    2021-01-22  1802  
620a6dc40754dc2 Valentin Schneider    2021-01-22  1803          
bitmap_zero(distance_map, NR_DISTANCE_VALUES);
ed82092e5093338 Huang Ying            2022-02-08  1804          
for_each_cpu_node_but(i, offline_node) {
ed82092e5093338 Huang Ying            2022-02-08  1805                  
for_each_cpu_node_but(j, offline_node) {
620a6dc40754dc2 Valentin Schneider    2021-01-22  1806                          
int distance = node_distance(i, j);
f2cb13609d5397c Ingo Molnar           2017-02-01  1807  
620a6dc40754dc2 Valentin Schneider    2021-01-22  1808                          
if (distance < LOCAL_DISTANCE || distance >= NR_DISTANCE_VALUES) {
620a6dc40754dc2 Valentin Schneider    2021-01-22  1809                          
        sched_numa_warn("Invalid distance value range");
ed82092e5093338 Huang Ying            2022-02-08  1810                          
        bitmap_free(distance_map);
620a6dc40754dc2 Valentin Schneider    2021-01-22  1811                          
        return;
620a6dc40754dc2 Valentin Schneider    2021-01-22  1812                          
}
f2cb13609d5397c Ingo Molnar           2017-02-01  1813  
620a6dc40754dc2 Valentin Schneider    2021-01-22  1814                          
bitmap_set(distance_map, distance, 1);
620a6dc40754dc2 Valentin Schneider    2021-01-22  1815                  }
620a6dc40754dc2 Valentin Schneider    2021-01-22  1816          }
f2cb13609d5397c Ingo Molnar           2017-02-01  1817          /*
620a6dc40754dc2 Valentin Schneider    2021-01-22  1818           * We can now 
figure out how many unique distance values there are and
620a6dc40754dc2 Valentin Schneider    2021-01-22  1819           * allocate 
memory accordingly.
f2cb13609d5397c Ingo Molnar           2017-02-01  1820           */
620a6dc40754dc2 Valentin Schneider    2021-01-22  1821          nr_levels = 
bitmap_weight(distance_map, NR_DISTANCE_VALUES);
f2cb13609d5397c Ingo Molnar           2017-02-01  1822  
ed82092e5093338 Huang Ying            2022-02-08  1823          distances = 
kcalloc(nr_levels, sizeof(int), GFP_KERNEL);
ed82092e5093338 Huang Ying            2022-02-08  1824          if (!distances) 
{
620a6dc40754dc2 Valentin Schneider    2021-01-22  1825                  
bitmap_free(distance_map);
620a6dc40754dc2 Valentin Schneider    2021-01-22  1826                  return;
f2cb13609d5397c Ingo Molnar           2017-02-01  1827          }
f2cb13609d5397c Ingo Molnar           2017-02-01  1828  
620a6dc40754dc2 Valentin Schneider    2021-01-22  1829          for (i = 0, j = 
0; i < nr_levels; i++, j++) {
620a6dc40754dc2 Valentin Schneider    2021-01-22  1830                  j = 
find_next_bit(distance_map, NR_DISTANCE_VALUES, j);
ed82092e5093338 Huang Ying            2022-02-08  1831                  
distances[i] = j;
f2cb13609d5397c Ingo Molnar           2017-02-01  1832          }
ed82092e5093338 Huang Ying            2022-02-08  1833          
rcu_assign_pointer(sched_domains_numa_distance, distances);
f2cb13609d5397c Ingo Molnar           2017-02-01  1834  
620a6dc40754dc2 Valentin Schneider    2021-01-22  1835          
bitmap_free(distance_map);
620a6dc40754dc2 Valentin Schneider    2021-01-22  1836  
f2cb13609d5397c Ingo Molnar           2017-02-01  1837          /*
620a6dc40754dc2 Valentin Schneider    2021-01-22  1838           * 'nr_levels' 
contains the number of unique distances
f2cb13609d5397c Ingo Molnar           2017-02-01  1839           *
f2cb13609d5397c Ingo Molnar           2017-02-01  1840           * The 
sched_domains_numa_distance[] array includes the actual distance
f2cb13609d5397c Ingo Molnar           2017-02-01  1841           * numbers.
f2cb13609d5397c Ingo Molnar           2017-02-01  1842           */
f2cb13609d5397c Ingo Molnar           2017-02-01  1843  
f2cb13609d5397c Ingo Molnar           2017-02-01  1844          /*
f2cb13609d5397c Ingo Molnar           2017-02-01  1845           * Here, we 
should temporarily reset sched_domains_numa_levels to 0.
f2cb13609d5397c Ingo Molnar           2017-02-01  1846           * If it fails 
to allocate memory for array sched_domains_numa_masks[][],
620a6dc40754dc2 Valentin Schneider    2021-01-22  1847           * the array 
will contain less then 'nr_levels' members. This could be
f2cb13609d5397c Ingo Molnar           2017-02-01  1848           * dangerous 
when we use it to iterate array sched_domains_numa_masks[][]
f2cb13609d5397c Ingo Molnar           2017-02-01  1849           * in other 
functions.
f2cb13609d5397c Ingo Molnar           2017-02-01  1850           *
620a6dc40754dc2 Valentin Schneider    2021-01-22  1851           * We reset it 
to 'nr_levels' at the end of this function.
f2cb13609d5397c Ingo Molnar           2017-02-01  1852           */
f2cb13609d5397c Ingo Molnar           2017-02-01  1853          
sched_domains_numa_levels = 0;
f2cb13609d5397c Ingo Molnar           2017-02-01  1854  
ed82092e5093338 Huang Ying            2022-02-08  1855          masks = 
kzalloc(sizeof(void *) * nr_levels, GFP_KERNEL);
ed82092e5093338 Huang Ying            2022-02-08  1856          if (!masks)
f2cb13609d5397c Ingo Molnar           2017-02-01  1857                  return;
f2cb13609d5397c Ingo Molnar           2017-02-01  1858  
f2cb13609d5397c Ingo Molnar           2017-02-01  1859          /*
f2cb13609d5397c Ingo Molnar           2017-02-01  1860           * Now for each 
level, construct a mask per node which contains all
f2cb13609d5397c Ingo Molnar           2017-02-01  1861           * CPUs of 
nodes that are that many hops away from us.
f2cb13609d5397c Ingo Molnar           2017-02-01  1862           */
620a6dc40754dc2 Valentin Schneider    2021-01-22  1863          for (i = 0; i < 
nr_levels; i++) {
ed82092e5093338 Huang Ying            2022-02-08  1864                  
masks[i] = kzalloc(nr_node_ids * sizeof(void *), GFP_KERNEL);
ed82092e5093338 Huang Ying            2022-02-08  1865                  if 
(!masks[i])
f2cb13609d5397c Ingo Molnar           2017-02-01 @1866                          
return;
f2cb13609d5397c Ingo Molnar           2017-02-01  1867  
ed82092e5093338 Huang Ying            2022-02-08  1868                  
for_each_cpu_node_but(j, offline_node) {
f2cb13609d5397c Ingo Molnar           2017-02-01  1869                          
struct cpumask *mask = kzalloc(cpumask_size(), GFP_KERNEL);
620a6dc40754dc2 Valentin Schneider    2021-01-22  1870                          
int k;
620a6dc40754dc2 Valentin Schneider    2021-01-22  1871  
f2cb13609d5397c Ingo Molnar           2017-02-01  1872                          
if (!mask)
f2cb13609d5397c Ingo Molnar           2017-02-01  1873                          
        return;
f2cb13609d5397c Ingo Molnar           2017-02-01  1874  
ed82092e5093338 Huang Ying            2022-02-08  1875                          
masks[i][j] = mask;
0083242c93759dd Valentin Schneider    2021-08-18  1876  
ed82092e5093338 Huang Ying            2022-02-08  1877                          
for_each_cpu_node_but(k, offline_node) {
620a6dc40754dc2 Valentin Schneider    2021-01-22  1878                          
        if (sched_debug() && (node_distance(j, k) != node_distance(k, j)))
620a6dc40754dc2 Valentin Schneider    2021-01-22  1879                          
                sched_numa_warn("Node-distance not symmetric");
620a6dc40754dc2 Valentin Schneider    2021-01-22  1880  
f2cb13609d5397c Ingo Molnar           2017-02-01  1881                          
        if (node_distance(j, k) > sched_domains_numa_distance[i])
f2cb13609d5397c Ingo Molnar           2017-02-01  1882                          
                continue;
f2cb13609d5397c Ingo Molnar           2017-02-01  1883  
f2cb13609d5397c Ingo Molnar           2017-02-01  1884                          
        cpumask_or(mask, mask, cpumask_of_node(k));
f2cb13609d5397c Ingo Molnar           2017-02-01  1885                          
}
f2cb13609d5397c Ingo Molnar           2017-02-01  1886                  }
f2cb13609d5397c Ingo Molnar           2017-02-01  1887          }
ed82092e5093338 Huang Ying            2022-02-08  1888          
rcu_assign_pointer(sched_domains_numa_masks, masks);
f2cb13609d5397c Ingo Molnar           2017-02-01  1889  
f2cb13609d5397c Ingo Molnar           2017-02-01  1890          /* Compute 
default topology size */
f2cb13609d5397c Ingo Molnar           2017-02-01  1891          for (i = 0; 
sched_domain_topology[i].mask; i++);
f2cb13609d5397c Ingo Molnar           2017-02-01  1892  
71e5f6644fb2f33 Dietmar Eggemann      2021-02-01  1893          tl = kzalloc((i 
+ nr_levels + 1) *
f2cb13609d5397c Ingo Molnar           2017-02-01  1894                          
sizeof(struct sched_domain_topology_level), GFP_KERNEL);
f2cb13609d5397c Ingo Molnar           2017-02-01  1895          if (!tl)
f2cb13609d5397c Ingo Molnar           2017-02-01  1896                  return;
f2cb13609d5397c Ingo Molnar           2017-02-01  1897  
f2cb13609d5397c Ingo Molnar           2017-02-01  1898          /*
f2cb13609d5397c Ingo Molnar           2017-02-01  1899           * Copy the 
default topology bits..
f2cb13609d5397c Ingo Molnar           2017-02-01  1900           */
f2cb13609d5397c Ingo Molnar           2017-02-01  1901          for (i = 0; 
sched_domain_topology[i].mask; i++)
f2cb13609d5397c Ingo Molnar           2017-02-01  1902                  tl[i] = 
sched_domain_topology[i];
f2cb13609d5397c Ingo Molnar           2017-02-01  1903  
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1904          /*
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1905           * Add the NUMA 
identity distance, aka single NODE.
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1906           */
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1907          tl[i++] = 
(struct sched_domain_topology_level){
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1908                  .mask = 
sd_numa_mask,
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1909                  
.numa_level = 0,
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1910                  
SD_INIT_NAME(NODE)
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1911          };
051f3ca02e46432 Suravee Suthikulpanit 2017-09-07  1912  
f2cb13609d5397c Ingo Molnar           2017-02-01  1913          /*
f2cb13609d5397c Ingo Molnar           2017-02-01  1914           * .. and 
append 'j' levels of NUMA goodness.
f2cb13609d5397c Ingo Molnar           2017-02-01  1915           */
620a6dc40754dc2 Valentin Schneider    2021-01-22  1916          for (j = 1; j < 
nr_levels; i++, j++) {
f2cb13609d5397c Ingo Molnar           2017-02-01  1917                  tl[i] = 
(struct sched_domain_topology_level){
f2cb13609d5397c Ingo Molnar           2017-02-01  1918                          
.mask = sd_numa_mask,
f2cb13609d5397c Ingo Molnar           2017-02-01  1919                          
.sd_flags = cpu_numa_flags,
f2cb13609d5397c Ingo Molnar           2017-02-01  1920                          
.flags = SDTL_OVERLAP,
f2cb13609d5397c Ingo Molnar           2017-02-01  1921                          
.numa_level = j,
f2cb13609d5397c Ingo Molnar           2017-02-01  1922                          
SD_INIT_NAME(NUMA)
f2cb13609d5397c Ingo Molnar           2017-02-01  1923                  };
f2cb13609d5397c Ingo Molnar           2017-02-01  1924          }
f2cb13609d5397c Ingo Molnar           2017-02-01  1925  
ed82092e5093338 Huang Ying            2022-02-08  1926          
sched_domain_topology_saved = sched_domain_topology;
f2cb13609d5397c Ingo Molnar           2017-02-01  1927          
sched_domain_topology = tl;
f2cb13609d5397c Ingo Molnar           2017-02-01  1928  
620a6dc40754dc2 Valentin Schneider    2021-01-22  1929          
sched_domains_numa_levels = nr_levels;
620a6dc40754dc2 Valentin Schneider    2021-01-22  1930          
sched_max_numa_distance = sched_domains_numa_distance[nr_levels - 1];
f2cb13609d5397c Ingo Molnar           2017-02-01  1931  
ed82092e5093338 Huang Ying            2022-02-08  1932          
init_numa_topology_type(offline_node);
0083242c93759dd Valentin Schneider    2021-08-18  1933  }
0083242c93759dd Valentin Schneider    2021-08-18  1934  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to