Hi,

[auto build test ERROR on next-20160511]
[cannot apply to v4.6-rc7 v4.6-rc6 v4.6-rc5 v4.6]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Christoph-Lameter/Do-not-build-vmstat_refresh-if-there-is-no-procfs-support/20160511-233405
config: arm64-allnoconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 5.3.1-8) 5.3.1 20160205
reproduce:
        wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All error/warnings (new ones prefixed by >>):

   mm/vmstat.c: In function 'vmstat_update':
>> mm/vmstat.c:1436:45: error: 'vmstat_wq' undeclared (first use in this 
>> function)
      queue_delayed_work_on(smp_processor_id(), vmstat_wq,
                                                ^
   mm/vmstat.c:1436:45: note: each undeclared identifier is reported only once 
for each function it appears in
   In file included from include/asm-generic/percpu.h:6:0,
                    from arch/arm64/include/asm/percpu.h:276,
                    from include/linux/percpu.h:12,
                    from include/linux/percpu-rwsem.h:6,
                    from include/linux/fs.h:30,
                    from mm/vmstat.c:12:
>> mm/vmstat.c:1437:19: error: 'vmstat_work' undeclared (first use in this 
>> function)
        this_cpu_ptr(&vmstat_work),
                      ^
   include/linux/percpu-defs.h:206:47: note: in definition of macro 
'__verify_pcpu_ptr'
     const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \
                                                  ^
   include/linux/percpu-defs.h:239:27: note: in expansion of macro 'raw_cpu_ptr'
    #define this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
                              ^
>> mm/vmstat.c:1437:5: note: in expansion of macro 'this_cpu_ptr'
        this_cpu_ptr(&vmstat_work),
        ^
   In file included from include/linux/fs.h:32:0,
                    from mm/vmstat.c:12:
   mm/vmstat.c: In function 'quiet_vmstat':
   mm/vmstat.c:1480:42: error: 'vmstat_work' undeclared (first use in this 
function)
     if (!delayed_work_pending(this_cpu_ptr(&vmstat_work)))
                                             ^
   include/linux/workqueue.h:26:51: note: in definition of macro 
'work_data_bits'
    #define work_data_bits(work) ((unsigned long *)(&(work)->data))
                                                      ^
   include/linux/workqueue.h:271:2: note: in expansion of macro 'work_pending'
     work_pending(&(w)->work)
     ^
>> mm/vmstat.c:1480:7: note: in expansion of macro 'delayed_work_pending'
     if (!delayed_work_pending(this_cpu_ptr(&vmstat_work)))
          ^
   include/linux/percpu-defs.h:228:2: note: in expansion of macro 
'__verify_pcpu_ptr'
     __verify_pcpu_ptr(ptr);      \
     ^
   include/linux/percpu-defs.h:239:27: note: in expansion of macro 'raw_cpu_ptr'
    #define this_cpu_ptr(ptr) raw_cpu_ptr(ptr)
                              ^
   mm/vmstat.c:1480:28: note: in expansion of macro 'this_cpu_ptr'
     if (!delayed_work_pending(this_cpu_ptr(&vmstat_work)))
                               ^
   In file included from include/asm-generic/percpu.h:6:0,
                    from arch/arm64/include/asm/percpu.h:276,
                    from include/linux/percpu.h:12,
                    from include/linux/percpu-rwsem.h:6,
                    from include/linux/fs.h:30,
                    from mm/vmstat.c:12:
   mm/vmstat.c: In function 'vmstat_shepherd':
   mm/vmstat.c:1512:38: error: 'vmstat_work' undeclared (first use in this 
function)
      struct delayed_work *dw = &per_cpu(vmstat_work, cpu);
                                         ^
   include/linux/percpu-defs.h:206:47: note: in definition of macro 
'__verify_pcpu_ptr'
     const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \
                                                  ^
   include/linux/percpu-defs.h:256:29: note: in expansion of macro 'per_cpu_ptr'
    #define per_cpu(var, cpu) (*per_cpu_ptr(&(var), cpu))
                                ^
>> mm/vmstat.c:1512:30: note: in expansion of macro 'per_cpu'
      struct delayed_work *dw = &per_cpu(vmstat_work, cpu);
                                 ^
   mm/vmstat.c:1515:32: error: 'vmstat_wq' undeclared (first use in this 
function)
        queue_delayed_work_on(cpu, vmstat_wq, dw, 0);
                                   ^
   In file included from include/linux/fs.h:32:0,
                    from mm/vmstat.c:12:
   mm/vmstat.c: In function 'start_shepherd_timer':
   mm/vmstat.c:1528:37: error: 'vmstat_work' undeclared (first use in this 
function)
      INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu),
                                        ^
   include/linux/workqueue.h:216:16: note: in definition of macro '__INIT_WORK'
      __init_work((_work), _onstack);    \
                   ^
   include/linux/workqueue.h:231:3: note: in expansion of macro 'INIT_WORK'
      INIT_WORK(&(_work)->work, (_func));   \
      ^
   include/linux/workqueue.h:253:2: note: in expansion of macro 
'__INIT_DELAYED_WORK'
     __INIT_DELAYED_WORK(_work, _func, TIMER_DEFERRABLE)
     ^
>> mm/vmstat.c:1528:3: note: in expansion of macro 'INIT_DEFERRABLE_WORK'
      INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu),
      ^
   include/linux/percpu-defs.h:222:2: note: in expansion of macro 
'__verify_pcpu_ptr'
     __verify_pcpu_ptr(ptr);      \
     ^
>> mm/vmstat.c:1528:24: note: in expansion of macro 'per_cpu_ptr'
      INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu),
                           ^
   mm/vmstat.c:1531:2: error: 'vmstat_wq' undeclared (first use in this 
function)
     vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
     ^
   In file included from include/asm-generic/percpu.h:6:0,
                    from arch/arm64/include/asm/percpu.h:276,
                    from include/linux/percpu.h:12,
                    from include/linux/percpu-rwsem.h:6,
                    from include/linux/fs.h:30,
                    from mm/vmstat.c:12:
   mm/vmstat.c: In function 'vmstat_cpuup_callback':
   mm/vmstat.c:1568:37: error: 'vmstat_work' undeclared (first use in this 
function)
      cancel_delayed_work_sync(&per_cpu(vmstat_work, cpu));
                                        ^
   include/linux/percpu-defs.h:206:47: note: in definition of macro 
'__verify_pcpu_ptr'
     const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \
                                                  ^
   include/linux/percpu-defs.h:256:29: note: in expansion of macro 'per_cpu_ptr'
    #define per_cpu(var, cpu) (*per_cpu_ptr(&(var), cpu))
                                ^
   mm/vmstat.c:1568:29: note: in expansion of macro 'per_cpu'
      cancel_delayed_work_sync(&per_cpu(vmstat_work, cpu));
                                ^

vim +/vmstat_wq +1436 mm/vmstat.c

0eb77e988 Christoph Lameter 2016-01-14  1430    if (refresh_cpu_vm_stats(true)) 
{
7cc36bbdd Christoph Lameter 2014-10-09  1431            /*
7cc36bbdd Christoph Lameter 2014-10-09  1432             * Counters were 
updated so we expect more updates
7cc36bbdd Christoph Lameter 2014-10-09  1433             * to occur in the 
future. Keep on running the
7cc36bbdd Christoph Lameter 2014-10-09  1434             * update worker thread.
7cc36bbdd Christoph Lameter 2014-10-09  1435             */
373ccbe59 Michal Hocko      2015-12-11 @1436            
queue_delayed_work_on(smp_processor_id(), vmstat_wq,
176bed1de Linus Torvalds    2015-10-15 @1437                            
this_cpu_ptr(&vmstat_work),
98f4ebb29 Anton Blanchard   2009-04-02  1438                            
round_jiffies_relative(sysctl_stat_interval));
f01f17d37 Michal Hocko      2016-02-05  1439    }
7cc36bbdd Christoph Lameter 2014-10-09  1440  }
7cc36bbdd Christoph Lameter 2014-10-09  1441  
7cc36bbdd Christoph Lameter 2014-10-09  1442  /*
0eb77e988 Christoph Lameter 2016-01-14  1443   * Switch off vmstat processing 
and then fold all the remaining differentials
0eb77e988 Christoph Lameter 2016-01-14  1444   * until the diffs stay at zero. 
The function is used by NOHZ and can only be
0eb77e988 Christoph Lameter 2016-01-14  1445   * invoked when tick processing 
is not active.
0eb77e988 Christoph Lameter 2016-01-14  1446   */
0eb77e988 Christoph Lameter 2016-01-14  1447  /*
7cc36bbdd Christoph Lameter 2014-10-09  1448   * Check if the diffs for a 
certain cpu indicate that
7cc36bbdd Christoph Lameter 2014-10-09  1449   * an update is needed.
7cc36bbdd Christoph Lameter 2014-10-09  1450   */
7cc36bbdd Christoph Lameter 2014-10-09  1451  static bool need_update(int cpu)
7cc36bbdd Christoph Lameter 2014-10-09  1452  {
7cc36bbdd Christoph Lameter 2014-10-09  1453    struct zone *zone;
7cc36bbdd Christoph Lameter 2014-10-09  1454  
7cc36bbdd Christoph Lameter 2014-10-09  1455    for_each_populated_zone(zone) {
7cc36bbdd Christoph Lameter 2014-10-09  1456            struct per_cpu_pageset 
*p = per_cpu_ptr(zone->pageset, cpu);
7cc36bbdd Christoph Lameter 2014-10-09  1457  
7cc36bbdd Christoph Lameter 2014-10-09  1458            
BUILD_BUG_ON(sizeof(p->vm_stat_diff[0]) != 1);
7cc36bbdd Christoph Lameter 2014-10-09  1459            /*
7cc36bbdd Christoph Lameter 2014-10-09  1460             * The fast way of 
checking if there are any vmstat diffs.
7cc36bbdd Christoph Lameter 2014-10-09  1461             * This works because 
the diffs are byte sized items.
7cc36bbdd Christoph Lameter 2014-10-09  1462             */
7cc36bbdd Christoph Lameter 2014-10-09  1463            if 
(memchr_inv(p->vm_stat_diff, 0, NR_VM_ZONE_STAT_ITEMS))
7cc36bbdd Christoph Lameter 2014-10-09  1464                    return true;
7cc36bbdd Christoph Lameter 2014-10-09  1465  
7cc36bbdd Christoph Lameter 2014-10-09  1466    }
7cc36bbdd Christoph Lameter 2014-10-09  1467    return false;
7cc36bbdd Christoph Lameter 2014-10-09  1468  }
7cc36bbdd Christoph Lameter 2014-10-09  1469  
043daba0d Christoph Lameter 2016-05-11  1470  /*
043daba0d Christoph Lameter 2016-05-11  1471   * Switch off vmstat processing 
and then fold all the remaining differentials
043daba0d Christoph Lameter 2016-05-11  1472   * until the diffs stay at zero. 
The function is used by NOHZ and can only be
043daba0d Christoph Lameter 2016-05-11  1473   * invoked when tick processing 
is not active.
043daba0d Christoph Lameter 2016-05-11  1474   */
f01f17d37 Michal Hocko      2016-02-05  1475  void quiet_vmstat(void)
f01f17d37 Michal Hocko      2016-02-05  1476  {
f01f17d37 Michal Hocko      2016-02-05  1477    if (system_state != 
SYSTEM_RUNNING)
f01f17d37 Michal Hocko      2016-02-05  1478            return;
f01f17d37 Michal Hocko      2016-02-05  1479  
043daba0d Christoph Lameter 2016-05-11 @1480    if 
(!delayed_work_pending(this_cpu_ptr(&vmstat_work)))
f01f17d37 Michal Hocko      2016-02-05  1481            return;
f01f17d37 Michal Hocko      2016-02-05  1482  
f01f17d37 Michal Hocko      2016-02-05  1483    if 
(!need_update(smp_processor_id()))
f01f17d37 Michal Hocko      2016-02-05  1484            return;
f01f17d37 Michal Hocko      2016-02-05  1485  
f01f17d37 Michal Hocko      2016-02-05  1486    /*
f01f17d37 Michal Hocko      2016-02-05  1487     * Just refresh counters and do 
not care about the pending delayed
f01f17d37 Michal Hocko      2016-02-05  1488     * vmstat_update. It doesn't 
fire that often to matter and canceling
f01f17d37 Michal Hocko      2016-02-05  1489     * it would be too expensive 
from this path.
f01f17d37 Michal Hocko      2016-02-05  1490     * vmstat_shepherd will take 
care about that for us.
f01f17d37 Michal Hocko      2016-02-05  1491     */
f01f17d37 Michal Hocko      2016-02-05  1492    refresh_cpu_vm_stats(false);
f01f17d37 Michal Hocko      2016-02-05  1493  }
f01f17d37 Michal Hocko      2016-02-05  1494  
7cc36bbdd Christoph Lameter 2014-10-09  1495  /*
7cc36bbdd Christoph Lameter 2014-10-09  1496   * Shepherd worker thread that 
checks the
7cc36bbdd Christoph Lameter 2014-10-09  1497   * differentials of processors 
that have their worker
7cc36bbdd Christoph Lameter 2014-10-09  1498   * threads for vm statistics 
updates disabled because of
7cc36bbdd Christoph Lameter 2014-10-09  1499   * inactivity.
7cc36bbdd Christoph Lameter 2014-10-09  1500   */
7cc36bbdd Christoph Lameter 2014-10-09  1501  static void 
vmstat_shepherd(struct work_struct *w);
7cc36bbdd Christoph Lameter 2014-10-09  1502  
0eb77e988 Christoph Lameter 2016-01-14  1503  static 
DECLARE_DEFERRABLE_WORK(shepherd, vmstat_shepherd);
7cc36bbdd Christoph Lameter 2014-10-09  1504  
7cc36bbdd Christoph Lameter 2014-10-09  1505  static void 
vmstat_shepherd(struct work_struct *w)
7cc36bbdd Christoph Lameter 2014-10-09  1506  {
7cc36bbdd Christoph Lameter 2014-10-09  1507    int cpu;
7cc36bbdd Christoph Lameter 2014-10-09  1508  
7cc36bbdd Christoph Lameter 2014-10-09  1509    get_online_cpus();
7cc36bbdd Christoph Lameter 2014-10-09  1510    /* Check processors whose 
vmstat worker threads have been disabled */
043daba0d Christoph Lameter 2016-05-11  1511    for_each_online_cpu(cpu) {
f01f17d37 Michal Hocko      2016-02-05 @1512            struct delayed_work *dw 
= &per_cpu(vmstat_work, cpu);
7cc36bbdd Christoph Lameter 2014-10-09  1513  
043daba0d Christoph Lameter 2016-05-11  1514            if 
(!delayed_work_pending(dw) && need_update(cpu))
f01f17d37 Michal Hocko      2016-02-05  1515                            
queue_delayed_work_on(cpu, vmstat_wq, dw, 0);
f01f17d37 Michal Hocko      2016-02-05  1516    }
7cc36bbdd Christoph Lameter 2014-10-09  1517    put_online_cpus();
7cc36bbdd Christoph Lameter 2014-10-09  1518  
7cc36bbdd Christoph Lameter 2014-10-09  1519    schedule_delayed_work(&shepherd,
7cc36bbdd Christoph Lameter 2014-10-09  1520            
round_jiffies_relative(sysctl_stat_interval));
d1187ed21 Christoph Lameter 2007-05-09  1521  }
d1187ed21 Christoph Lameter 2007-05-09  1522  
7cc36bbdd Christoph Lameter 2014-10-09  1523  static void __init 
start_shepherd_timer(void)
d1187ed21 Christoph Lameter 2007-05-09  1524  {
7cc36bbdd Christoph Lameter 2014-10-09  1525    int cpu;
7cc36bbdd Christoph Lameter 2014-10-09  1526  
7cc36bbdd Christoph Lameter 2014-10-09  1527    for_each_possible_cpu(cpu)
ccde8bd40 Michal Hocko      2016-02-05 @1528            
INIT_DEFERRABLE_WORK(per_cpu_ptr(&vmstat_work, cpu),
7cc36bbdd Christoph Lameter 2014-10-09  1529                    vmstat_update);
7cc36bbdd Christoph Lameter 2014-10-09  1530  
751e5f5c7 Michal Hocko      2016-01-08  1531    vmstat_wq = 
alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);

:::::: The code at line 1436 was first introduced by commit
:::::: 373ccbe5927034b55bdc80b0f8b54d6e13fe8d12 mm, vmstat: allow WQ 
concurrency to discover memory reclaim doesn't make any progress

:::::: TO: Michal Hocko <mho...@suse.com>
:::::: CC: Linus Torvalds <torva...@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: Binary data

Reply via email to