[mark:arm64/percpu-fixup 9/17] ./arch/arm64/include/asm/percpu.h:267:42: warning: conversion from 'long unsigned int' to 'u8' {aka 'unsigned char'} changes value from '18446744073709551615' to '255'

kernel test robot <[email protected]> Thu, 30 Jul 2026 02:56:52 +0200
Newsgroups dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arm64/percpu-fixup
head:   d1bf23b2ad173d4e8810016cbc69f2fb8f33ca93
commit: ebdcfd6d03ef8e35fb0ea95e49d0fce1ce2ec4cd [9/17] arm64: percpu: Implement preemptible read/write ops
config: arm64-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260730/[email protected]/config)
compiler: aarch64-linux-gnu-gcc (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260730/[email protected]/reproduce)

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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

   In file included from ./arch/arm64/include/asm/spectre.h:17,
                    from ./arch/arm64/include/asm/processor.h:47,
                    from ./include/linux/sched.h:13,
                    from ./include/linux/ratelimit.h:6,
                    from ./include/linux/dev_printk.h:16,
                    from ./include/linux/device.h:15,
                    from ./include/linux/node.h:18,
                    from ./include/linux/cpu.h:17,
                    from ./include/linux/stop_machine.h:5,
                    from kernel/trace/ftrace.c:17:
   kernel/trace/ftrace.c: In function 'ftrace_filter_pid_sched_switch_probe':
>> ./arch/arm64/include/asm/percpu.h:267:42: warning: conversion from 'long unsigned int' to 'u8' {aka 'unsigned char'} changes value from '18446744073709551615' to '255' [-Woverflow]
     267 |         _pcp_wrap(__percpu_write_8, pcp, (unsigned long)val)
   ./arch/arm64/include/asm/percpu.h:249:20: note: in definition of macro '_pcp_wrap'
     249 |         op(&(pcp), __VA_ARGS__);                                        \
         |                    ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:369:25: note: in expansion of macro 'this_cpu_write_1'
     369 |                 case 1: stem##1(variable, __VA_ARGS__);break;           \
         |                         ^~~~
   ./include/linux/percpu-defs.h:500:41: note: in expansion of macro '__pcpu_size_call'
     500 | #define this_cpu_write(pcp, val)        __pcpu_size_call(this_cpu_write_, pcp, val)
         |                                         ^~~~~~~~~~~~~~~~
   kernel/trace/ftrace.c:8628:17: note: in expansion of macro 'this_cpu_write'
    8628 |                 this_cpu_write(tr->array_buffer.data->ftrace_ignore_pid,
         |                 ^~~~~~~~~~~~~~
>> ./arch/arm64/include/asm/percpu.h:269:43: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '18446744073709551615' to '65535' [-Woverflow]
     269 |         _pcp_wrap(__percpu_write_16, pcp, (unsigned long)val)
   ./arch/arm64/include/asm/percpu.h:249:20: note: in definition of macro '_pcp_wrap'
     249 |         op(&(pcp), __VA_ARGS__);                                        \
         |                    ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:370:25: note: in expansion of macro 'this_cpu_write_2'
     370 |                 case 2: stem##2(variable, __VA_ARGS__);break;           \
         |                         ^~~~
   ./include/linux/percpu-defs.h:500:41: note: in expansion of macro '__pcpu_size_call'
     500 | #define this_cpu_write(pcp, val)        __pcpu_size_call(this_cpu_write_, pcp, val)
         |                                         ^~~~~~~~~~~~~~~~
   kernel/trace/ftrace.c:8628:17: note: in expansion of macro 'this_cpu_write'
    8628 |                 this_cpu_write(tr->array_buffer.data->ftrace_ignore_pid,
         |                 ^~~~~~~~~~~~~~
>> ./arch/arm64/include/asm/percpu.h:271:43: warning: conversion from 'long unsigned int' to 'u32' {aka 'unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Woverflow]
     271 |         _pcp_wrap(__percpu_write_32, pcp, (unsigned long)val)
   ./arch/arm64/include/asm/percpu.h:249:20: note: in definition of macro '_pcp_wrap'
     249 |         op(&(pcp), __VA_ARGS__);                                        \
         |                    ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:371:25: note: in expansion of macro 'this_cpu_write_4'
     371 |                 case 4: stem##4(variable, __VA_ARGS__);break;           \
         |                         ^~~~
   ./include/linux/percpu-defs.h:500:41: note: in expansion of macro '__pcpu_size_call'
     500 | #define this_cpu_write(pcp, val)        __pcpu_size_call(this_cpu_write_, pcp, val)
         |                                         ^~~~~~~~~~~~~~~~
   kernel/trace/ftrace.c:8628:17: note: in expansion of macro 'this_cpu_write'
    8628 |                 this_cpu_write(tr->array_buffer.data->ftrace_ignore_pid,
         |                 ^~~~~~~~~~~~~~
   kernel/trace/ftrace.c: In function 'ignore_task_cpu':
>> ./arch/arm64/include/asm/percpu.h:267:42: warning: conversion from 'long unsigned int' to 'u8' {aka 'unsigned char'} changes value from '18446744073709551615' to '255' [-Woverflow]
     267 |         _pcp_wrap(__percpu_write_8, pcp, (unsigned long)val)
   ./arch/arm64/include/asm/percpu.h:249:20: note: in definition of macro '_pcp_wrap'
     249 |         op(&(pcp), __VA_ARGS__);                                        \
         |                    ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:369:25: note: in expansion of macro 'this_cpu_write_1'
     369 |                 case 1: stem##1(variable, __VA_ARGS__);break;           \
         |                         ^~~~
   ./include/linux/percpu-defs.h:500:41: note: in expansion of macro '__pcpu_size_call'
     500 | #define this_cpu_write(pcp, val)        __pcpu_size_call(this_cpu_write_, pcp, val)
         |                                         ^~~~~~~~~~~~~~~~
   kernel/trace/ftrace.c:8898:17: note: in expansion of macro 'this_cpu_write'
    8898 |                 this_cpu_write(tr->array_buffer.data->ftrace_ignore_pid,
         |                 ^~~~~~~~~~~~~~
>> ./arch/arm64/include/asm/percpu.h:269:43: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '18446744073709551615' to '65535' [-Woverflow]
     269 |         _pcp_wrap(__percpu_write_16, pcp, (unsigned long)val)
   ./arch/arm64/include/asm/percpu.h:249:20: note: in definition of macro '_pcp_wrap'
     249 |         op(&(pcp), __VA_ARGS__);                                        \
         |                    ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:370:25: note: in expansion of macro 'this_cpu_write_2'
     370 |                 case 2: stem##2(variable, __VA_ARGS__);break;           \
         |                         ^~~~
   ./include/linux/percpu-defs.h:500:41: note: in expansion of macro '__pcpu_size_call'
     500 | #define this_cpu_write(pcp, val)        __pcpu_size_call(this_cpu_write_, pcp, val)
         |                                         ^~~~~~~~~~~~~~~~
   kernel/trace/ftrace.c:8898:17: note: in expansion of macro 'this_cpu_write'
    8898 |                 this_cpu_write(tr->array_buffer.data->ftrace_ignore_pid,
         |                 ^~~~~~~~~~~~~~
>> ./arch/arm64/include/asm/percpu.h:271:43: warning: conversion from 'long unsigned int' to 'u32' {aka 'unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Woverflow]
     271 |         _pcp_wrap(__percpu_write_32, pcp, (unsigned long)val)
   ./arch/arm64/include/asm/percpu.h:249:20: note: in definition of macro '_pcp_wrap'
     249 |         op(&(pcp), __VA_ARGS__);                                        \
         |                    ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:371:25: note: in expansion of macro 'this_cpu_write_4'
     371 |                 case 4: stem##4(variable, __VA_ARGS__);break;           \
         |                         ^~~~
   ./include/linux/percpu-defs.h:500:41: note: in expansion of macro '__pcpu_size_call'
     500 | #define this_cpu_write(pcp, val)        __pcpu_size_call(this_cpu_write_, pcp, val)
         |                                         ^~~~~~~~~~~~~~~~
   kernel/trace/ftrace.c:8898:17: note: in expansion of macro 'this_cpu_write'
    8898 |                 this_cpu_write(tr->array_buffer.data->ftrace_ignore_pid,
         |                 ^~~~~~~~~~~~~~


vim +267 ./arch/arm64/include/asm/percpu.h

   256	
   257	#define this_cpu_read_1(pcp)		\
   258		_pcp_wrap_return(__percpu_read_8, pcp)
   259	#define this_cpu_read_2(pcp)		\
   260		_pcp_wrap_return(__percpu_read_16, pcp)
   261	#define this_cpu_read_4(pcp)		\
   262		_pcp_wrap_return(__percpu_read_32, pcp)
   263	#define this_cpu_read_8(pcp)		\
   264		_pcp_wrap_return(__percpu_read_64, pcp)
   265	
   266	#define this_cpu_write_1(pcp, val)	\
 > 267		_pcp_wrap(__percpu_write_8, pcp, (unsigned long)val)
   268	#define this_cpu_write_2(pcp, val)	\
 > 269		_pcp_wrap(__percpu_write_16, pcp, (unsigned long)val)
   270	#define this_cpu_write_4(pcp, val)	\
 > 271		_pcp_wrap(__percpu_write_32, pcp, (unsigned long)val)
   272	#define this_cpu_write_8(pcp, val)	\
   273		_pcp_wrap(__percpu_write_64, pcp, (unsigned long)val)
   274	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki