Kernel
Threads by month
- ----- 2025 -----
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
February 2025
- 55 participants
- 312 discussions

[openeuler:OLK-6.6 1928/1928] kernel/sched/isolation.c:244:19: error: invalid storage class for function 'enhanced_isolcpus_setup'
by kernel test robot 16 Feb '25
by kernel test robot 16 Feb '25
16 Feb '25
Hi Xiongfeng,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 01e57e5fa297f937102f9b58ee7905f638b8450f
commit: 5f20541757730418065c3ae77dfdbcde3f523394 [1928/1928] blk-mq: avoid housekeeping CPUs scheduling a worker on a non-housekeeping CPU
config: loongarch-randconfig-r064-20250216 (https://download.01.org/0day-ci/archive/20250216/202502160734.p26JLJ7W-lkp@…)
compiler: loongarch64-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250216/202502160734.p26JLJ7W-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502160734.p26JLJ7W-lkp@intel.com/
All errors (new ones prefixed by >>):
| ^~~~~~~~~~~~~~
kernel/sched/isolation.c:54:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
54 | EXPORT_SYMBOL_GPL(housekeeping_any_cpu);
| ^~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:39:5: note: previous definition of 'housekeeping_any_cpu' with type 'int(enum hk_type)'
39 | int housekeeping_any_cpu(enum hk_type type)
| ^~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:63:19: error: non-static declaration of 'housekeeping_cpumask' follows static declaration
63 | EXPORT_SYMBOL_GPL(housekeeping_cpumask);
| ^~~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/sched/isolation.c:63:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
63 | EXPORT_SYMBOL_GPL(housekeeping_cpumask);
| ^~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:56:23: note: previous definition of 'housekeeping_cpumask' with type 'const struct cpumask *(enum hk_type)'
56 | const struct cpumask *housekeeping_cpumask(enum hk_type type)
| ^~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:71:19: error: non-static declaration of 'housekeeping_affine' follows static declaration
71 | EXPORT_SYMBOL_GPL(housekeeping_affine);
| ^~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/sched/isolation.c:71:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
71 | EXPORT_SYMBOL_GPL(housekeeping_affine);
| ^~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:65:6: note: previous definition of 'housekeeping_affine' with type 'void(struct task_struct *, enum hk_type)'
65 | void housekeeping_affine(struct task_struct *t, enum hk_type type)
| ^~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:80:19: error: non-static declaration of 'housekeeping_test_cpu' follows static declaration
80 | EXPORT_SYMBOL_GPL(housekeeping_test_cpu);
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/sched/isolation.c:80:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
80 | EXPORT_SYMBOL_GPL(housekeeping_test_cpu);
| ^~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:73:6: note: previous definition of 'housekeeping_test_cpu' with type 'bool(int, enum hk_type)' {aka '_Bool(int, enum hk_type)'}
73 | bool housekeeping_test_cpu(int cpu, enum hk_type type)
| ^~~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:100:20: error: invalid storage class for function 'housekeeping_setup_type'
100 | static void __init housekeeping_setup_type(enum hk_type type,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:109:19: error: invalid storage class for function 'housekeeping_setup'
109 | static int __init housekeeping_setup(char *str, unsigned long flags)
| ^~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:180:19: error: invalid storage class for function 'housekeeping_nohz_full_setup'
180 | static int __init housekeeping_nohz_full_setup(char *str)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:189:23: error: initializer element is not constant
189 | __setup("nohz_full=", housekeeping_nohz_full_setup);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/isolation.c:189:1: note: in expansion of macro '__setup'
189 | __setup("nohz_full=", housekeeping_nohz_full_setup);
| ^~~~~~~
kernel/sched/isolation.c:189:23: note: (near initialization for '__setup_housekeeping_nohz_full_setup.setup_func')
189 | __setup("nohz_full=", housekeeping_nohz_full_setup);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/isolation.c:189:1: note: in expansion of macro '__setup'
189 | __setup("nohz_full=", housekeeping_nohz_full_setup);
| ^~~~~~~
kernel/sched/isolation.c:191:19: error: invalid storage class for function 'housekeeping_isolcpus_setup'
191 | static int __init housekeeping_isolcpus_setup(char *str)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:241:22: error: initializer element is not constant
241 | __setup("isolcpus=", housekeeping_isolcpus_setup);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/isolation.c:241:1: note: in expansion of macro '__setup'
241 | __setup("isolcpus=", housekeeping_isolcpus_setup);
| ^~~~~~~
kernel/sched/isolation.c:241:22: note: (near initialization for '__setup_housekeeping_isolcpus_setup.setup_func')
241 | __setup("isolcpus=", housekeeping_isolcpus_setup);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/isolation.c:241:1: note: in expansion of macro '__setup'
241 | __setup("isolcpus=", housekeeping_isolcpus_setup);
| ^~~~~~~
>> kernel/sched/isolation.c:244:19: error: invalid storage class for function 'enhanced_isolcpus_setup'
244 | static int __init enhanced_isolcpus_setup(char *str)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:249:30: error: initializer element is not constant
249 | __setup("enhanced_isolcpus", enhanced_isolcpus_setup);
| ^~~~~~~~~~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/isolation.c:249:1: note: in expansion of macro '__setup'
249 | __setup("enhanced_isolcpus", enhanced_isolcpus_setup);
| ^~~~~~~
kernel/sched/isolation.c:249:30: note: (near initialization for '__setup_enhanced_isolcpus_setup.setup_func')
249 | __setup("enhanced_isolcpus", enhanced_isolcpus_setup);
| ^~~~~~~~~~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/isolation.c:249:1: note: in expansion of macro '__setup'
249 | __setup("enhanced_isolcpus", enhanced_isolcpus_setup);
| ^~~~~~~
In file included from kernel/sched/build_utility.c:109:
kernel/sched/autogroup.c:7:28: error: section attribute cannot be specified for local variables
7 | unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:15:35: error: initializer element is not constant
15 | .data = &sysctl_sched_autogroup_enabled,
| ^
kernel/sched/autogroup.c:15:35: note: (near initialization for 'sched_autogroup_sysctls[0].data')
kernel/sched/autogroup.c:25:20: error: invalid storage class for function 'sched_autogroup_sysctl_init'
25 | static void __init sched_autogroup_sysctl_init(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:47:20: error: invalid storage class for function 'autogroup_destroy'
47 | static inline void autogroup_destroy(struct kref *kref)
| ^~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:60:20: error: invalid storage class for function 'autogroup_kref_put'
60 | static inline void autogroup_kref_put(struct autogroup *ag)
| ^~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:65:33: error: invalid storage class for function 'autogroup_kref_get'
65 | static inline struct autogroup *autogroup_kref_get(struct autogroup *ag)
| ^~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:71:33: error: invalid storage class for function 'autogroup_task_get'
71 | static inline struct autogroup *autogroup_task_get(struct task_struct *p)
| ^~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:85:33: error: invalid storage class for function 'autogroup_create'
85 | static inline struct autogroup *autogroup_create(void)
| ^~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:158:1: error: invalid storage class for function 'autogroup_move_group'
158 | autogroup_move_group(struct task_struct *p, struct autogroup *ag)
| ^~~~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:202:15: error: non-static declaration of 'sched_autogroup_create_attach' follows static declaration
202 | EXPORT_SYMBOL(sched_autogroup_create_attach);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:86:41: note: in expansion of macro '_EXPORT_SYMBOL'
86 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
kernel/sched/autogroup.c:202:1: note: in expansion of macro 'EXPORT_SYMBOL'
202 | EXPORT_SYMBOL(sched_autogroup_create_attach);
| ^~~~~~~~~~~~~
kernel/sched/autogroup.c:193:6: note: previous definition of 'sched_autogroup_create_attach' with type 'void(struct task_struct *)'
193 | void sched_autogroup_create_attach(struct task_struct *p)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:209:15: error: non-static declaration of 'sched_autogroup_detach' follows static declaration
209 | EXPORT_SYMBOL(sched_autogroup_detach);
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:86:41: note: in expansion of macro '_EXPORT_SYMBOL'
86 | #define EXPORT_SYMBOL(sym) _EXPORT_SYMBOL(sym, "")
| ^~~~~~~~~~~~~~
kernel/sched/autogroup.c:209:1: note: in expansion of macro 'EXPORT_SYMBOL'
209 | EXPORT_SYMBOL(sched_autogroup_detach);
| ^~~~~~~~~~~~~
kernel/sched/autogroup.c:205:6: note: previous definition of 'sched_autogroup_detach' with type 'void(struct task_struct *)'
205 | void sched_autogroup_detach(struct task_struct *p)
| ^~~~~~~~~~~~~~~~~~~~~~
kernel/sched/autogroup.c:221:19: error: invalid storage class for function 'setup_autogroup'
221 | static int __init setup_autogroup(char *str)
| ^~~~~~~~~~~~~~~
kernel/sched/autogroup.c:227:24: error: initializer element is not constant
227 | __setup("noautogroup", setup_autogroup);
| ^~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/autogroup.c:227:1: note: in expansion of macro '__setup'
227 | __setup("noautogroup", setup_autogroup);
| ^~~~~~~
kernel/sched/autogroup.c:227:24: note: (near initialization for '__setup_setup_autogroup.setup_func')
227 | __setup("noautogroup", setup_autogroup);
| ^~~~~~~~~~~~~~~
include/linux/init.h:343:46: note: in definition of macro '__setup_param'
343 | = { __setup_str_##unique_id, fn, early }
| ^~
kernel/sched/autogroup.c:227:1: note: in expansion of macro '__setup'
227 | __setup("noautogroup", setup_autogroup);
| ^~~~~~~
vim +/enhanced_isolcpus_setup +244 kernel/sched/isolation.c
242
243 bool enhanced_isolcpus;
> 244 static int __init enhanced_isolcpus_setup(char *str)
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0

[openeuler:OLK-6.6] BUILD REGRESSION 01e57e5fa297f937102f9b58ee7905f638b8450f
by kernel test robot 16 Feb '25
by kernel test robot 16 Feb '25
16 Feb '25
tree/branch: https://gitee.com/openeuler/kernel.git OLK-6.6
branch HEAD: 01e57e5fa297f937102f9b58ee7905f638b8450f !15083 mm/vmalloc: combine all TLB flush operations of KASAN shadow virtual address into one operation
Error/Warning ids grouped by kconfigs:
recent_errors
|-- arm64-alldefconfig
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-allmodconfig
| |-- mm-dynamic_pool.c:warning:variable-ret-is-uninitialized-when-used-here
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-memcontrol.c:warning:no-previous-prototype-for-function-hisi_oom_recover
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-function-cache_limit_mbytes_sysctl_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-function-cache_reclaim_enable_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-function-cache_reclaim_sysctl_handler
| |-- mm-share_pool.c:warning:Function-parameter-or-member-node_id-not-described-in-sp_area_alloc
| |-- mm-share_pool.c:warning:Function-parameter-or-member-spg_id-not-described-in-mg_sp_unshare
| |-- mm-share_pool.c:warning:duplicate-section-name-Return
| |-- mm-share_pool.c:warning:expecting-prototype-for-mp_sp_group_id_by_pid().-Prototype-was-for-mg_sp_group_id_by_pid()-instead
| |-- mm-share_pool.c:warning:variable-is_hugepage-set-but-not-used
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-allnoconfig
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-ARM64_ERRATUM_845719-when-selected-by-ARCH_MXC
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-PGP_KEY_PARSER-when-selected-by-PGP_PRELOAD
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-PGP_PRELOAD-when-selected-by-PGP_PRELOAD_PUBLIC_KEYS
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-RESCTRL_FS-when-selected-by-ARM64_MPAM
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-defconfig
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-randconfig-001-20250215
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-randconfig-002-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-randconfig-003-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-randconfig-004-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- arm64-randconfig-r121-20250216
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- loongarch-allmodconfig
| |-- include-trace-stages-init.h:warning:str__bonding__trace_system_name-defined-but-not-used
| |-- include-trace-stages-init.h:warning:str__fs__trace_system_name-defined-but-not-used
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_limit_mbytes_sysctl_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_enable_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_sysctl_handler
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- loongarch-allnoconfig
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-PGP_KEY_PARSER-when-selected-by-PGP_PRELOAD
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-PGP_PRELOAD-when-selected-by-PGP_PRELOAD_PUBLIC_KEYS
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- loongarch-allyesconfig
| |-- include-trace-stages-init.h:warning:str__bonding__trace_system_name-defined-but-not-used
| |-- include-trace-stages-init.h:warning:str__fs__trace_system_name-defined-but-not-used
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_limit_mbytes_sysctl_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_enable_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_sysctl_handler
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- loongarch-randconfig-001-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- loongarch-randconfig-002-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- loongarch-randconfig-r062-20250216
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_limit_mbytes_sysctl_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_enable_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_sysctl_handler
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- loongarch-randconfig-r064-20250216
| |-- include-linux-compiler-gcc.h:warning:alias-attribute-ignored
| |-- include-linux-syscalls.h:error:implicit-declaration-of-function-__do_sys_membarrier
| |-- include-linux-syscalls.h:error:invalid-storage-class-for-function-__do_sys_membarrier
| |-- include-linux-syscalls.h:error:static-declaration-of-__se_sys_membarrier-follows-non-static-declaration
| |-- include-linux-syscalls.h:warning:__se_sys_membarrier-defined-but-not-used
| |-- kernel-sched-autogroup.c:error:initializer-element-is-not-constant
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-autogroup_create
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-autogroup_destroy
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-autogroup_kref_get
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-autogroup_kref_put
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-autogroup_move_group
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-autogroup_task_get
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-sched_autogroup_sysctl_init
| |-- kernel-sched-autogroup.c:error:invalid-storage-class-for-function-setup_autogroup
| |-- kernel-sched-autogroup.c:error:non-static-declaration-of-sched_autogroup_create_attach-follows-static-declaration
| |-- kernel-sched-autogroup.c:error:non-static-declaration-of-sched_autogroup_detach-follows-static-declaration
| |-- kernel-sched-autogroup.c:error:section-attribute-cannot-be-specified-for-local-variables
| |-- kernel-sched-autogroup.c:warning:autogroup_free-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:autogroup_init-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:autogroup_path-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:proc_sched_autogroup_set_nice-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:proc_sched_autogroup_show_task-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:sched_autogroup_exit-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:sched_autogroup_exit_task-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:sched_autogroup_fork-defined-but-not-used
| |-- kernel-sched-autogroup.c:warning:task_wants_autogroup-defined-but-not-used
| |-- kernel-sched-isolation.c:error:extern-declaration-of-housekeeping_overridden-follows-declaration-with-no-linkage
| |-- kernel-sched-isolation.c:error:initializer-element-is-not-constant
| |-- kernel-sched-isolation.c:error:invalid-storage-class-for-function-housekeeping_isolcpus_setup
| |-- kernel-sched-isolation.c:error:invalid-storage-class-for-function-housekeeping_nohz_full_setup
| |-- kernel-sched-isolation.c:error:invalid-storage-class-for-function-housekeeping_setup
| |-- kernel-sched-isolation.c:error:invalid-storage-class-for-function-housekeeping_setup_type
| |-- kernel-sched-isolation.c:error:non-static-declaration-of-housekeeping_affine-follows-static-declaration
| |-- kernel-sched-isolation.c:error:non-static-declaration-of-housekeeping_any_cpu-follows-static-declaration
| |-- kernel-sched-isolation.c:error:non-static-declaration-of-housekeeping_cpumask-follows-static-declaration
| |-- kernel-sched-isolation.c:error:non-static-declaration-of-housekeeping_enabled-follows-static-declaration
| |-- kernel-sched-isolation.c:error:non-static-declaration-of-housekeeping_test_cpu-follows-static-declaration
| |-- kernel-sched-isolation.c:warning:housekeeping_init-defined-but-not-used
| |-- kernel-sched-psi.c:error:initializer-element-is-not-constant
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-get_stat_names
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_cpu_open
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_cpu_show
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_cpu_write
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_fop_poll
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_fop_release
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_io_open
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_io_show
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_io_write
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_memory_open
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_memory_show
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_memory_write
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_proc_init
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_stat_open
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-psi_write
| |-- kernel-sched-psi.c:error:invalid-storage-class-for-function-system_psi_stat_show
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_limit_mbytes_sysctl_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_enable_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-cache_reclaim_sysctl_handler
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-allnoconfig
| |-- include-linux-sched-signal.h:linux-kabi.h-is-included-more-than-once.
| |-- include-net-tcp.h:linux-kabi.h-is-included-more-than-once.
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-PGP_KEY_PARSER-when-selected-by-PGP_PRELOAD
| |-- kismet:WARNING:unmet-direct-dependencies-detected-for-PGP_PRELOAD-when-selected-by-PGP_PRELOAD_PUBLIC_KEYS
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-allyesconfig
| |-- mm-dynamic_pool.c:warning:variable-ret-is-uninitialized-when-used-here
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-function-cache_limit_mbytes_sysctl_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-function-cache_reclaim_enable_handler
| |-- mm-page_cache_limit.c:warning:no-previous-prototype-for-function-cache_reclaim_sysctl_handler
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-buildonly-randconfig-001-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-memcontrol.c:warning:mem_cgroup_check_swap_for_v1-defined-but-not-used
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-buildonly-randconfig-002-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-buildonly-randconfig-003-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-buildonly-randconfig-004-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-buildonly-randconfig-005-20250215
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
|-- x86_64-buildonly-randconfig-006-20250215
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
| |-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
| `-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
`-- x86_64-defconfig
|-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
|-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
|-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
|-- mm-oom_kill.c:warning:Function-parameter-or-member-oc-not-described-in-oom_next_task
|-- mm-oom_kill.c:warning:Function-parameter-or-member-points-not-described-in-oom_next_task
|-- mm-oom_kill.c:warning:Function-parameter-or-member-task-not-described-in-oom_next_task
|-- mm-oom_kill.c:warning:expecting-prototype-for-We-choose-the-task-in-low().-Prototype-was-for-oom_next_task()-instead
`-- mm-vmalloc.c:warning:Function-parameter-or-member-pgoff-not-described-in-remap_vmalloc_hugepage_range_partial
elapsed time: 921m
configs tested: 21
configs skipped: 115
tested configs:
arm64 alldefconfig gcc-14.2.0
arm64 allmodconfig clang-18
arm64 allnoconfig gcc-14.2.0
arm64 defconfig gcc-14.2.0
arm64 randconfig-001-20250215 clang-21
arm64 randconfig-002-20250215 gcc-14.2.0
arm64 randconfig-003-20250215 clang-17
arm64 randconfig-004-20250215 gcc-14.2.0
loongarch allmodconfig gcc-14.2.0
loongarch allnoconfig gcc-14.2.0
loongarch randconfig-001-20250215 gcc-14.2.0
loongarch randconfig-002-20250215 gcc-14.2.0
x86_64 allnoconfig clang-19
x86_64 allyesconfig clang-19
x86_64 buildonly-randconfig-001-20250215 gcc-12
x86_64 buildonly-randconfig-002-20250215 clang-19
x86_64 buildonly-randconfig-003-20250215 gcc-12
x86_64 buildonly-randconfig-004-20250215 clang-19
x86_64 buildonly-randconfig-005-20250215 clang-19
x86_64 buildonly-randconfig-006-20250215 clang-19
x86_64 defconfig gcc-11
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0

[openeuler:OLK-6.6 1928/1928] kernel/sched/psi.c:1763:12: error: invalid storage class for function 'psi_io_show'
by kernel test robot 16 Feb '25
by kernel test robot 16 Feb '25
16 Feb '25
Hi Lu,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 01e57e5fa297f937102f9b58ee7905f638b8450f
commit: 654944510822988390470cbc5b6f914c19dd9b88 [1928/1928] sched/psi: add cpu fine grained stall tracking in pressure.stat
config: loongarch-randconfig-r064-20250216 (https://download.01.org/0day-ci/archive/20250216/202502160550.E90uGy3T-lkp@…)
compiler: loongarch64-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250216/202502160550.E90uGy3T-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502160550.E90uGy3T-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
kernel/sched/psi.c:447:13: error: invalid storage class for function 'psi_stat_flags_change'
447 | static void psi_stat_flags_change(struct task_struct *task, int *stat_set,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/sched/psi.c:469:13: error: invalid storage class for function 'get_recent_stat_times'
469 | static void get_recent_stat_times(struct psi_group *group, int cpu,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/sched/psi.c:516:20: error: invalid storage class for function 'update_throttle_type'
516 | static inline void update_throttle_type(struct task_struct *task, int cpu,
| ^~~~~~~~~~~~~~~~~~~~
kernel/sched/psi.c:520:13: error: invalid storage class for function 'collect_percpu_times'
520 | static void collect_percpu_times(struct psi_group *group,
| ^~~~~~~~~~~~~~~~~~~~
kernel/sched/psi.c:588:13: error: invalid storage class for function 'window_reset'
588 | static void window_reset(struct psi_window *win, u64 now, u64 value,
| ^~~~~~~~~~~~
kernel/sched/psi.c:607:12: error: invalid storage class for function 'window_update'
607 | static u64 window_update(struct psi_window *win, u64 now, u64 value)
| ^~~~~~~~~~~~~
kernel/sched/psi.c:633:12: error: invalid storage class for function 'update_triggers'
633 | static u64 update_triggers(struct psi_group *group, u64 now, bool *update_total,
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:706:12: error: invalid storage class for function 'update_averages'
706 | static u64 update_averages(struct psi_group *group, u64 now)
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:771:13: error: invalid storage class for function 'psi_avgs_work'
771 | static void psi_avgs_work(struct work_struct *work)
| ^~~~~~~~~~~~~
kernel/sched/psi.c:807:13: error: invalid storage class for function 'init_rtpoll_triggers'
807 | static void init_rtpoll_triggers(struct psi_group *group, u64 now)
| ^~~~~~~~~~~~~~~~~~~~
kernel/sched/psi.c:820:13: error: invalid storage class for function 'psi_schedule_rtpoll_work'
820 | static void psi_schedule_rtpoll_work(struct psi_group *group, unsigned long delay,
| ^~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/psi.c:847:13: error: invalid storage class for function 'psi_rtpoll_work'
847 | static void psi_rtpoll_work(struct psi_group *group)
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:931:12: error: invalid storage class for function 'psi_rtpoll_worker'
931 | static int psi_rtpoll_worker(void *data)
| ^~~~~~~~~~~~~~~~~
kernel/sched/psi.c:949:13: error: invalid storage class for function 'poll_timer_fn'
949 | static void poll_timer_fn(struct timer_list *t)
| ^~~~~~~~~~~~~
kernel/sched/psi.c:957:13: error: invalid storage class for function 'record_times'
957 | static void record_times(struct psi_group_cpu *groupc, u64 now)
| ^~~~~~~~~~~~
kernel/sched/psi.c:990:13: error: invalid storage class for function 'psi_group_change'
990 | static void psi_group_change(struct psi_group *group, int cpu,
| ^~~~~~~~~~~~~~~~
kernel/sched/psi.c:1106:13: error: invalid storage class for function 'task_is_in_psi_v1'
1106 | static bool task_is_in_psi_v1(void)
| ^~~~~~~~~~~~~~~~~
kernel/sched/psi.c:1112:33: error: invalid storage class for function 'task_psi_group'
1112 | static inline struct psi_group *task_psi_group(struct task_struct *task)
| ^~~~~~~~~~~~~~
kernel/sched/psi.c: In function 'task_psi_group':
kernel/sched/psi.c:1120:52: error: 'cpuacct_cgrp_id' undeclared (first use in this function); did you mean 'cpuset_cgrp_id'?
1120 | cgroup = task_cgroup(task, cpuacct_cgrp_id);
| ^~~~~~~~~~~~~~~
| cpuset_cgrp_id
kernel/sched/psi.c:1120:52: note: each undeclared identifier is reported only once for each function it appears in
kernel/sched/psi.c: In function 'record_stat_times':
kernel/sched/psi.c:1130:13: error: invalid storage class for function 'psi_flags_change'
1130 | static void psi_flags_change(struct task_struct *task, int clear, int set)
| ^~~~~~~~~~~~~~~~
In file included from include/linux/linkage.h:7,
from include/linux/kernel.h:17,
from include/linux/cpumask.h:10,
from include/linux/smp.h:13,
from include/linux/sched/clock.h:5,
from kernel/sched/build_utility.c:12:
kernel/sched/psi.c:1338:19: error: non-static declaration of 'psi_memstall_enter' follows static declaration
1338 | EXPORT_SYMBOL_GPL(psi_memstall_enter);
| ^~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/sched/psi.c:1338:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1338 | EXPORT_SYMBOL_GPL(psi_memstall_enter);
| ^~~~~~~~~~~~~~~~~
kernel/sched/psi.c:1306:6: note: previous definition of 'psi_memstall_enter' with type 'void(long unsigned int *)'
1306 | void psi_memstall_enter(unsigned long *flags)
| ^~~~~~~~~~~~~~~~~~
kernel/sched/psi.c:1370:19: error: non-static declaration of 'psi_memstall_leave' follows static declaration
1370 | EXPORT_SYMBOL_GPL(psi_memstall_leave);
| ^~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/sched/psi.c:1370:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
1370 | EXPORT_SYMBOL_GPL(psi_memstall_leave);
| ^~~~~~~~~~~~~~~~~
kernel/sched/psi.c:1346:6: note: previous definition of 'psi_memstall_leave' with type 'void(long unsigned int *)'
1346 | void psi_memstall_leave(unsigned long *flags)
| ^~~~~~~~~~~~~~~~~~
>> kernel/sched/psi.c:1763:12: error: invalid storage class for function 'psi_io_show'
1763 | static int psi_io_show(struct seq_file *m, void *v)
| ^~~~~~~~~~~
>> kernel/sched/psi.c:1768:12: error: invalid storage class for function 'psi_memory_show'
1768 | static int psi_memory_show(struct seq_file *m, void *v)
| ^~~~~~~~~~~~~~~
>> kernel/sched/psi.c:1773:12: error: invalid storage class for function 'psi_cpu_show'
1773 | static int psi_cpu_show(struct seq_file *m, void *v)
| ^~~~~~~~~~~~
>> kernel/sched/psi.c:1778:12: error: invalid storage class for function 'psi_io_open'
1778 | static int psi_io_open(struct inode *inode, struct file *file)
| ^~~~~~~~~~~
>> kernel/sched/psi.c:1783:12: error: invalid storage class for function 'psi_memory_open'
1783 | static int psi_memory_open(struct inode *inode, struct file *file)
| ^~~~~~~~~~~~~~~
>> kernel/sched/psi.c:1788:12: error: invalid storage class for function 'psi_cpu_open'
1788 | static int psi_cpu_open(struct inode *inode, struct file *file)
| ^~~~~~~~~~~~
>> kernel/sched/psi.c:1793:16: error: invalid storage class for function 'psi_write'
1793 | static ssize_t psi_write(struct file *file, const char __user *user_buf,
| ^~~~~~~~~
>> kernel/sched/psi.c:1836:16: error: invalid storage class for function 'psi_io_write'
1836 | static ssize_t psi_io_write(struct file *file, const char __user *user_buf,
| ^~~~~~~~~~~~
>> kernel/sched/psi.c:1842:16: error: invalid storage class for function 'psi_memory_write'
1842 | static ssize_t psi_memory_write(struct file *file, const char __user *user_buf,
| ^~~~~~~~~~~~~~~~
>> kernel/sched/psi.c:1848:16: error: invalid storage class for function 'psi_cpu_write'
1848 | static ssize_t psi_cpu_write(struct file *file, const char __user *user_buf,
| ^~~~~~~~~~~~~
>> kernel/sched/psi.c:1854:17: error: invalid storage class for function 'psi_fop_poll'
1854 | static __poll_t psi_fop_poll(struct file *file, poll_table *wait)
| ^~~~~~~~~~~~
>> kernel/sched/psi.c:1861:12: error: invalid storage class for function 'psi_fop_release'
1861 | static int psi_fop_release(struct inode *inode, struct file *file)
| ^~~~~~~~~~~~~~~
>> kernel/sched/psi.c:1870:27: error: initializer element is not constant
1870 | .proc_open = psi_io_open,
| ^~~~~~~~~~~
kernel/sched/psi.c:1870:27: note: (near initialization for 'psi_io_proc_ops.proc_open')
kernel/sched/psi.c:1873:27: error: initializer element is not constant
1873 | .proc_write = psi_io_write,
| ^~~~~~~~~~~~
kernel/sched/psi.c:1873:27: note: (near initialization for 'psi_io_proc_ops.proc_write')
kernel/sched/psi.c:1874:27: error: initializer element is not constant
1874 | .proc_poll = psi_fop_poll,
| ^~~~~~~~~~~~
kernel/sched/psi.c:1874:27: note: (near initialization for 'psi_io_proc_ops.proc_poll')
kernel/sched/psi.c:1875:27: error: initializer element is not constant
1875 | .proc_release = psi_fop_release,
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:1875:27: note: (near initialization for 'psi_io_proc_ops.proc_release')
kernel/sched/psi.c:1879:27: error: initializer element is not constant
1879 | .proc_open = psi_memory_open,
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:1879:27: note: (near initialization for 'psi_memory_proc_ops.proc_open')
kernel/sched/psi.c:1882:27: error: initializer element is not constant
1882 | .proc_write = psi_memory_write,
| ^~~~~~~~~~~~~~~~
kernel/sched/psi.c:1882:27: note: (near initialization for 'psi_memory_proc_ops.proc_write')
kernel/sched/psi.c:1883:27: error: initializer element is not constant
1883 | .proc_poll = psi_fop_poll,
| ^~~~~~~~~~~~
kernel/sched/psi.c:1883:27: note: (near initialization for 'psi_memory_proc_ops.proc_poll')
kernel/sched/psi.c:1884:27: error: initializer element is not constant
1884 | .proc_release = psi_fop_release,
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:1884:27: note: (near initialization for 'psi_memory_proc_ops.proc_release')
kernel/sched/psi.c:1888:27: error: initializer element is not constant
1888 | .proc_open = psi_cpu_open,
| ^~~~~~~~~~~~
kernel/sched/psi.c:1888:27: note: (near initialization for 'psi_cpu_proc_ops.proc_open')
kernel/sched/psi.c:1891:27: error: initializer element is not constant
1891 | .proc_write = psi_cpu_write,
| ^~~~~~~~~~~~~
kernel/sched/psi.c:1891:27: note: (near initialization for 'psi_cpu_proc_ops.proc_write')
kernel/sched/psi.c:1892:27: error: initializer element is not constant
1892 | .proc_poll = psi_fop_poll,
| ^~~~~~~~~~~~
kernel/sched/psi.c:1892:27: note: (near initialization for 'psi_cpu_proc_ops.proc_poll')
kernel/sched/psi.c:1893:27: error: initializer element is not constant
1893 | .proc_release = psi_fop_release,
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:1893:27: note: (near initialization for 'psi_cpu_proc_ops.proc_release')
>> kernel/sched/psi.c:1907:13: error: invalid storage class for function 'get_stat_names'
1907 | static void get_stat_names(struct seq_file *m, int i, bool is_full)
| ^~~~~~~~~~~~~~
>> kernel/sched/psi.c:1953:12: error: invalid storage class for function 'system_psi_stat_show'
1953 | static int system_psi_stat_show(struct seq_file *m, void *v)
| ^~~~~~~~~~~~~~~~~~~~
>> kernel/sched/psi.c:1958:12: error: invalid storage class for function 'psi_stat_open'
1958 | static int psi_stat_open(struct inode *inode, struct file *file)
| ^~~~~~~~~~~~~
kernel/sched/psi.c:1964:27: error: initializer element is not constant
1964 | .proc_open = psi_stat_open,
| ^~~~~~~~~~~~~
kernel/sched/psi.c:1964:27: note: (near initialization for 'psi_stat_proc_ops.proc_open')
kernel/sched/psi.c:1967:27: error: initializer element is not constant
1967 | .proc_release = psi_fop_release,
| ^~~~~~~~~~~~~~~
kernel/sched/psi.c:1967:27: note: (near initialization for 'psi_stat_proc_ops.proc_release')
>> kernel/sched/psi.c:1998:19: error: invalid storage class for function 'psi_proc_init'
1998 | static int __init psi_proc_init(void)
| ^~~~~~~~~~~~~
In file included from include/linux/printk.h:6,
from include/linux/kernel.h:30:
kernel/sched/psi.c:2014:13: error: initializer element is not constant
2014 | module_init(psi_proc_init);
| ^~~~~~~~~~~~~
include/linux/init.h:270:55: note: in definition of macro '____define_initcall'
270 | __attribute__((__section__(__sec))) = fn;
| ^~
include/linux/init.h:280:9: note: in expansion of macro '__unique_initcall'
280 | __unique_initcall(fn, id, __sec, __initcall_id(fn))
| ^~~~~~~~~~~~~~~~~
include/linux/init.h:282:35: note: in expansion of macro '___define_initcall'
282 | #define __define_initcall(fn, id) ___define_initcall(fn, id, .initcall##id)
| ^~~~~~~~~~~~~~~~~~
include/linux/init.h:311:41: note: in expansion of macro '__define_initcall'
311 | #define device_initcall(fn) __define_initcall(fn, 6)
| ^~~~~~~~~~~~~~~~~
include/linux/init.h:316:24: note: in expansion of macro 'device_initcall'
316 | #define __initcall(fn) device_initcall(fn)
| ^~~~~~~~~~~~~~~
include/linux/module.h:88:25: note: in expansion of macro '__initcall'
88 | #define module_init(x) __initcall(x);
| ^~~~~~~~~~
kernel/sched/psi.c:2014:1: note: in expansion of macro 'module_init'
2014 | module_init(psi_proc_init);
| ^~~~~~~~~~~
In file included from kernel/sched/build_utility.c:101:
kernel/sched/membarrier.c:165:13: error: invalid storage class for function 'ipi_mb'
165 | static void ipi_mb(void *info)
| ^~~~~~
kernel/sched/membarrier.c:170:13: error: invalid storage class for function 'ipi_sync_core'
170 | static void ipi_sync_core(void *info)
| ^~~~~~~~~~~~~
kernel/sched/membarrier.c:187:13: error: invalid storage class for function 'ipi_rseq'
187 | static void ipi_rseq(void *info)
| ^~~~~~~~
kernel/sched/membarrier.c:200:13: error: invalid storage class for function 'ipi_sync_rq_state'
200 | static void ipi_sync_rq_state(void *info)
| ^~~~~~~~~~~~~~~~~
kernel/sched/membarrier.c:245:12: error: invalid storage class for function 'membarrier_global_expedited'
245 | static int membarrier_global_expedited(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/membarrier.c:310:12: error: invalid storage class for function 'membarrier_private_expedited'
310 | static int membarrier_private_expedited(int flags, int cpu_id)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/membarrier.c:426:12: error: invalid storage class for function 'sync_runqueues_membarrier_state'
426 | static int sync_runqueues_membarrier_state(struct mm_struct *mm)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/membarrier.c:483:12: error: invalid storage class for function 'membarrier_register_global_expedited'
483 | static int membarrier_register_global_expedited(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/membarrier.c:502:12: error: invalid storage class for function 'membarrier_register_private_expedited'
502 | static int membarrier_register_private_expedited(int flags)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/sched/membarrier.c:544:12: error: invalid storage class for function 'membarrier_get_registrations'
544 | static int membarrier_get_registrations(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/compiler_types.h:153,
from <command-line>:
>> include/linux/compiler-gcc.h:132:33: warning: 'alias' attribute ignored [-Wattributes]
132 | #define __diag(s) _Pragma(__diag_str(GCC diagnostic s))
| ^~~~~~~
include/linux/compiler-gcc.h:135:33: note: in expansion of macro '__diag'
135 | #define __diag_GCC_8(s) __diag(s)
| ^~~~~~
include/linux/compiler-gcc.h:123:9: note: in expansion of macro '__diag_GCC_8'
123 | __diag_GCC_ ## version(__diag_GCC_ ## severity s)
| ^~~~~~~~~~~
include/linux/compiler_types.h:444:9: note: in expansion of macro '__diag_GCC'
444 | __diag_ ## compiler(version, ignore, option)
| ^~~~~~~
include/linux/syscalls.h:242:9: note: in expansion of macro '__diag_ignore'
242 | __diag_ignore(GCC, 8, "-Wattribute-alias", \
| ^~~~~~~~~~~~~
include/linux/syscalls.h:230:9: note: in expansion of macro '__SYSCALL_DEFINEx'
230 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:221:36: note: in expansion of macro 'SYSCALL_DEFINEx'
221 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c:614:1: note: in expansion of macro 'SYSCALL_DEFINE3'
614 | SYSCALL_DEFINE3(membarrier, int, cmd, unsigned int, flags, int, cpu_id)
| ^~~~~~~~~~~~~~~
In file included from include/linux/syscalls_api.h:1,
from kernel/sched/sched.h:61,
from kernel/sched/build_utility.c:53:
>> include/linux/syscalls.h:247:28: error: invalid storage class for function '__do_sys_membarrier'
247 | static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
| ^~~~~~~~
include/linux/syscalls.h:230:9: note: in expansion of macro '__SYSCALL_DEFINEx'
230 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:221:36: note: in expansion of macro 'SYSCALL_DEFINEx'
221 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c:614:1: note: in expansion of macro 'SYSCALL_DEFINE3'
614 | SYSCALL_DEFINE3(membarrier, int, cmd, unsigned int, flags, int, cpu_id)
| ^~~~~~~~~~~~~~~
>> include/linux/syscalls.h:249:25: error: static declaration of '__se_sys_membarrier' follows non-static declaration
249 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
| ^~~~~~~~
include/linux/syscalls.h:230:9: note: in expansion of macro '__SYSCALL_DEFINEx'
230 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:221:36: note: in expansion of macro 'SYSCALL_DEFINEx'
221 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c:614:1: note: in expansion of macro 'SYSCALL_DEFINE3'
614 | SYSCALL_DEFINE3(membarrier, int, cmd, unsigned int, flags, int, cpu_id)
| ^~~~~~~~~~~~~~~
include/linux/syscalls.h:248:25: note: previous declaration of '__se_sys_membarrier' with type 'long int(long int, long int, long int)'
248 | asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \
| ^~~~~~~~
include/linux/syscalls.h:230:9: note: in expansion of macro '__SYSCALL_DEFINEx'
230 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:221:36: note: in expansion of macro 'SYSCALL_DEFINEx'
221 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c:614:1: note: in expansion of macro 'SYSCALL_DEFINE3'
614 | SYSCALL_DEFINE3(membarrier, int, cmd, unsigned int, flags, int, cpu_id)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c: In function '__se_sys_membarrier':
include/linux/syscalls.h:251:28: error: implicit declaration of function '__do_sys_membarrier'; did you mean '__se_sys_membarrier'? [-Wimplicit-function-declaration]
251 | long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\
| ^~~~~~~~
include/linux/syscalls.h:230:9: note: in expansion of macro '__SYSCALL_DEFINEx'
230 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:221:36: note: in expansion of macro 'SYSCALL_DEFINEx'
221 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c:614:1: note: in expansion of macro 'SYSCALL_DEFINE3'
614 | SYSCALL_DEFINE3(membarrier, int, cmd, unsigned int, flags, int, cpu_id)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c: In function 'record_stat_times':
include/linux/syscalls.h:257:28: error: invalid storage class for function '__do_sys_membarrier'
257 | static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))
| ^~~~~~~~
include/linux/syscalls.h:230:9: note: in expansion of macro '__SYSCALL_DEFINEx'
230 | __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
| ^~~~~~~~~~~~~~~~~
include/linux/syscalls.h:221:36: note: in expansion of macro 'SYSCALL_DEFINEx'
221 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
| ^~~~~~~~~~~~~~~
kernel/sched/membarrier.c:614:1: note: in expansion of macro 'SYSCALL_DEFINE3'
614 | SYSCALL_DEFINE3(membarrier, int, cmd, unsigned int, flags, int, cpu_id)
| ^~~~~~~~~~~~~~~
kernel/sched/isolation.c:24:19: error: extern declaration of 'housekeeping_overridden' follows declaration with no linkage
24 | EXPORT_SYMBOL_GPL(housekeeping_overridden);
| ^~~~~~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/sched/isolation.c:24:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
24 | EXPORT_SYMBOL_GPL(housekeeping_overridden);
| ^~~~~~~~~~~~~~~~~
In file included from include/linux/once.h:6,
from include/linux/prandom.h:12,
from include/linux/random.h:153,
from include/linux/nodemask.h:97,
from include/linux/sched.h:23,
from include/linux/sched/signal.h:7,
from include/linux/sched/cputime.h:5,
from kernel/sched/build_utility.c:13:
kernel/sched/isolation.c:23:25: note: previous definition of 'housekeeping_overridden' with type 'struct static_key_false'
23 | DEFINE_STATIC_KEY_FALSE(housekeeping_overridden);
| ^~~~~~~~~~~~~~~~~~~~~~~
include/linux/jump_label.h:390:33: note: in definition of macro 'DEFINE_STATIC_KEY_FALSE'
390 | struct static_key_false name = STATIC_KEY_FALSE_INIT
| ^~~~
kernel/sched/isolation.c:37:19: error: non-static declaration of 'housekeeping_enabled' follows static declaration
37 | EXPORT_SYMBOL_GPL(housekeeping_enabled);
| ^~~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
kernel/sched/isolation.c:37:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
37 | EXPORT_SYMBOL_GPL(housekeeping_enabled);
| ^~~~~~~~~~~~~~~~~
In file included from kernel/sched/build_utility.c:105:
kernel/sched/isolation.c:33:6: note: previous definition of 'housekeeping_enabled' with type 'bool(enum hk_type)' {aka '_Bool(enum hk_type)'}
33 | bool housekeeping_enabled(enum hk_type type)
| ^~~~~~~~~~~~~~~~~~~~
kernel/sched/isolation.c:54:19: error: non-static declaration of 'housekeeping_any_cpu' follows static declaration
54 | EXPORT_SYMBOL_GPL(housekeeping_any_cpu);
| ^~~~~~~~~~~~~~~~~~~~
include/linux/export.h:74:28: note: in definition of macro '__EXPORT_SYMBOL'
74 | extern typeof(sym) sym; \
| ^~~
include/linux/export.h:87:41: note: in expansion of macro '_EXPORT_SYMBOL'
87 | #define EXPORT_SYMBOL_GPL(sym) _EXPORT_SYMBOL(sym, "GPL")
| ^~~~~~~~~~~~~~
vim +/psi_io_show +1763 kernel/sched/psi.c
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1761
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1762 #ifdef CONFIG_PROC_FS
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 @1763 static int psi_io_show(struct seq_file *m, void *v)
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1764 {
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1765 return psi_show(m, &psi_system, PSI_IO);
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1766 }
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1767
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 @1768 static int psi_memory_show(struct seq_file *m, void *v)
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1769 {
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1770 return psi_show(m, &psi_system, PSI_MEM);
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1771 }
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1772
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 @1773 static int psi_cpu_show(struct seq_file *m, void *v)
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1774 {
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1775 return psi_show(m, &psi_system, PSI_CPU);
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1776 }
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1777
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 @1778 static int psi_io_open(struct inode *inode, struct file *file)
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1779 {
d82caa273565b4 Domenico Cerasuolo 2023-03-30 1780 return single_open(file, psi_io_show, NULL);
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1781 }
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1782
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 @1783 static int psi_memory_open(struct inode *inode, struct file *file)
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1784 {
d82caa273565b4 Domenico Cerasuolo 2023-03-30 1785 return single_open(file, psi_memory_show, NULL);
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1786 }
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1787
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 @1788 static int psi_cpu_open(struct inode *inode, struct file *file)
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1789 {
d82caa273565b4 Domenico Cerasuolo 2023-03-30 1790 return single_open(file, psi_cpu_show, NULL);
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1791 }
5102bb1c9f8285 Suren Baghdasaryan 2022-01-19 1792
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 @1793 static ssize_t psi_write(struct file *file, const char __user *user_buf,
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1794 size_t nbytes, enum psi_res res)
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1795 {
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1796 char buf[32];
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1797 size_t buf_size;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1798 struct seq_file *seq;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1799 struct psi_trigger *new;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1800
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1801 if (static_branch_likely(&psi_disabled))
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1802 return -EOPNOTSUPP;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1803
6fcca0fa48118e Suren Baghdasaryan 2020-02-03 1804 if (!nbytes)
6fcca0fa48118e Suren Baghdasaryan 2020-02-03 1805 return -EINVAL;
6fcca0fa48118e Suren Baghdasaryan 2020-02-03 1806
4adcdcea717cb2 Miles Chen 2019-09-12 1807 buf_size = min(nbytes, sizeof(buf));
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1808 if (copy_from_user(buf, user_buf, buf_size))
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1809 return -EFAULT;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1810
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1811 buf[buf_size - 1] = '\0';
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1812
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1813 seq = file->private_data;
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1814
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1815 /* Take seq->lock to protect seq->private from concurrent writes */
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1816 mutex_lock(&seq->lock);
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1817
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1818 /* Allow only one trigger per file descriptor */
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1819 if (seq->private) {
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1820 mutex_unlock(&seq->lock);
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1821 return -EBUSY;
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1822 }
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1823
aff037078ecaec Suren Baghdasaryan 2023-06-29 1824 new = psi_trigger_create(&psi_system, buf, res, file, NULL);
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1825 if (IS_ERR(new)) {
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1826 mutex_unlock(&seq->lock);
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1827 return PTR_ERR(new);
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1828 }
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1829
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1830 smp_store_release(&seq->private, new);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1831 mutex_unlock(&seq->lock);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1832
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1833 return nbytes;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1834 }
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1835
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 @1836 static ssize_t psi_io_write(struct file *file, const char __user *user_buf,
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1837 size_t nbytes, loff_t *ppos)
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1838 {
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1839 return psi_write(file, user_buf, nbytes, PSI_IO);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1840 }
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1841
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 @1842 static ssize_t psi_memory_write(struct file *file, const char __user *user_buf,
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1843 size_t nbytes, loff_t *ppos)
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1844 {
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1845 return psi_write(file, user_buf, nbytes, PSI_MEM);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1846 }
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1847
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 @1848 static ssize_t psi_cpu_write(struct file *file, const char __user *user_buf,
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1849 size_t nbytes, loff_t *ppos)
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1850 {
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1851 return psi_write(file, user_buf, nbytes, PSI_CPU);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1852 }
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1853
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 @1854 static __poll_t psi_fop_poll(struct file *file, poll_table *wait)
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1855 {
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1856 struct seq_file *seq = file->private_data;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1857
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1858 return psi_trigger_poll(&seq->private, file, wait);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1859 }
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1860
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 @1861 static int psi_fop_release(struct inode *inode, struct file *file)
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1862 {
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1863 struct seq_file *seq = file->private_data;
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1864
a06247c6804f1a Suren Baghdasaryan 2022-01-11 1865 psi_trigger_destroy(seq->private);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1866 return single_release(inode, file);
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1867 }
0e94682b73bfa6 Suren Baghdasaryan 2019-05-14 1868
97a32539b9568b Alexey Dobriyan 2020-02-03 1869 static const struct proc_ops psi_io_proc_ops = {
97a32539b9568b Alexey Dobriyan 2020-02-03 @1870 .proc_open = psi_io_open,
97a32539b9568b Alexey Dobriyan 2020-02-03 1871 .proc_read = seq_read,
97a32539b9568b Alexey Dobriyan 2020-02-03 1872 .proc_lseek = seq_lseek,
97a32539b9568b Alexey Dobriyan 2020-02-03 1873 .proc_write = psi_io_write,
97a32539b9568b Alexey Dobriyan 2020-02-03 1874 .proc_poll = psi_fop_poll,
97a32539b9568b Alexey Dobriyan 2020-02-03 1875 .proc_release = psi_fop_release,
eb414681d5a07d Johannes Weiner 2018-10-26 1876 };
eb414681d5a07d Johannes Weiner 2018-10-26 1877
97a32539b9568b Alexey Dobriyan 2020-02-03 1878 static const struct proc_ops psi_memory_proc_ops = {
97a32539b9568b Alexey Dobriyan 2020-02-03 1879 .proc_open = psi_memory_open,
97a32539b9568b Alexey Dobriyan 2020-02-03 1880 .proc_read = seq_read,
97a32539b9568b Alexey Dobriyan 2020-02-03 1881 .proc_lseek = seq_lseek,
97a32539b9568b Alexey Dobriyan 2020-02-03 1882 .proc_write = psi_memory_write,
97a32539b9568b Alexey Dobriyan 2020-02-03 1883 .proc_poll = psi_fop_poll,
97a32539b9568b Alexey Dobriyan 2020-02-03 1884 .proc_release = psi_fop_release,
eb414681d5a07d Johannes Weiner 2018-10-26 1885 };
eb414681d5a07d Johannes Weiner 2018-10-26 1886
97a32539b9568b Alexey Dobriyan 2020-02-03 1887 static const struct proc_ops psi_cpu_proc_ops = {
97a32539b9568b Alexey Dobriyan 2020-02-03 1888 .proc_open = psi_cpu_open,
97a32539b9568b Alexey Dobriyan 2020-02-03 1889 .proc_read = seq_read,
97a32539b9568b Alexey Dobriyan 2020-02-03 1890 .proc_lseek = seq_lseek,
97a32539b9568b Alexey Dobriyan 2020-02-03 1891 .proc_write = psi_cpu_write,
97a32539b9568b Alexey Dobriyan 2020-02-03 1892 .proc_poll = psi_fop_poll,
97a32539b9568b Alexey Dobriyan 2020-02-03 1893 .proc_release = psi_fop_release,
eb414681d5a07d Johannes Weiner 2018-10-26 1894 };
eb414681d5a07d Johannes Weiner 2018-10-26 1895
4a69b56540f405 Lu Jialin 2024-01-04 1896 #ifdef CONFIG_PSI_FINE_GRAINED
4a69b56540f405 Lu Jialin 2024-01-04 1897 static const char *const psi_stat_names[] = {
4a69b56540f405 Lu Jialin 2024-01-04 1898 "cgroup_memory_reclaim",
25d00f6853c3c6 Lu Jialin 2024-01-04 1899 "global_memory_reclaim",
25d00f6853c3c6 Lu Jialin 2024-01-04 1900 "compact",
25d00f6853c3c6 Lu Jialin 2024-01-04 1901 "cgroup_async_memory_reclaim",
25d00f6853c3c6 Lu Jialin 2024-01-04 1902 "swap",
65494451082298 Lu Jialin 2024-01-04 1903 "cpu_cfs_bandwidth",
65494451082298 Lu Jialin 2024-01-04 1904 "cpu_qos",
4a69b56540f405 Lu Jialin 2024-01-04 1905 };
4a69b56540f405 Lu Jialin 2024-01-04 1906
65494451082298 Lu Jialin 2024-01-04 @1907 static void get_stat_names(struct seq_file *m, int i, bool is_full)
65494451082298 Lu Jialin 2024-01-04 1908 {
65494451082298 Lu Jialin 2024-01-04 1909 if (i <= PSI_SWAP_FULL && !is_full)
65494451082298 Lu Jialin 2024-01-04 1910 return seq_printf(m, "%s\n", psi_stat_names[i / 2]);
65494451082298 Lu Jialin 2024-01-04 1911 else if (i == PSI_CPU_CFS_BANDWIDTH_FULL)
65494451082298 Lu Jialin 2024-01-04 1912 return seq_printf(m, "%s\n", "cpu_cfs_bandwidth");
65494451082298 Lu Jialin 2024-01-04 1913 #ifdef CONFIG_QOS_SCHED
65494451082298 Lu Jialin 2024-01-04 1914 else if (i == PSI_CPU_QOS_FULL)
65494451082298 Lu Jialin 2024-01-04 1915 return seq_printf(m, "%s\n", "cpu_qos");
65494451082298 Lu Jialin 2024-01-04 1916 #endif
65494451082298 Lu Jialin 2024-01-04 1917 }
65494451082298 Lu Jialin 2024-01-04 1918
4a69b56540f405 Lu Jialin 2024-01-04 1919 int psi_stat_show(struct seq_file *m, struct psi_group *group)
4a69b56540f405 Lu Jialin 2024-01-04 1920 {
4a69b56540f405 Lu Jialin 2024-01-04 1921 int i;
4a69b56540f405 Lu Jialin 2024-01-04 1922 u64 now;
4a69b56540f405 Lu Jialin 2024-01-04 1923
4a69b56540f405 Lu Jialin 2024-01-04 1924 if (static_branch_likely(&psi_disabled))
4a69b56540f405 Lu Jialin 2024-01-04 1925 return -EOPNOTSUPP;
4a69b56540f405 Lu Jialin 2024-01-04 1926
4a69b56540f405 Lu Jialin 2024-01-04 1927 mutex_lock(&group->avgs_lock);
4a69b56540f405 Lu Jialin 2024-01-04 1928 now = sched_clock();
4a69b56540f405 Lu Jialin 2024-01-04 1929 collect_percpu_times(group, PSI_AVGS, NULL);
4a69b56540f405 Lu Jialin 2024-01-04 1930 if (now >= group->avg_next_update)
4a69b56540f405 Lu Jialin 2024-01-04 1931 group->avg_next_update = update_averages(group, now);
4a69b56540f405 Lu Jialin 2024-01-04 1932 mutex_unlock(&group->avgs_lock);
4a69b56540f405 Lu Jialin 2024-01-04 1933
4a69b56540f405 Lu Jialin 2024-01-04 1934 for (i = 0; i < NR_PSI_STAT_STATES; i++) {
4a69b56540f405 Lu Jialin 2024-01-04 1935 unsigned long avg[3] = {0, };
4a69b56540f405 Lu Jialin 2024-01-04 1936 int w;
4a69b56540f405 Lu Jialin 2024-01-04 1937 u64 total;
65494451082298 Lu Jialin 2024-01-04 1938 bool is_full = i % 2 || i > PSI_SWAP_FULL;
4a69b56540f405 Lu Jialin 2024-01-04 1939
4a69b56540f405 Lu Jialin 2024-01-04 1940 for (w = 0; w < 3; w++)
4a69b56540f405 Lu Jialin 2024-01-04 1941 avg[w] = group->fine_grained_avg[i][w];
4a69b56540f405 Lu Jialin 2024-01-04 1942 total = div_u64(group->fine_grained_total[PSI_AVGS][i], NSEC_PER_USEC);
65494451082298 Lu Jialin 2024-01-04 1943 get_stat_names(m, i, is_full);
4a69b56540f405 Lu Jialin 2024-01-04 1944 seq_printf(m, "%s avg10=%lu.%02lu avg60=%lu.%02lu avg300=%lu.%02lu total=%llu\n",
4a69b56540f405 Lu Jialin 2024-01-04 1945 is_full ? "full" : "some",
4a69b56540f405 Lu Jialin 2024-01-04 1946 LOAD_INT(avg[0]), LOAD_FRAC(avg[0]),
4a69b56540f405 Lu Jialin 2024-01-04 1947 LOAD_INT(avg[1]), LOAD_FRAC(avg[1]),
4a69b56540f405 Lu Jialin 2024-01-04 1948 LOAD_INT(avg[2]), LOAD_FRAC(avg[2]),
4a69b56540f405 Lu Jialin 2024-01-04 1949 total);
4a69b56540f405 Lu Jialin 2024-01-04 1950 }
4a69b56540f405 Lu Jialin 2024-01-04 1951 return 0;
4a69b56540f405 Lu Jialin 2024-01-04 1952 }
4a69b56540f405 Lu Jialin 2024-01-04 @1953 static int system_psi_stat_show(struct seq_file *m, void *v)
4a69b56540f405 Lu Jialin 2024-01-04 1954 {
4a69b56540f405 Lu Jialin 2024-01-04 1955 return psi_stat_show(m, &psi_system);
4a69b56540f405 Lu Jialin 2024-01-04 1956 }
4a69b56540f405 Lu Jialin 2024-01-04 1957
4a69b56540f405 Lu Jialin 2024-01-04 @1958 static int psi_stat_open(struct inode *inode, struct file *file)
4a69b56540f405 Lu Jialin 2024-01-04 1959 {
4a69b56540f405 Lu Jialin 2024-01-04 1960 return single_open(file, system_psi_stat_show, NULL);
4a69b56540f405 Lu Jialin 2024-01-04 1961 }
4a69b56540f405 Lu Jialin 2024-01-04 1962
:::::: The code at line 1763 was first introduced by commit
:::::: 5102bb1c9f82857a3164af9d7ab7ad628cb783ed psi: Fix "defined but not used" warnings when CONFIG_PROC_FS=n
:::::: TO: Suren Baghdasaryan <surenb(a)google.com>
:::::: CC: Peter Zijlstra <peterz(a)infradead.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0

[openeuler:openEuler-1.0-LTS 1422/1422] kernel/time/.tmp_hrtimer.o: warning: objtool: hrtimer_start_range_ns()+0x535: unreachable instruction
by kernel test robot 16 Feb '25
by kernel test robot 16 Feb '25
16 Feb '25
Hi Phil,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 6a6cc2b6b95dc80ae01221670e21a8059229a023
commit: 40ecfb28732cefd0c5658f7c10543bbc4cd41cb8 [1422/1422] hrtimer: Prevent queuing of hrtimer without a function callback
config: x86_64-buildonly-randconfig-001-20250210 (https://download.01.org/0day-ci/archive/20250216/202502160431.1F2NAJJ5-lkp@…)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250216/202502160431.1F2NAJJ5-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502160431.1F2NAJJ5-lkp@intel.com/
All warnings (new ones prefixed by >>):
kernel/time/hrtimer.c:130:21: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
130 | [CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:128:27: note: previous initialization is here
128 | [0 ... MAX_CLOCKS - 1] = HRTIMER_MAX_CLOCK_BASES,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:131:22: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
131 | [CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
| ^~~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:128:27: note: previous initialization is here
128 | [0 ... MAX_CLOCKS - 1] = HRTIMER_MAX_CLOCK_BASES,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:132:21: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
132 | [CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
| ^~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:128:27: note: previous initialization is here
128 | [0 ... MAX_CLOCKS - 1] = HRTIMER_MAX_CLOCK_BASES,
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:133:17: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
133 | [CLOCK_TAI] = HRTIMER_BASE_TAI,
| ^~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:128:27: note: previous initialization is here
128 | [0 ... MAX_CLOCKS - 1] = HRTIMER_MAX_CLOCK_BASES,
| ^~~~~~~~~~~~~~~~~~~~~~~
4 warnings generated.
>> kernel/time/.tmp_hrtimer.o: warning: objtool: hrtimer_start_range_ns()+0x535: unreachable instruction
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0

[openeuler:openEuler-1.0-LTS 1422/1422] kernel/time/.tmp_posix-cpu-timers.o: warning: objtool: set_process_cpu_timer()+0x119: unreachable instruction
by kernel test robot 16 Feb '25
by kernel test robot 16 Feb '25
16 Feb '25
Hi Thomas,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 6a6cc2b6b95dc80ae01221670e21a8059229a023
commit: 36ff49c95a04513935898fdcd4bc37646b2dc459 [1422/1422] posix-cpu-timers: Sanitize bogus WARNONS
config: x86_64-buildonly-randconfig-001-20250210 (https://download.01.org/0day-ci/archive/20250216/202502160200.QYr3efrJ-lkp@…)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250216/202502160200.QYr3efrJ-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502160200.QYr3efrJ-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> kernel/time/.tmp_posix-cpu-timers.o: warning: objtool: set_process_cpu_timer()+0x119: unreachable instruction
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
Fix CVE-2024-56658
Dong Chenchen (1):
net: Fix kabi breakage in struct net
Eric Dumazet (1):
net: defer final 'struct net' free in netns dismantle
include/net/net_namespace.h | 2 +-
net/core/net_namespace.c | 20 +++++++++++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)
--
2.25.1
2
3

[PATCH openEuler-1.0-LTS] netfilter: conntrack: clamp maximum hashtable size to INT_MAX
by Dong Chenchen 15 Feb '25
by Dong Chenchen 15 Feb '25
15 Feb '25
From: Pablo Neira Ayuso <pablo(a)netfilter.org>
mainline inclusion
from mainline-v6.13-rc7
commit b541ba7d1f5a5b7b3e2e22dc9e40e18a7d6dbc13
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBIQQN
CVE: CVE-2025-21648
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
Use INT_MAX as maximum size for the conntrack hashtable. Otherwise, it
is possible to hit WARN_ON_ONCE in __kvmalloc_node_noprof() when
resizing hashtable because __GFP_NOWARN is unset. See:
0708a0afe291 ("mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls")
Note: hashtable resize is only possible from init_netns.
Fixes: 9cc1c73ad666 ("netfilter: conntrack: avoid integer overflow when resizing")
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
Conflicts:
net/netfilter/nf_conntrack_core.c
[commit b9e0102a57d7 use kvcalloc, which not merged lead to conflict]
Signed-off-by: Dong Chenchen <dongchenchen2(a)huawei.com>
---
net/netfilter/nf_conntrack_core.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index 755e1cee32cb..ebc365e6ac8f 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -2314,12 +2314,15 @@ void *nf_ct_alloc_hashtable(unsigned int *sizep, int nulls)
struct hlist_nulls_head *hash;
unsigned int nr_slots, i;
- if (*sizep > (UINT_MAX / sizeof(struct hlist_nulls_head)))
+ if (*sizep > (INT_MAX / sizeof(struct hlist_nulls_head)))
return NULL;
BUILD_BUG_ON(sizeof(struct hlist_nulls_head) != sizeof(struct hlist_head));
nr_slots = *sizep = roundup(*sizep, PAGE_SIZE / sizeof(struct hlist_nulls_head));
+ if (nr_slots > (INT_MAX / sizeof(struct hlist_nulls_head)))
+ return NULL;
+
hash = kvmalloc_array(nr_slots, sizeof(struct hlist_nulls_head),
GFP_KERNEL | __GFP_ZERO);
--
2.25.1
2
1

[PATCH openEuler-1.0-LTS] netfilter: x_tables: fix LED ID check in led_tg_check()
by Dong Chenchen 15 Feb '25
by Dong Chenchen 15 Feb '25
15 Feb '25
From: Dmitry Antipov <dmantipov(a)yandex.ru>
mainline inclusion
from mainline-v6.13-rc2
commit 04317f4eb2aad312ad85c1a17ad81fe75f1f9bc7
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBEAO6
CVE: CVE-2024-56650
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
Syzbot has reported the following BUG detected by KASAN:
BUG: KASAN: slab-out-of-bounds in strlen+0x58/0x70
Read of size 1 at addr ffff8881022da0c8 by task repro/5879
...
Call Trace:
<TASK>
dump_stack_lvl+0x241/0x360
? __pfx_dump_stack_lvl+0x10/0x10
? __pfx__printk+0x10/0x10
? _printk+0xd5/0x120
? __virt_addr_valid+0x183/0x530
? __virt_addr_valid+0x183/0x530
print_report+0x169/0x550
? __virt_addr_valid+0x183/0x530
? __virt_addr_valid+0x183/0x530
? __virt_addr_valid+0x45f/0x530
? __phys_addr+0xba/0x170
? strlen+0x58/0x70
kasan_report+0x143/0x180
? strlen+0x58/0x70
strlen+0x58/0x70
kstrdup+0x20/0x80
led_tg_check+0x18b/0x3c0
xt_check_target+0x3bb/0xa40
? __pfx_xt_check_target+0x10/0x10
? stack_depot_save_flags+0x6e4/0x830
? nft_target_init+0x174/0xc30
nft_target_init+0x82d/0xc30
? __pfx_nft_target_init+0x10/0x10
? nf_tables_newrule+0x1609/0x2980
? nf_tables_newrule+0x1609/0x2980
? rcu_is_watching+0x15/0xb0
? nf_tables_newrule+0x1609/0x2980
? nf_tables_newrule+0x1609/0x2980
? __kmalloc_noprof+0x21a/0x400
nf_tables_newrule+0x1860/0x2980
? __pfx_nf_tables_newrule+0x10/0x10
? __nla_parse+0x40/0x60
nfnetlink_rcv+0x14e5/0x2ab0
? __pfx_validate_chain+0x10/0x10
? __pfx_nfnetlink_rcv+0x10/0x10
? __lock_acquire+0x1384/0x2050
? netlink_deliver_tap+0x2e/0x1b0
? __pfx_lock_release+0x10/0x10
? netlink_deliver_tap+0x2e/0x1b0
netlink_unicast+0x7f8/0x990
? __pfx_netlink_unicast+0x10/0x10
? __virt_addr_valid+0x183/0x530
? __check_object_size+0x48e/0x900
netlink_sendmsg+0x8e4/0xcb0
? __pfx_netlink_sendmsg+0x10/0x10
? aa_sock_msg_perm+0x91/0x160
? __pfx_netlink_sendmsg+0x10/0x10
__sock_sendmsg+0x223/0x270
____sys_sendmsg+0x52a/0x7e0
? __pfx_____sys_sendmsg+0x10/0x10
__sys_sendmsg+0x292/0x380
? __pfx___sys_sendmsg+0x10/0x10
? lockdep_hardirqs_on_prepare+0x43d/0x780
? __pfx_lockdep_hardirqs_on_prepare+0x10/0x10
? exc_page_fault+0x590/0x8c0
? do_syscall_64+0xb6/0x230
do_syscall_64+0xf3/0x230
entry_SYSCALL_64_after_hwframe+0x77/0x7f
...
</TASK>
Since an invalid (without '\0' byte at all) byte sequence may be passed
from userspace, add an extra check to ensure that such a sequence is
rejected as possible ID and so never passed to 'kstrdup()' and further.
Reported-by: syzbot+6c8215822f35fdb35667(a)syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=6c8215822f35fdb35667
Fixes: 268cb38e1802 ("netfilter: x_tables: add LED trigger target")
Signed-off-by: Dmitry Antipov <dmantipov(a)yandex.ru>
Signed-off-by: Pablo Neira Ayuso <pablo(a)netfilter.org>
Signed-off-by: Dong Chenchen <dongchenchen2(a)huawei.com>
---
net/netfilter/xt_LED.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/netfilter/xt_LED.c b/net/netfilter/xt_LED.c
index 19846445504d..043d657f4447 100644
--- a/net/netfilter/xt_LED.c
+++ b/net/netfilter/xt_LED.c
@@ -111,7 +111,9 @@ static int led_tg_check(const struct xt_tgchk_param *par)
struct xt_led_info_internal *ledinternal;
int err;
- if (ledinfo->id[0] == '\0')
+ /* Bail out if empty string or not a string at all. */
+ if (ledinfo->id[0] == '\0' ||
+ !memchr(ledinfo->id, '\0', sizeof(ledinfo->id)))
return -EINVAL;
mutex_lock(&xt_led_mutex);
--
2.25.1
2
1
Fix CVE-2024-56658
Dong Chenchen (1):
net: Fix kabi breakage in struct net
Eric Dumazet (1):
net: defer final 'struct net' free in netns dismantle
include/net/net_namespace.h | 3 +++
net/core/net_namespace.c | 20 +++++++++++++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
--
2.25.1
2
3

[PATCH OLK-6.6] sched: sch_cake: add bounds checks to host bulk flow fairness counts
by Dong Chenchen 15 Feb '25
by Dong Chenchen 15 Feb '25
15 Feb '25
From: Toke Høiland-Jørgensen <toke(a)redhat.com>
stable inclusion
from stable-v6.6.72
commit 27202e2e8721c3b23831563c36ed5ac7818641ba
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBIQOT
CVE: CVE-2025-21647
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 737d4d91d35b5f7fa5bb442651472277318b0bfd ]
Even though we fixed a logic error in the commit cited below, syzbot
still managed to trigger an underflow of the per-host bulk flow
counters, leading to an out of bounds memory access.
To avoid any such logic errors causing out of bounds memory accesses,
this commit factors out all accesses to the per-host bulk flow counters
to a series of helpers that perform bounds-checking before any
increments and decrements. This also has the benefit of improving
readability by moving the conditional checks for the flow mode into
these helpers, instead of having them spread out throughout the
code (which was the cause of the original logic error).
As part of this change, the flow quantum calculation is consolidated
into a helper function, which means that the dithering applied to the
ost load scaling is now applied both in the DRR rotation and when a
sparse flow's quantum is first initiated. The only user-visible effect
of this is that the maximum packet size that can be sent while a flow
stays sparse will now vary with +/- one byte in some cases. This should
not make a noticeable difference in practice, and thus it's not worth
complicating the code to preserve the old behaviour.
Fixes: 546ea84d07e3 ("sched: sch_cake: fix bulk flow accounting logic for host fairness")
Reported-by: syzbot+f63600d288bfb7057424(a)syzkaller.appspotmail.com
Signed-off-by: Toke Høiland-Jørgensen <toke(a)redhat.com>
Acked-by: Dave Taht <dave.taht(a)gmail.com>
Link: https://patch.msgid.link/20250107120105.70685-1-toke@redhat.com
Signed-off-by: Jakub Kicinski <kuba(a)kernel.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Dong Chenchen <dongchenchen2(a)huawei.com>
---
net/sched/sch_cake.c | 140 +++++++++++++++++++++++--------------------
1 file changed, 75 insertions(+), 65 deletions(-)
diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c
index 30955dd45779..453dcc9c13f0 100644
--- a/net/sched/sch_cake.c
+++ b/net/sched/sch_cake.c
@@ -644,6 +644,63 @@ static bool cake_ddst(int flow_mode)
return (flow_mode & CAKE_FLOW_DUAL_DST) == CAKE_FLOW_DUAL_DST;
}
+static void cake_dec_srchost_bulk_flow_count(struct cake_tin_data *q,
+ struct cake_flow *flow,
+ int flow_mode)
+{
+ if (likely(cake_dsrc(flow_mode) &&
+ q->hosts[flow->srchost].srchost_bulk_flow_count))
+ q->hosts[flow->srchost].srchost_bulk_flow_count--;
+}
+
+static void cake_inc_srchost_bulk_flow_count(struct cake_tin_data *q,
+ struct cake_flow *flow,
+ int flow_mode)
+{
+ if (likely(cake_dsrc(flow_mode) &&
+ q->hosts[flow->srchost].srchost_bulk_flow_count < CAKE_QUEUES))
+ q->hosts[flow->srchost].srchost_bulk_flow_count++;
+}
+
+static void cake_dec_dsthost_bulk_flow_count(struct cake_tin_data *q,
+ struct cake_flow *flow,
+ int flow_mode)
+{
+ if (likely(cake_ddst(flow_mode) &&
+ q->hosts[flow->dsthost].dsthost_bulk_flow_count))
+ q->hosts[flow->dsthost].dsthost_bulk_flow_count--;
+}
+
+static void cake_inc_dsthost_bulk_flow_count(struct cake_tin_data *q,
+ struct cake_flow *flow,
+ int flow_mode)
+{
+ if (likely(cake_ddst(flow_mode) &&
+ q->hosts[flow->dsthost].dsthost_bulk_flow_count < CAKE_QUEUES))
+ q->hosts[flow->dsthost].dsthost_bulk_flow_count++;
+}
+
+static u16 cake_get_flow_quantum(struct cake_tin_data *q,
+ struct cake_flow *flow,
+ int flow_mode)
+{
+ u16 host_load = 1;
+
+ if (cake_dsrc(flow_mode))
+ host_load = max(host_load,
+ q->hosts[flow->srchost].srchost_bulk_flow_count);
+
+ if (cake_ddst(flow_mode))
+ host_load = max(host_load,
+ q->hosts[flow->dsthost].dsthost_bulk_flow_count);
+
+ /* The get_random_u16() is a way to apply dithering to avoid
+ * accumulating roundoff errors
+ */
+ return (q->flow_quantum * quantum_div[host_load] +
+ get_random_u16()) >> 16;
+}
+
static u32 cake_hash(struct cake_tin_data *q, const struct sk_buff *skb,
int flow_mode, u16 flow_override, u16 host_override)
{
@@ -790,10 +847,8 @@ static u32 cake_hash(struct cake_tin_data *q, const struct sk_buff *skb,
allocate_dst = cake_ddst(flow_mode);
if (q->flows[outer_hash + k].set == CAKE_SET_BULK) {
- if (allocate_src)
- q->hosts[q->flows[reduced_hash].srchost].srchost_bulk_flow_count--;
- if (allocate_dst)
- q->hosts[q->flows[reduced_hash].dsthost].dsthost_bulk_flow_count--;
+ cake_dec_srchost_bulk_flow_count(q, &q->flows[outer_hash + k], flow_mode);
+ cake_dec_dsthost_bulk_flow_count(q, &q->flows[outer_hash + k], flow_mode);
}
found:
/* reserve queue for future packets in same flow */
@@ -818,9 +873,10 @@ static u32 cake_hash(struct cake_tin_data *q, const struct sk_buff *skb,
q->hosts[outer_hash + k].srchost_tag = srchost_hash;
found_src:
srchost_idx = outer_hash + k;
- if (q->flows[reduced_hash].set == CAKE_SET_BULK)
- q->hosts[srchost_idx].srchost_bulk_flow_count++;
q->flows[reduced_hash].srchost = srchost_idx;
+
+ if (q->flows[reduced_hash].set == CAKE_SET_BULK)
+ cake_inc_srchost_bulk_flow_count(q, &q->flows[reduced_hash], flow_mode);
}
if (allocate_dst) {
@@ -841,9 +897,10 @@ static u32 cake_hash(struct cake_tin_data *q, const struct sk_buff *skb,
q->hosts[outer_hash + k].dsthost_tag = dsthost_hash;
found_dst:
dsthost_idx = outer_hash + k;
- if (q->flows[reduced_hash].set == CAKE_SET_BULK)
- q->hosts[dsthost_idx].dsthost_bulk_flow_count++;
q->flows[reduced_hash].dsthost = dsthost_idx;
+
+ if (q->flows[reduced_hash].set == CAKE_SET_BULK)
+ cake_inc_dsthost_bulk_flow_count(q, &q->flows[reduced_hash], flow_mode);
}
}
@@ -1856,10 +1913,6 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
/* flowchain */
if (!flow->set || flow->set == CAKE_SET_DECAYING) {
- struct cake_host *srchost = &b->hosts[flow->srchost];
- struct cake_host *dsthost = &b->hosts[flow->dsthost];
- u16 host_load = 1;
-
if (!flow->set) {
list_add_tail(&flow->flowchain, &b->new_flows);
} else {
@@ -1869,18 +1922,8 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
flow->set = CAKE_SET_SPARSE;
b->sparse_flow_count++;
- if (cake_dsrc(q->flow_mode))
- host_load = max(host_load, srchost->srchost_bulk_flow_count);
-
- if (cake_ddst(q->flow_mode))
- host_load = max(host_load, dsthost->dsthost_bulk_flow_count);
-
- flow->deficit = (b->flow_quantum *
- quantum_div[host_load]) >> 16;
+ flow->deficit = cake_get_flow_quantum(b, flow, q->flow_mode);
} else if (flow->set == CAKE_SET_SPARSE_WAIT) {
- struct cake_host *srchost = &b->hosts[flow->srchost];
- struct cake_host *dsthost = &b->hosts[flow->dsthost];
-
/* this flow was empty, accounted as a sparse flow, but actually
* in the bulk rotation.
*/
@@ -1888,12 +1931,8 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
b->sparse_flow_count--;
b->bulk_flow_count++;
- if (cake_dsrc(q->flow_mode))
- srchost->srchost_bulk_flow_count++;
-
- if (cake_ddst(q->flow_mode))
- dsthost->dsthost_bulk_flow_count++;
-
+ cake_inc_srchost_bulk_flow_count(b, flow, q->flow_mode);
+ cake_inc_dsthost_bulk_flow_count(b, flow, q->flow_mode);
}
if (q->buffer_used > q->buffer_max_used)
@@ -1950,13 +1989,11 @@ static struct sk_buff *cake_dequeue(struct Qdisc *sch)
{
struct cake_sched_data *q = qdisc_priv(sch);
struct cake_tin_data *b = &q->tins[q->cur_tin];
- struct cake_host *srchost, *dsthost;
ktime_t now = ktime_get();
struct cake_flow *flow;
struct list_head *head;
bool first_flow = true;
struct sk_buff *skb;
- u16 host_load;
u64 delay;
u32 len;
@@ -2056,11 +2093,6 @@ static struct sk_buff *cake_dequeue(struct Qdisc *sch)
q->cur_flow = flow - b->flows;
first_flow = false;
- /* triple isolation (modified DRR++) */
- srchost = &b->hosts[flow->srchost];
- dsthost = &b->hosts[flow->dsthost];
- host_load = 1;
-
/* flow isolation (DRR++) */
if (flow->deficit <= 0) {
/* Keep all flows with deficits out of the sparse and decaying
@@ -2072,11 +2104,8 @@ static struct sk_buff *cake_dequeue(struct Qdisc *sch)
b->sparse_flow_count--;
b->bulk_flow_count++;
- if (cake_dsrc(q->flow_mode))
- srchost->srchost_bulk_flow_count++;
-
- if (cake_ddst(q->flow_mode))
- dsthost->dsthost_bulk_flow_count++;
+ cake_inc_srchost_bulk_flow_count(b, flow, q->flow_mode);
+ cake_inc_dsthost_bulk_flow_count(b, flow, q->flow_mode);
flow->set = CAKE_SET_BULK;
} else {
@@ -2088,19 +2117,7 @@ static struct sk_buff *cake_dequeue(struct Qdisc *sch)
}
}
- if (cake_dsrc(q->flow_mode))
- host_load = max(host_load, srchost->srchost_bulk_flow_count);
-
- if (cake_ddst(q->flow_mode))
- host_load = max(host_load, dsthost->dsthost_bulk_flow_count);
-
- WARN_ON(host_load > CAKE_QUEUES);
-
- /* The get_random_u16() is a way to apply dithering to avoid
- * accumulating roundoff errors
- */
- flow->deficit += (b->flow_quantum * quantum_div[host_load] +
- get_random_u16()) >> 16;
+ flow->deficit += cake_get_flow_quantum(b, flow, q->flow_mode);
list_move_tail(&flow->flowchain, &b->old_flows);
goto retry;
@@ -2124,11 +2141,8 @@ static struct sk_buff *cake_dequeue(struct Qdisc *sch)
if (flow->set == CAKE_SET_BULK) {
b->bulk_flow_count--;
- if (cake_dsrc(q->flow_mode))
- srchost->srchost_bulk_flow_count--;
-
- if (cake_ddst(q->flow_mode))
- dsthost->dsthost_bulk_flow_count--;
+ cake_dec_srchost_bulk_flow_count(b, flow, q->flow_mode);
+ cake_dec_dsthost_bulk_flow_count(b, flow, q->flow_mode);
b->decaying_flow_count++;
} else if (flow->set == CAKE_SET_SPARSE ||
@@ -2146,12 +2160,8 @@ static struct sk_buff *cake_dequeue(struct Qdisc *sch)
else if (flow->set == CAKE_SET_BULK) {
b->bulk_flow_count--;
- if (cake_dsrc(q->flow_mode))
- srchost->srchost_bulk_flow_count--;
-
- if (cake_ddst(q->flow_mode))
- dsthost->dsthost_bulk_flow_count--;
-
+ cake_dec_srchost_bulk_flow_count(b, flow, q->flow_mode);
+ cake_dec_dsthost_bulk_flow_count(b, flow, q->flow_mode);
} else
b->decaying_flow_count--;
--
2.25.1
2
1