Hi Zhaoyang, Thank you for the patch! Yet something to improve: [auto build test ERROR on tip/perf/core] [also build test ERROR on v4.16-rc7 next-20180329] [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/Zhaoyang-Huang/kernel-trace-check-the-val-against-the-available-mem/20180330-140917 config: x86_64-randconfig-x009-201812 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): kernel//trace/trace.c: In function 'get_available_mem': >> kernel//trace/trace.c:5992:16: error: implicit declaration of function 'global_page_state'; did you mean 'global_numa_state'? [-Werror=implicit-function-declaration] pages[lru] = global_page_state(NR_LRU_BASE + lru); ^~~~~~~~~~~~~~~~~ global_numa_state In file included from include/asm-generic/bug.h:18:0, from arch/x86/include/asm/bug.h:83, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from include/linux/ring_buffer.h:5, from kernel//trace/trace.c:14: include/linux/kernel.h:793:16: warning: comparison of distinct pointer types lacks a cast (void) (&min1 == &min2); \ ^ include/linux/kernel.h:802:2: note: in expansion of macro '__min' __min(typeof(x), typeof(y), \ ^~~~~ kernel//trace/trace.c:6004:3: note: in expansion of macro 'min' min(global_page_state(NR_SLAB_RECLAIMABLE) / 2, wmark_low); ^~~ Cyclomatic Complexity 5 include/linux/compiler.h:__read_once_size Cyclomatic Complexity 5 include/linux/compiler.h:__write_once_size Cyclomatic Complexity 2 arch/x86/include/asm/bitops.h:set_bit Cyclomatic Complexity 2 arch/x86/include/asm/bitops.h:clear_bit Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:constant_test_bit Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:variable_test_bit Cyclomatic Complexity 1 arch/x86/include/asm/bitops.h:fls64 Cyclomatic Complexity 1 arch/x86/include/asm/arch_hweight.h:__arch_hweight64 Cyclomatic Complexity 2 include/linux/bitops.h:hweight_long Cyclomatic Complexity 1 include/linux/log2.h:__ilog2_u64 Cyclomatic Complexity 1 include/linux/list.h:INIT_LIST_HEAD Cyclomatic Complexity 1 include/linux/list.h:__list_add_valid Cyclomatic Complexity 1 include/linux/list.h:__list_del_entry_valid Cyclomatic Complexity 2 include/linux/list.h:__list_add Cyclomatic Complexity 1 include/linux/list.h:list_add Cyclomatic Complexity 1 include/linux/list.h:__list_del Cyclomatic Complexity 2 include/linux/list.h:__list_del_entry Cyclomatic Complexity 1 include/linux/list.h:list_del Cyclomatic Complexity 1 arch/x86/include/asm/current.h:get_current Cyclomatic Complexity 1 include/asm-generic/getorder.h:__get_order Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_read Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_set Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_inc Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_dec Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_add_return Cyclomatic Complexity 1 arch/x86/include/asm/atomic.h:atomic_cmpxchg Cyclomatic Complexity 1 arch/x86/include/asm/atomic64_64.h:atomic64_read Cyclomatic Complexity 1 include/asm-generic/atomic-long.h:atomic_long_read Cyclomatic Complexity 1 include/linux/jump_label.h:static_key_count Cyclomatic Complexity 2 include/linux/jump_label.h:static_key_false Cyclomatic Complexity 1 include/linux/string.h:strnlen Cyclomatic Complexity 4 include/linux/string.h:strlen Cyclomatic Complexity 6 include/linux/string.h:strlcpy Cyclomatic Complexity 3 include/linux/string.h:memset Cyclomatic Complexity 4 include/linux/string.h:memcpy Cyclomatic Complexity 2 include/linux/string.h:strcpy Cyclomatic Complexity 3 include/linux/bitmap.h:bitmap_weight Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_check Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_set_cpu Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_test_cpu Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_weight Cyclomatic Complexity 1 include/linux/cpumask.h:cpumask_available Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_save_flags Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_irq_restore Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_irq_disable Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_irq_enable Cyclomatic Complexity 1 arch/x86/include/asm/paravirt.h:arch_local_irq_save Cyclomatic Complexity 1 include/linux/err.h:ERR_PTR Cyclomatic Complexity 1 include/linux/err.h:PTR_ERR Cyclomatic Complexity 1 arch/x86/include/asm/irqflags.h:arch_irqs_disabled_flags Cyclomatic Complexity 1 include/linux/thread_info.h:check_object_size Cyclomatic Complexity 5 include/linux/thread_info.h:check_copy_size Cyclomatic Complexity 1 arch/x86/include/asm/preempt.h:preempt_count Cyclomatic Complexity 1 arch/x86/include/asm/preempt.h:test_preempt_need_resched Cyclomatic Complexity 5 arch/x86/include/asm/preempt.h:__preempt_count_add Cyclomatic Complexity 1 arch/x86/include/asm/preempt.h:__preempt_count_dec_and_test Cyclomatic Complexity 1 arch/x86/include/asm/preempt.h:should_resched Cyclomatic Complexity 3 include/asm-generic/qspinlock.h:queued_spin_trylock Cyclomatic Complexity 2 include/asm-generic/qspinlock.h:queued_spin_lock Cyclomatic Complexity 1 include/linux/spinlock.h:spinlock_check Cyclomatic Complexity 1 include/linux/spinlock.h:spin_unlock_irqrestore Cyclomatic Complexity 1 include/linux/mutex.h:__mutex_owner Cyclomatic Complexity 1 include/linux/mutex.h:mutex_is_locked Cyclomatic Complexity 1 include/linux/topology.h:numa_node_id Cyclomatic Complexity 1 include/linux/topology.h:cpu_to_node Cyclomatic Complexity 1 include/linux/topology.h:numa_mem_id Cyclomatic Complexity 1 include/linux/dcache.h:d_inode Cyclomatic Complexity 1 include/linux/uidgid.h:__kuid_val Cyclomatic Complexity 1 include/linux/uidgid.h:from_kuid Cyclomatic Complexity 2 include/linux/uidgid.h:from_kuid_munged Cyclomatic Complexity 1 include/linux/fs.h:file_inode Cyclomatic Complexity 1 include/linux/mm.h:lowmem_page_address Cyclomatic Complexity 1 include/linux/seq_file.h:seq_user_ns Cyclomatic Complexity 1 arch/x86/include/asm/smap.h:clac Cyclomatic Complexity 1 arch/x86/include/asm/smap.h:stac Cyclomatic Complexity 1 arch/x86/include/asm/uaccess_64.h:copy_user_generic Cyclomatic Complexity 10 arch/x86/include/asm/uaccess_64.h:raw_copy_from_user Cyclomatic Complexity 1 include/linux/uaccess.h:__copy_from_user_inatomic Cyclomatic Complexity 2 include/linux/uaccess.h:copy_from_user Cyclomatic Complexity 2 include/linux/uaccess.h:copy_to_user Cyclomatic Complexity 28 include/linux/slab.h:kmalloc_index vim +5992 kernel//trace/trace.c 5977 5978 static long get_available_mem(void) 5979 { 5980 struct sysinfo i; 5981 long available; 5982 unsigned long pagecache; 5983 unsigned long wmark_low = 0; 5984 unsigned long pages[NR_LRU_LISTS]; 5985 struct zone *zone; 5986 int lru; 5987 5988 si_meminfo(&i); 5989 si_swapinfo(&i); 5990 5991 for (lru = LRU_BASE; lru < NR_LRU_LISTS; lru++) > 5992 pages[lru] = global_page_state(NR_LRU_BASE + lru); 5993 5994 for_each_zone(zone) 5995 wmark_low += zone->watermark[WMARK_LOW]; 5996 5997 available = i.freeram - wmark_low; 5998 5999 pagecache = pages[LRU_ACTIVE_FILE] + pages[LRU_INACTIVE_FILE]; 6000 pagecache -= min(pagecache / 2, wmark_low); 6001 available += pagecache; 6002 6003 available += global_page_state(NR_SLAB_RECLAIMABLE) - 6004 min(global_page_state(NR_SLAB_RECLAIMABLE) / 2, wmark_low); 6005 6006 if (available < 0) 6007 available = 0; 6008 return available; 6009 } 6010 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation