Re: [PATCH v5 1/5] Consolidate __memcpy_{to,from}io and __memset_io into iomap_copy.c

kernel test robot
2024-09-24T21:36:46Z

Hi Julian,

kernel test robot noticed the following build errors:

[auto build test ERROR on arnd-asm-generic/master]
[also build test ERROR on soc/for-next akpm-mm/mm-nonmm-unstable arm64/for-next/core linus/master v6.11 next-20240924]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Julian-Vetter/Consolidate-__memcpy_-to-from-io-and-__memset_io-into-iomap_copy-c/20240924-202154
base: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git master
patch link: https://lore.kernel.org/r/20240924121432.798655-2-jvetter%40kalrayinc.com
patch subject: [PATCH v5 1/5] Consolidate __memcpy_{to,from}io and __memset_io into iomap_copy.c
config: arm-am200epdkit_defconfig (https://download.01.org/0day-ci/archive/20240925/202409250555.Ey0vV3Df-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240925/202409250555.Ey0vV3Df-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409250555.Ey0vV3Df-lkp@intel.com/

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

lib/iomap_copy.c: In function '__memcpy_fromio':
>> lib/iomap_copy.c:89:26: error: implicit declaration of function 'IS_ALIGNED' [-Wimplicit-function-declaration]
89 | while (count && !IS_ALIGNED((unsigned long)from, NATIVE_STORE_SIZE)) {
| ^~~~~~~~~~
lib/iomap_copy.c: In function '__memset_io':
>> lib/iomap_copy.c:159:26: warning: left shift count >= width of type [-Wshift-count-overflow]
159 | qc |= qc << 32;
| ^~

vim +/IS_ALIGNED +89 lib/iomap_copy.c

84
85
86 #ifndef __memcpy_fromio
87 void __memcpy_fromio(void *to, const volatile void __iomem *from, size_t count)
88 {
> 89 while (count && !IS_ALIGNED((unsigned long)from, NATIVE_STORE_SIZE)) {
90 *(u8 *)to = __raw_readb(from);
91 from++;
92 to++;
93 count--;
94 }
95
96 while (count >= NATIVE_STORE_SIZE) {
97 #ifdef CONFIG_64BIT
98 put_unaligned(__raw_readq(from), (uintptr_t *)to);
99 #else
100 put_unaligned(__raw_readl(from), (uintptr_t *)to);
101 #endif
102
103 from += NATIVE_STORE_SIZE;
104 to += NATIVE_STORE_SIZE;
105 count -= NATIVE_STORE_SIZE;
106 }
107
108 while (count) {
109 *(u8 *)to = __raw_readb(from);
110 from++;
111 to++;
112 count--;
113 }
114 }
115 EXPORT_SYMBOL(__memcpy_fromio);
116 #endif
117
118 #ifndef __memcpy_toio
119 void __memcpy_toio(volatile void __iomem *to, const void *from, size_t count)
120 {
121 while (count && !IS_ALIGNED((unsigned long)to, NATIVE_STORE_SIZE)) {
122 __raw_writeb(*(u8 *)from, to);
123 from++;
124 to++;
125 count--;
126 }
127
128 while (count >= NATIVE_STORE_SIZE) {
129 #ifdef CONFIG_64BIT
130 __raw_writeq(get_unaligned((uintptr_t *)from), to);
131 #else
132 __raw_writel(get_unaligned((uintptr_t *)from), to);
133 #endif
134
135 from += NATIVE_STORE_SIZE;
136 to += NATIVE_STORE_SIZE;
137 count -= NATIVE_STORE_SIZE;
138 }
139
140 while (count) {
141 __raw_writeb(*(u8 *)from, to);
142 from++;
143 to++;
144 count--;
145 }
146 }
147 EXPORT_SYMBOL(__memcpy_toio);
148 #endif
149
150 #ifndef __memset_io
151 void __memset_io(volatile void __iomem *dst, int c, size_t count)
152 {
153 uintptr_t qc = (u8)c;
154
155 qc |= qc << 8;
156 qc |= qc << 16;
157
158 if (IS_ENABLED(CONFIG_64BIT))
> 159 qc |= qc << 32;

--
0-DAY CI Kernel Test Service