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

kernel test robot <[email protected]> Sat, 01 Aug 2026 17:41:55 +0800
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:   f14d3c444eacd9a722e55ff59e30cce2b1ac8985
commit: 55cddf3387a963a59fa5f7e0df28d64fc2d8aa51 [11/17] arm64: percpu: Implement preemptible read/write ops
config: arm64-randconfig-003-20260801 (https://download.01.org/0day-ci/archive/20260801/[email protected]/config)
compiler: aarch64-linux-gcc (GCC) 14.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260801/[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:278:42: warning: conversion from 'long unsigned int' to 'u8' {aka 'unsigned char'} changes value from '18446744073709551615' to '255' [-Woverflow]
     278 |         _pcp_wrap(__percpu_write_8, pcp, (unsigned long)val)
   arch/arm64/include/asm/percpu.h:260:20: note: in definition of macro '_pcp_wrap'
     260 |         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:280:43: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '18446744073709551615' to '65535' [-Woverflow]
     280 |         _pcp_wrap(__percpu_write_16, pcp, (unsigned long)val)
   arch/arm64/include/asm/percpu.h:260:20: note: in definition of macro '_pcp_wrap'
     260 |         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:282:43: warning: conversion from 'long unsigned int' to 'u32' {aka 'unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Woverflow]
     282 |         _pcp_wrap(__percpu_write_32, pcp, (unsigned long)val)
   arch/arm64/include/asm/percpu.h:260:20: note: in definition of macro '_pcp_wrap'
     260 |         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:278:42: warning: conversion from 'long unsigned int' to 'u8' {aka 'unsigned char'} changes value from '18446744073709551615' to '255' [-Woverflow]
     278 |         _pcp_wrap(__percpu_write_8, pcp, (unsigned long)val)
   arch/arm64/include/asm/percpu.h:260:20: note: in definition of macro '_pcp_wrap'
     260 |         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:280:43: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '18446744073709551615' to '65535' [-Woverflow]
     280 |         _pcp_wrap(__percpu_write_16, pcp, (unsigned long)val)
   arch/arm64/include/asm/percpu.h:260:20: note: in definition of macro '_pcp_wrap'
     260 |         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:282:43: warning: conversion from 'long unsigned int' to 'u32' {aka 'unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Woverflow]
     282 |         _pcp_wrap(__percpu_write_32, pcp, (unsigned long)val)
   arch/arm64/include/asm/percpu.h:260:20: note: in definition of macro '_pcp_wrap'
     260 |         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 +278 arch/arm64/include/asm/percpu.h

   267	
   268	#define this_cpu_read_1(pcp)		\
   269		_pcp_wrap_return(__percpu_read_8, pcp)
   270	#define this_cpu_read_2(pcp)		\
   271		_pcp_wrap_return(__percpu_read_16, pcp)
   272	#define this_cpu_read_4(pcp)		\
   273		_pcp_wrap_return(__percpu_read_32, pcp)
   274	#define this_cpu_read_8(pcp)		\
   275		_pcp_wrap_return(__percpu_read_64, pcp)
   276	
   277	#define this_cpu_write_1(pcp, val)	\
 > 278		_pcp_wrap(__percpu_write_8, pcp, (unsigned long)val)
   279	#define this_cpu_write_2(pcp, val)	\
 > 280		_pcp_wrap(__percpu_write_16, pcp, (unsigned long)val)
   281	#define this_cpu_write_4(pcp, val)	\
 > 282		_pcp_wrap(__percpu_write_32, pcp, (unsigned long)val)
   283	#define this_cpu_write_8(pcp, val)	\
   284		_pcp_wrap(__percpu_write_64, pcp, (unsigned long)val)
   285	

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