* [mel:mm-percpu-local_lock-v4r4 22/29] mm/vmstat.c:1793:5: error: section attribute cannot be specified for local variables
@ 2021-04-19 17:43 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-04-19 17:43 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 24935 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mel/linux.git mm-percpu-local_lock-v4r4
head: 85d43239ceaed47c1a4e646aba1ebc09ad46734e
commit: c1617f38ab5c8401a4d5c6288c59aaf02e2a6788 [22/29] mm/vmstat: Convert NUMA statistics to basic NUMA counters
config: parisc-randconfig-r015-20210419 (attached as .config)
compiler: hppa-linux-gcc (GCC) 9.3.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://git.kernel.org/pub/scm/linux/kernel/git/mel/linux.git/commit/?id=c1617f38ab5c8401a4d5c6288c59aaf02e2a6788
git remote add mel https://git.kernel.org/pub/scm/linux/kernel/git/mel/linux.git
git fetch --no-tags mel mm-percpu-local_lock-v4r4
git checkout c1617f38ab5c8401a4d5c6288c59aaf02e2a6788
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross W=1 ARCH=parisc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
mm/vmstat.c: In function 'refresh_cpu_vm_stats':
mm/vmstat.c:781:34: warning: unused variable 'pcp' [-Wunused-variable]
781 | struct per_cpu_pages __percpu *pcp = zone->per_cpu_pageset;
| ^~~
mm/vmstat.c: In function 'cpu_vm_stats_fold':
>> mm/vmstat.c:913:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
913 | void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *pzstats)
| ^~~~
>> mm/vmstat.c:1793:5: error: section attribute cannot be specified for local variables
1793 | int sysctl_stat_interval __read_mostly = HZ;
| ^~~~~~~~~~~~~~~~~~~~
>> mm/vmstat.c:1841:13: error: invalid storage class for function 'vmstat_update'
1841 | static void vmstat_update(struct work_struct *w)
| ^~~~~~~~~~~~~
>> mm/vmstat.c:1864:13: error: invalid storage class for function 'need_update'
1864 | static bool need_update(int cpu)
| ^~~~~~~~~~~
>> mm/vmstat.c:1922:13: error: invalid storage class for function 'vmstat_shepherd'
1922 | static void vmstat_shepherd(struct work_struct *w);
| ^~~~~~~~~~~~~~~
In file included from include/linux/mm_types.h:16,
from include/linux/mmzone.h:21,
from include/linux/gfp.h:6,
from include/linux/xarray.h:14,
from include/linux/radix-tree.h:19,
from include/linux/fs.h:15,
from mm/vmstat.c:13:
>> mm/vmstat.c:1924:42: error: 'vmstat_shepherd' undeclared (first use in this function)
1924 | static DECLARE_DEFERRABLE_WORK(shepherd, vmstat_shepherd);
| ^~~~~~~~~~~~~~~
include/linux/workqueue.h:187:11: note: in definition of macro '__WORK_INITIALIZER'
187 | .func = (f), \
| ^
include/linux/workqueue.h:204:26: note: in expansion of macro '__DELAYED_WORK_INITIALIZER'
204 | struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f, TIMER_DEFERRABLE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
mm/vmstat.c:1924:8: note: in expansion of macro 'DECLARE_DEFERRABLE_WORK'
1924 | static DECLARE_DEFERRABLE_WORK(shepherd, vmstat_shepherd);
| ^~~~~~~~~~~~~~~~~~~~~~~
mm/vmstat.c:1924:42: note: each undeclared identifier is reported only once for each function it appears in
1924 | static DECLARE_DEFERRABLE_WORK(shepherd, vmstat_shepherd);
| ^~~~~~~~~~~~~~~
include/linux/workqueue.h:187:11: note: in definition of macro '__WORK_INITIALIZER'
187 | .func = (f), \
| ^
include/linux/workqueue.h:204:26: note: in expansion of macro '__DELAYED_WORK_INITIALIZER'
204 | struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f, TIMER_DEFERRABLE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
mm/vmstat.c:1924:8: note: in expansion of macro 'DECLARE_DEFERRABLE_WORK'
1924 | static DECLARE_DEFERRABLE_WORK(shepherd, vmstat_shepherd);
| ^~~~~~~~~~~~~~~~~~~~~~~
mm/vmstat.c:1926:13: error: invalid storage class for function 'vmstat_shepherd'
1926 | static void vmstat_shepherd(struct work_struct *w)
| ^~~~~~~~~~~~~~~
>> mm/vmstat.c:1946:20: error: invalid storage class for function 'start_shepherd_timer'
1946 | static void __init start_shepherd_timer(void)
| ^~~~~~~~~~~~~~~~~~~~
>> mm/vmstat.c:1958:20: error: invalid storage class for function 'init_cpu_node_state'
1958 | static void __init init_cpu_node_state(void)
| ^~~~~~~~~~~~~~~~~~~
>> mm/vmstat.c:1968:12: error: invalid storage class for function 'vmstat_cpu_online'
1968 | static int vmstat_cpu_online(unsigned int cpu)
| ^~~~~~~~~~~~~~~~~
>> mm/vmstat.c:1975:12: error: invalid storage class for function 'vmstat_cpu_down_prep'
1975 | static int vmstat_cpu_down_prep(unsigned int cpu)
| ^~~~~~~~~~~~~~~~~~~~
>> mm/vmstat.c:1981:12: error: invalid storage class for function 'vmstat_cpu_dead'
1981 | static int vmstat_cpu_dead(unsigned int cpu)
| ^~~~~~~~~~~~~~~
>> mm/vmstat.c:2031:1: error: expected declaration or statement at end of input
2031 | }
| ^
>> mm/vmstat.c:1999:26: warning: variable 'mm_percpu_wq' set but not used [-Wunused-but-set-variable]
1999 | struct workqueue_struct *mm_percpu_wq;
| ^~~~~~~~~~~~
mm/vmstat.c:1126:20: warning: unused variable 'vmstat_text' [-Wunused-variable]
1126 | const char * const vmstat_text[] = {
| ^~~~~~~~~~~
At top level:
mm/vmstat.c:1126:20: warning: 'vmstat_text' defined but not used [-Wunused-const-variable=]
mm/vmstat.c:2001:13: warning: 'init_mm_internals' defined but not used [-Wunused-function]
2001 | void __init init_mm_internals(void)
| ^~~~~~~~~~~~~~~~~
mm/vmstat.c:1926:13: warning: 'vmstat_shepherd' defined but not used [-Wunused-function]
1926 | static void vmstat_shepherd(struct work_struct *w)
| ^~~~~~~~~~~~~~~
mm/vmstat.c:1896:6: warning: 'quiet_vmstat' defined but not used [-Wunused-function]
1896 | void quiet_vmstat(void)
| ^~~~~~~~~~~~
mm/vmstat.c:913:6: warning: 'drain_zonestat' defined but not used [-Wunused-function]
913 | void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *pzstats)
| ^~~~~~~~~~~~~~
vim +1793 mm/vmstat.c
f6ac2354d79119 Christoph Lameter 2006-06-30 1790
df9ecaba3f152d Christoph Lameter 2006-08-31 1791 #ifdef CONFIG_SMP
d1187ed21026fd Christoph Lameter 2007-05-09 1792 static DEFINE_PER_CPU(struct delayed_work, vmstat_work);
77461ab33229d4 Christoph Lameter 2007-05-09 @1793 int sysctl_stat_interval __read_mostly = HZ;
d1187ed21026fd Christoph Lameter 2007-05-09 1794
52b6f46bc163ee Hugh Dickins 2016-05-19 1795 #ifdef CONFIG_PROC_FS
52b6f46bc163ee Hugh Dickins 2016-05-19 1796 static void refresh_vm_stats(struct work_struct *work)
52b6f46bc163ee Hugh Dickins 2016-05-19 1797 {
52b6f46bc163ee Hugh Dickins 2016-05-19 1798 refresh_cpu_vm_stats(true);
52b6f46bc163ee Hugh Dickins 2016-05-19 1799 }
52b6f46bc163ee Hugh Dickins 2016-05-19 1800
52b6f46bc163ee Hugh Dickins 2016-05-19 1801 int vmstat_refresh(struct ctl_table *table, int write,
32927393dc1ccd Christoph Hellwig 2020-04-24 1802 void *buffer, size_t *lenp, loff_t *ppos)
52b6f46bc163ee Hugh Dickins 2016-05-19 1803 {
52b6f46bc163ee Hugh Dickins 2016-05-19 1804 long val;
52b6f46bc163ee Hugh Dickins 2016-05-19 1805 int err;
52b6f46bc163ee Hugh Dickins 2016-05-19 1806 int i;
52b6f46bc163ee Hugh Dickins 2016-05-19 1807
52b6f46bc163ee Hugh Dickins 2016-05-19 1808 /*
52b6f46bc163ee Hugh Dickins 2016-05-19 1809 * The regular update, every sysctl_stat_interval, may come later
52b6f46bc163ee Hugh Dickins 2016-05-19 1810 * than expected: leaving a significant amount in per_cpu buckets.
52b6f46bc163ee Hugh Dickins 2016-05-19 1811 * This is particularly misleading when checking a quantity of HUGE
52b6f46bc163ee Hugh Dickins 2016-05-19 1812 * pages, immediately after running a test. /proc/sys/vm/stat_refresh,
52b6f46bc163ee Hugh Dickins 2016-05-19 1813 * which can equally be echo'ed to or cat'ted from (by root),
52b6f46bc163ee Hugh Dickins 2016-05-19 1814 * can be used to update the stats just before reading them.
52b6f46bc163ee Hugh Dickins 2016-05-19 1815 *
c41f012ade0b95 Michal Hocko 2017-09-06 1816 * Oh, and since global_zone_page_state() etc. are so careful to hide
52b6f46bc163ee Hugh Dickins 2016-05-19 1817 * transiently negative values, report an error here if any of
52b6f46bc163ee Hugh Dickins 2016-05-19 1818 * the stats is negative, so we know to go looking for imbalance.
52b6f46bc163ee Hugh Dickins 2016-05-19 1819 */
52b6f46bc163ee Hugh Dickins 2016-05-19 1820 err = schedule_on_each_cpu(refresh_vm_stats);
52b6f46bc163ee Hugh Dickins 2016-05-19 1821 if (err)
52b6f46bc163ee Hugh Dickins 2016-05-19 1822 return err;
52b6f46bc163ee Hugh Dickins 2016-05-19 1823 for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) {
75ef7184053989 Mel Gorman 2016-07-28 1824 val = atomic_long_read(&vm_zone_stat[i]);
52b6f46bc163ee Hugh Dickins 2016-05-19 1825 if (val < 0) {
52b6f46bc163ee Hugh Dickins 2016-05-19 1826 pr_warn("%s: %s %ld\n",
9d7ea9a297e644 Konstantin Khlebnikov 2019-12-04 1827 __func__, zone_stat_name(i), val);
52b6f46bc163ee Hugh Dickins 2016-05-19 1828 err = -EINVAL;
52b6f46bc163ee Hugh Dickins 2016-05-19 1829 }
52b6f46bc163ee Hugh Dickins 2016-05-19 1830 }
52b6f46bc163ee Hugh Dickins 2016-05-19 1831 if (err)
52b6f46bc163ee Hugh Dickins 2016-05-19 1832 return err;
52b6f46bc163ee Hugh Dickins 2016-05-19 1833 if (write)
52b6f46bc163ee Hugh Dickins 2016-05-19 1834 *ppos += *lenp;
52b6f46bc163ee Hugh Dickins 2016-05-19 1835 else
52b6f46bc163ee Hugh Dickins 2016-05-19 1836 *lenp = 0;
52b6f46bc163ee Hugh Dickins 2016-05-19 1837 return 0;
52b6f46bc163ee Hugh Dickins 2016-05-19 1838 }
52b6f46bc163ee Hugh Dickins 2016-05-19 1839 #endif /* CONFIG_PROC_FS */
52b6f46bc163ee Hugh Dickins 2016-05-19 1840
d1187ed21026fd Christoph Lameter 2007-05-09 @1841 static void vmstat_update(struct work_struct *w)
d1187ed21026fd Christoph Lameter 2007-05-09 1842 {
0eb77e98803219 Christoph Lameter 2016-01-14 1843 if (refresh_cpu_vm_stats(true)) {
7cc36bbddde5cd Christoph Lameter 2014-10-09 1844 /*
7cc36bbddde5cd Christoph Lameter 2014-10-09 1845 * Counters were updated so we expect more updates
7cc36bbddde5cd Christoph Lameter 2014-10-09 1846 * to occur in the future. Keep on running the
7cc36bbddde5cd Christoph Lameter 2014-10-09 1847 * update worker thread.
7cc36bbddde5cd Christoph Lameter 2014-10-09 1848 */
ce612879ddc78e Michal Hocko 2017-04-07 1849 queue_delayed_work_on(smp_processor_id(), mm_percpu_wq,
176bed1de5bf97 Linus Torvalds 2015-10-15 1850 this_cpu_ptr(&vmstat_work),
98f4ebb290a7dc Anton Blanchard 2009-04-02 1851 round_jiffies_relative(sysctl_stat_interval));
f01f17d3705bb6 Michal Hocko 2016-02-05 1852 }
7cc36bbddde5cd Christoph Lameter 2014-10-09 1853 }
7cc36bbddde5cd Christoph Lameter 2014-10-09 1854
0eb77e98803219 Christoph Lameter 2016-01-14 1855 /*
0eb77e98803219 Christoph Lameter 2016-01-14 1856 * Switch off vmstat processing and then fold all the remaining differentials
0eb77e98803219 Christoph Lameter 2016-01-14 1857 * until the diffs stay@zero. The function is used by NOHZ and can only be
0eb77e98803219 Christoph Lameter 2016-01-14 1858 * invoked when tick processing is not active.
0eb77e98803219 Christoph Lameter 2016-01-14 1859 */
7cc36bbddde5cd Christoph Lameter 2014-10-09 1860 /*
7cc36bbddde5cd Christoph Lameter 2014-10-09 1861 * Check if the diffs for a certain cpu indicate that
7cc36bbddde5cd Christoph Lameter 2014-10-09 1862 * an update is needed.
7cc36bbddde5cd Christoph Lameter 2014-10-09 1863 */
7cc36bbddde5cd Christoph Lameter 2014-10-09 @1864 static bool need_update(int cpu)
7cc36bbddde5cd Christoph Lameter 2014-10-09 1865 {
2bbd00aef0671b Johannes Weiner 2021-02-25 1866 pg_data_t *last_pgdat = NULL;
7cc36bbddde5cd Christoph Lameter 2014-10-09 1867 struct zone *zone;
7cc36bbddde5cd Christoph Lameter 2014-10-09 1868
7cc36bbddde5cd Christoph Lameter 2014-10-09 1869 for_each_populated_zone(zone) {
6d2c7ce5a47d4e Mel Gorman 2021-01-19 1870 struct per_cpu_zonestat *pzstats = per_cpu_ptr(zone->per_cpu_zonestats, cpu);
2bbd00aef0671b Johannes Weiner 2021-02-25 1871 struct per_cpu_nodestat *n;
6d2c7ce5a47d4e Mel Gorman 2021-01-19 1872
7cc36bbddde5cd Christoph Lameter 2014-10-09 1873 /*
7cc36bbddde5cd Christoph Lameter 2014-10-09 1874 * The fast way of checking if there are any vmstat diffs.
7cc36bbddde5cd Christoph Lameter 2014-10-09 1875 */
6d2c7ce5a47d4e Mel Gorman 2021-01-19 1876 if (memchr_inv(pzstats->vm_stat_diff, 0, NR_VM_ZONE_STAT_ITEMS *
6d2c7ce5a47d4e Mel Gorman 2021-01-19 1877 sizeof(pzstats->vm_stat_diff[0])))
7cc36bbddde5cd Christoph Lameter 2014-10-09 1878 return true;
c1617f38ab5c84 Mel Gorman 2021-02-24 1879
2bbd00aef0671b Johannes Weiner 2021-02-25 1880 if (last_pgdat == zone->zone_pgdat)
2bbd00aef0671b Johannes Weiner 2021-02-25 1881 continue;
2bbd00aef0671b Johannes Weiner 2021-02-25 1882 last_pgdat = zone->zone_pgdat;
2bbd00aef0671b Johannes Weiner 2021-02-25 1883 n = per_cpu_ptr(zone->zone_pgdat->per_cpu_nodestats, cpu);
2bbd00aef0671b Johannes Weiner 2021-02-25 1884 if (memchr_inv(n->vm_node_stat_diff, 0, NR_VM_NODE_STAT_ITEMS *
2bbd00aef0671b Johannes Weiner 2021-02-25 1885 sizeof(n->vm_node_stat_diff[0])))
2bbd00aef0671b Johannes Weiner 2021-02-25 1886 return true;
7cc36bbddde5cd Christoph Lameter 2014-10-09 1887 }
7cc36bbddde5cd Christoph Lameter 2014-10-09 1888 return false;
7cc36bbddde5cd Christoph Lameter 2014-10-09 1889 }
7cc36bbddde5cd Christoph Lameter 2014-10-09 1890
7b8da4c7f07774 Christoph Lameter 2016-05-20 1891 /*
7b8da4c7f07774 Christoph Lameter 2016-05-20 1892 * Switch off vmstat processing and then fold all the remaining differentials
7b8da4c7f07774 Christoph Lameter 2016-05-20 1893 * until the diffs stay at zero. The function is used by NOHZ and can only be
7b8da4c7f07774 Christoph Lameter 2016-05-20 1894 * invoked when tick processing is not active.
7b8da4c7f07774 Christoph Lameter 2016-05-20 1895 */
f01f17d3705bb6 Michal Hocko 2016-02-05 1896 void quiet_vmstat(void)
f01f17d3705bb6 Michal Hocko 2016-02-05 1897 {
f01f17d3705bb6 Michal Hocko 2016-02-05 1898 if (system_state != SYSTEM_RUNNING)
f01f17d3705bb6 Michal Hocko 2016-02-05 1899 return;
f01f17d3705bb6 Michal Hocko 2016-02-05 1900
7b8da4c7f07774 Christoph Lameter 2016-05-20 1901 if (!delayed_work_pending(this_cpu_ptr(&vmstat_work)))
f01f17d3705bb6 Michal Hocko 2016-02-05 1902 return;
f01f17d3705bb6 Michal Hocko 2016-02-05 1903
f01f17d3705bb6 Michal Hocko 2016-02-05 1904 if (!need_update(smp_processor_id()))
f01f17d3705bb6 Michal Hocko 2016-02-05 1905 return;
f01f17d3705bb6 Michal Hocko 2016-02-05 1906
f01f17d3705bb6 Michal Hocko 2016-02-05 1907 /*
f01f17d3705bb6 Michal Hocko 2016-02-05 1908 * Just refresh counters and do not care about the pending delayed
f01f17d3705bb6 Michal Hocko 2016-02-05 1909 * vmstat_update. It doesn't fire that often to matter and canceling
f01f17d3705bb6 Michal Hocko 2016-02-05 1910 * it would be too expensive from this path.
f01f17d3705bb6 Michal Hocko 2016-02-05 1911 * vmstat_shepherd will take care about that for us.
f01f17d3705bb6 Michal Hocko 2016-02-05 1912 */
f01f17d3705bb6 Michal Hocko 2016-02-05 1913 refresh_cpu_vm_stats(false);
f01f17d3705bb6 Michal Hocko 2016-02-05 1914 }
f01f17d3705bb6 Michal Hocko 2016-02-05 1915
7cc36bbddde5cd Christoph Lameter 2014-10-09 1916 /*
7cc36bbddde5cd Christoph Lameter 2014-10-09 1917 * Shepherd worker thread that checks the
7cc36bbddde5cd Christoph Lameter 2014-10-09 1918 * differentials of processors that have their worker
7cc36bbddde5cd Christoph Lameter 2014-10-09 1919 * threads for vm statistics updates disabled because of
7cc36bbddde5cd Christoph Lameter 2014-10-09 1920 * inactivity.
7cc36bbddde5cd Christoph Lameter 2014-10-09 1921 */
7cc36bbddde5cd Christoph Lameter 2014-10-09 @1922 static void vmstat_shepherd(struct work_struct *w);
7cc36bbddde5cd Christoph Lameter 2014-10-09 1923
0eb77e98803219 Christoph Lameter 2016-01-14 @1924 static DECLARE_DEFERRABLE_WORK(shepherd, vmstat_shepherd);
7cc36bbddde5cd Christoph Lameter 2014-10-09 1925
7cc36bbddde5cd Christoph Lameter 2014-10-09 1926 static void vmstat_shepherd(struct work_struct *w)
7cc36bbddde5cd Christoph Lameter 2014-10-09 1927 {
7cc36bbddde5cd Christoph Lameter 2014-10-09 1928 int cpu;
7cc36bbddde5cd Christoph Lameter 2014-10-09 1929
7cc36bbddde5cd Christoph Lameter 2014-10-09 1930 get_online_cpus();
7cc36bbddde5cd Christoph Lameter 2014-10-09 1931 /* Check processors whose vmstat worker threads have been disabled */
7b8da4c7f07774 Christoph Lameter 2016-05-20 1932 for_each_online_cpu(cpu) {
f01f17d3705bb6 Michal Hocko 2016-02-05 1933 struct delayed_work *dw = &per_cpu(vmstat_work, cpu);
7cc36bbddde5cd Christoph Lameter 2014-10-09 1934
7b8da4c7f07774 Christoph Lameter 2016-05-20 1935 if (!delayed_work_pending(dw) && need_update(cpu))
ce612879ddc78e Michal Hocko 2017-04-07 1936 queue_delayed_work_on(cpu, mm_percpu_wq, dw, 0);
fbcc8183a4f815 Jiang Biao 2021-02-25 1937
fbcc8183a4f815 Jiang Biao 2021-02-25 1938 cond_resched();
f01f17d3705bb6 Michal Hocko 2016-02-05 1939 }
7cc36bbddde5cd Christoph Lameter 2014-10-09 1940 put_online_cpus();
7cc36bbddde5cd Christoph Lameter 2014-10-09 1941
7cc36bbddde5cd Christoph Lameter 2014-10-09 1942 schedule_delayed_work(&shepherd,
7cc36bbddde5cd Christoph Lameter 2014-10-09 1943 round_jiffies_relative(sysctl_stat_interval));
d1187ed21026fd Christoph Lameter 2007-05-09 1944 }
d1187ed21026fd Christoph Lameter 2007-05-09 1945
7cc36bbddde5cd Christoph Lameter 2014-10-09 @1946 static void __init start_shepherd_timer(void)
d1187ed21026fd Christoph Lameter 2007-05-09 1947 {
7cc36bbddde5cd Christoph Lameter 2014-10-09 1948 int cpu;
7cc36bbddde5cd Christoph Lameter 2014-10-09 1949
7cc36bbddde5cd Christoph Lameter 2014-10-09 1950 for_each_possible_cpu(cpu)
ccde8bd4014eb2 Michal Hocko 2016-02-05 1951 INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu),
7cc36bbddde5cd Christoph Lameter 2014-10-09 1952 vmstat_update);
7cc36bbddde5cd Christoph Lameter 2014-10-09 1953
7cc36bbddde5cd Christoph Lameter 2014-10-09 1954 schedule_delayed_work(&shepherd,
7cc36bbddde5cd Christoph Lameter 2014-10-09 1955 round_jiffies_relative(sysctl_stat_interval));
d1187ed21026fd Christoph Lameter 2007-05-09 1956 }
d1187ed21026fd Christoph Lameter 2007-05-09 1957
03e86dba5b628a Tim Chen 2016-10-07 @1958 static void __init init_cpu_node_state(void)
03e86dba5b628a Tim Chen 2016-10-07 1959 {
4c501327b4c67f Sebastian Andrzej Siewior 2016-11-29 1960 int node;
03e86dba5b628a Tim Chen 2016-10-07 1961
4c501327b4c67f Sebastian Andrzej Siewior 2016-11-29 1962 for_each_online_node(node) {
4c501327b4c67f Sebastian Andrzej Siewior 2016-11-29 1963 if (cpumask_weight(cpumask_of_node(node)) > 0)
4c501327b4c67f Sebastian Andrzej Siewior 2016-11-29 1964 node_set_state(node, N_CPU);
4c501327b4c67f Sebastian Andrzej Siewior 2016-11-29 1965 }
03e86dba5b628a Tim Chen 2016-10-07 1966 }
03e86dba5b628a Tim Chen 2016-10-07 1967
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 @1968 static int vmstat_cpu_online(unsigned int cpu)
807a1bd2b2a388 Toshi Kani 2013-11-12 1969 {
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1970 refresh_zone_stat_thresholds();
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1971 node_set_state(cpu_to_node(cpu), N_CPU);
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1972 return 0;
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1973 }
807a1bd2b2a388 Toshi Kani 2013-11-12 1974
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 @1975 static int vmstat_cpu_down_prep(unsigned int cpu)
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1976 {
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1977 cancel_delayed_work_sync(&per_cpu(vmstat_work, cpu));
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1978 return 0;
807a1bd2b2a388 Toshi Kani 2013-11-12 1979 }
807a1bd2b2a388 Toshi Kani 2013-11-12 1980
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 @1981 static int vmstat_cpu_dead(unsigned int cpu)
df9ecaba3f152d Christoph Lameter 2006-08-31 1982 {
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1983 const struct cpumask *node_cpus;
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1984 int node;
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1985
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1986 node = cpu_to_node(cpu);
d1187ed21026fd Christoph Lameter 2007-05-09 1987
df9ecaba3f152d Christoph Lameter 2006-08-31 1988 refresh_zone_stat_thresholds();
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1989 node_cpus = cpumask_of_node(node);
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1990 if (cpumask_weight(node_cpus) > 0)
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1991 return 0;
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1992
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1993 node_clear_state(node, N_CPU);
5438da977f83c9 Sebastian Andrzej Siewior 2016-11-29 1994 return 0;
df9ecaba3f152d Christoph Lameter 2006-08-31 1995 }
df9ecaba3f152d Christoph Lameter 2006-08-31 1996
:::::: The code at line 1793 was first introduced by commit
:::::: 77461ab33229d48614402decfb1b2eaa6d446861 Make vm statistics update interval configurable
:::::: TO: Christoph Lameter <clameter@sgi.com>
:::::: CC: Linus Torvalds <torvalds@woody.linux-foundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 23068 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-04-19 17:43 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-19 17:43 [mel:mm-percpu-local_lock-v4r4 22/29] mm/vmstat.c:1793:5: error: section attribute cannot be specified for local variables 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.