From: Chen Pei <cp0613@linux.alibaba.com>
This patch introduces a generic bitops rotate implementation that moves
the ror* and rol* functions from include/linux/bitops.h.
Signed-off-by: Chen Pei <cp0613@linux.alibaba.com>
---
include/asm-generic/bitops.h | 2 +-
include/asm-generic/bitops/rotate.h | 98 +++++++++++++++++++++++++++++
include/linux/bitops.h | 80 -----------------------
tools/include/asm-generic/bitops.h | 2 +-
4 files changed, 100 insertions(+), 82 deletions(-)
create mode 100644 include/asm-generic/bitops/rotate.h
diff --git a/include/asm-generic/bitops.h b/include/asm-generic/bitops.h
index a47b8a71d6fe..8f30aac8325c 100644
--- a/include/asm-generic/bitops.h
+++ b/include/asm-generic/bitops.h
@@ -29,7 +29,7 @@
#include <asm-generic/bitops/ffs.h>
#include <asm-generic/bitops/hweight.h>
#include <asm-generic/bitops/lock.h>
-
+#include <asm-generic/bitops/rotate.h>
#include <asm-generic/bitops/atomic.h>
#include <asm-generic/bitops/non-atomic.h>
#include <asm-generic/bitops/le.h>
diff --git a/include/asm-generic/bitops/rotate.h b/include/asm-generic/bitops/rotate.h
new file mode 100644
index 000000000000..65449fefb402
--- /dev/null
+++ b/include/asm-generic/bitops/rotate.h
@@ -0,0 +1,98 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _ASM_GENERIC_BITOPS_ROTATE_H_
+#define _ASM_GENERIC_BITOPS_ROTATE_H_
+
+#include <asm/types.h>
+
+/**
+ * generic_rol64 - rotate a 64-bit value left
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u64 generic_rol64(u64 word, unsigned int shift)
+{
+ return (word << (shift & 63)) | (word >> ((-shift) & 63));
+}
+
+/**
+ * generic_ror64 - rotate a 64-bit value right
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u64 generic_ror64(u64 word, unsigned int shift)
+{
+ return (word >> (shift & 63)) | (word << ((-shift) & 63));
+}
+
+/**
+ * generic_rol32 - rotate a 32-bit value left
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u32 generic_rol32(u32 word, unsigned int shift)
+{
+ return (word << (shift & 31)) | (word >> ((-shift) & 31));
+}
+
+/**
+ * generic_ror32 - rotate a 32-bit value right
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u32 generic_ror32(u32 word, unsigned int shift)
+{
+ return (word >> (shift & 31)) | (word << ((-shift) & 31));
+}
+
+/**
+ * generic_rol16 - rotate a 16-bit value left
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u16 generic_rol16(u16 word, unsigned int shift)
+{
+ return (word << (shift & 15)) | (word >> ((-shift) & 15));
+}
+
+/**
+ * generic_ror16 - rotate a 16-bit value right
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u16 generic_ror16(u16 word, unsigned int shift)
+{
+ return (word >> (shift & 15)) | (word << ((-shift) & 15));
+}
+
+/**
+ * generic_rol8 - rotate an 8-bit value left
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u8 generic_rol8(u8 word, unsigned int shift)
+{
+ return (word << (shift & 7)) | (word >> ((-shift) & 7));
+}
+
+/**
+ * generic_ror8 - rotate an 8-bit value right
+ * @word: value to rotate
+ * @shift: bits to roll
+ */
+static __always_inline u8 generic_ror8(u8 word, unsigned int shift)
+{
+ return (word >> (shift & 7)) | (word << ((-shift) & 7));
+}
+
+#ifndef __HAVE_ARCH_ROTATE
+#define rol64(word, shift) generic_rol64(word, shift)
+#define ror64(word, shift) generic_ror64(word, shift)
+#define rol32(word, shift) generic_rol32(word, shift)
+#define ror32(word, shift) generic_ror32(word, shift)
+#define rol16(word, shift) generic_rol16(word, shift)
+#define ror16(word, shift) generic_ror16(word, shift)
+#define rol8(word, shift) generic_rol8(word, shift)
+#define ror8(word, shift) generic_ror8(word, shift)
+#endif
+
+#endif /* _ASM_GENERIC_BITOPS_ROTATE_H_ */
diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index c1cb53cf2f0f..1f8ef472cfb3 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -97,86 +97,6 @@ static __always_inline unsigned long hweight_long(unsigned long w)
return sizeof(w) == 4 ? hweight32(w) : hweight64((__u64)w);
}
-/**
- * rol64 - rotate a 64-bit value left
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u64 rol64(__u64 word, unsigned int shift)
-{
- return (word << (shift & 63)) | (word >> ((-shift) & 63));
-}
-
-/**
- * ror64 - rotate a 64-bit value right
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u64 ror64(__u64 word, unsigned int shift)
-{
- return (word >> (shift & 63)) | (word << ((-shift) & 63));
-}
-
-/**
- * rol32 - rotate a 32-bit value left
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u32 rol32(__u32 word, unsigned int shift)
-{
- return (word << (shift & 31)) | (word >> ((-shift) & 31));
-}
-
-/**
- * ror32 - rotate a 32-bit value right
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u32 ror32(__u32 word, unsigned int shift)
-{
- return (word >> (shift & 31)) | (word << ((-shift) & 31));
-}
-
-/**
- * rol16 - rotate a 16-bit value left
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u16 rol16(__u16 word, unsigned int shift)
-{
- return (word << (shift & 15)) | (word >> ((-shift) & 15));
-}
-
-/**
- * ror16 - rotate a 16-bit value right
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u16 ror16(__u16 word, unsigned int shift)
-{
- return (word >> (shift & 15)) | (word << ((-shift) & 15));
-}
-
-/**
- * rol8 - rotate an 8-bit value left
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u8 rol8(__u8 word, unsigned int shift)
-{
- return (word << (shift & 7)) | (word >> ((-shift) & 7));
-}
-
-/**
- * ror8 - rotate an 8-bit value right
- * @word: value to rotate
- * @shift: bits to roll
- */
-static inline __u8 ror8(__u8 word, unsigned int shift)
-{
- return (word >> (shift & 7)) | (word << ((-shift) & 7));
-}
-
/**
* sign_extend32 - sign extend a 32-bit value using specified bit as sign-bit
* @value: value to sign extend
diff --git a/tools/include/asm-generic/bitops.h b/tools/include/asm-generic/bitops.h
index 9ab313e93555..bfa06c6babe3 100644
--- a/tools/include/asm-generic/bitops.h
+++ b/tools/include/asm-generic/bitops.h
@@ -24,7 +24,7 @@
#endif
#include <asm-generic/bitops/hweight.h>
-
+#include <asm-generic/bitops/rotate.h>
#include <asm-generic/bitops/atomic.h>
#include <asm-generic/bitops/non-atomic.h>
--
2.49.0
Hi, kernel test robot noticed the following build warnings: [auto build test WARNING on arnd-asm-generic/master] [also build test WARNING on linus/master v6.16-rc3 next-20250623] [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/cp0613-linux-alibaba-com/bitops-generic-rotate/20250620-192016 base: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git master patch link: https://lore.kernel.org/r/20250620111610.52750-2-cp0613%40linux.alibaba.com patch subject: [PATCH 1/2] bitops: generic rotate config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20250623/202506231924.kPX5UiaD-lkp@intel.com/config) compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 875b36a8742437b95f623bab1e0332562c7b4b3f) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250623/202506231924.kPX5UiaD-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/202506231924.kPX5UiaD-lkp@intel.com/ All warnings (new ones prefixed by >>): | ^ In file included from drivers/net/ethernet/pensando/ionic/ionic_txrx.c:5: In file included from include/linux/ipv6.h:102: In file included from include/linux/tcp.h:19: In file included from include/net/sock.h:46: In file included from include/linux/netdevice.h:44: In file included from include/uapi/linux/neighbour.h:6: In file included from include/linux/netlink.h:9: In file included from include/net/scm.h:13: In file included from include/net/compat.h:8: include/linux/compat.h:458:22: warning: array index 1 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds] 458 | case 2: v.sig[3] = (set->sig[1] >> 32); v.sig[2] = set->sig[1]; | ^ ~ arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here 18 | unsigned long sig[_NSIG_WORDS]; | ^ In file included from drivers/net/ethernet/pensando/ionic/ionic_txrx.c:5: In file included from include/linux/ipv6.h:102: In file included from include/linux/tcp.h:19: In file included from include/net/sock.h:46: In file included from include/linux/netdevice.h:44: In file included from include/uapi/linux/neighbour.h:6: In file included from include/linux/netlink.h:9: In file included from include/net/scm.h:13: In file included from include/net/compat.h:8: include/linux/compat.h:458:10: warning: array index 3 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds] 458 | case 2: v.sig[3] = (set->sig[1] >> 32); v.sig[2] = set->sig[1]; | ^ ~ include/linux/compat.h:130:2: note: array 'sig' declared here 130 | compat_sigset_word sig[_COMPAT_NSIG_WORDS]; | ^ include/linux/compat.h:458:42: warning: array index 2 is past the end of the array (that has type 'compat_sigset_word[2]' (aka 'unsigned int[2]')) [-Warray-bounds] 458 | case 2: v.sig[3] = (set->sig[1] >> 32); v.sig[2] = set->sig[1]; | ^ ~ include/linux/compat.h:130:2: note: array 'sig' declared here 130 | compat_sigset_word sig[_COMPAT_NSIG_WORDS]; | ^ include/linux/compat.h:458:53: warning: array index 1 is past the end of the array (that has type 'const unsigned long[1]') [-Warray-bounds] 458 | case 2: v.sig[3] = (set->sig[1] >> 32); v.sig[2] = set->sig[1]; | ^ ~ arch/powerpc/include/uapi/asm/signal.h:18:2: note: array 'sig' declared here 18 | unsigned long sig[_NSIG_WORDS]; | ^ In file included from drivers/net/ethernet/pensando/ionic/ionic_txrx.c:5: In file included from include/linux/ipv6.h:102: In file included from include/linux/tcp.h:20: In file included from include/net/inet_connection_sock.h:21: In file included from include/net/inet_sock.h:18: include/linux/jhash.h:83:3: error: call to undeclared function 'rol32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 83 | __jhash_mix(a, b, c); | ^ include/linux/jhash.h:37:16: note: expanded from macro '__jhash_mix' 37 | a -= c; a ^= rol32(c, 4); c += b; \ | ^ include/linux/jhash.h:101:4: error: call to undeclared function 'rol32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 101 | __jhash_final(a, b, c); | ^ include/linux/jhash.h:48:15: note: expanded from macro '__jhash_final' 48 | c ^= b; c -= rol32(b, 14); \ | ^ include/linux/jhash.h:129:3: error: call to undeclared function 'rol32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 129 | __jhash_mix(a, b, c); | ^ include/linux/jhash.h:37:16: note: expanded from macro '__jhash_mix' 37 | a -= c; a ^= rol32(c, 4); c += b; \ | ^ include/linux/jhash.h:139:3: error: call to undeclared function 'rol32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 139 | __jhash_final(a, b, c); | ^ include/linux/jhash.h:48:15: note: expanded from macro '__jhash_final' 48 | c ^= b; c -= rol32(b, 14); \ | ^ include/linux/jhash.h:156:2: error: call to undeclared function 'rol32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 156 | __jhash_final(a, b, c); | ^ include/linux/jhash.h:48:15: note: expanded from macro '__jhash_final' 48 | c ^= b; c -= rol32(b, 14); \ | ^ In file included from drivers/net/ethernet/pensando/ionic/ionic_txrx.c:7: In file included from include/net/ip6_checksum.h:27: In file included from include/net/ip.h:30: In file included from include/net/route.h:24: In file included from include/net/inetpeer.h:16: include/net/ipv6.h:975:9: error: call to undeclared function 'rol32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 975 | hash = rol32(hash, 16); | ^ In file included from drivers/net/ethernet/pensando/ionic/ionic_txrx.c:7: In file included from include/net/ip6_checksum.h:27: include/net/ip.h:478:14: warning: default initialization of an object of type 'typeof (rt->dst.expires)' (aka 'const unsigned long') leaves the object uninitialized [-Wdefault-const-init-var-unsafe] 478 | if (mtu && time_before(jiffies, rt->dst.expires)) | ^ include/linux/jiffies.h:138:26: note: expanded from macro 'time_before' 138 | #define time_before(a,b) time_after(b,a) | ^ include/linux/jiffies.h:128:3: note: expanded from macro 'time_after' 128 | (typecheck(unsigned long, a) && \ | ^ include/linux/typecheck.h:11:12: note: expanded from macro 'typecheck' 11 | typeof(x) __dummy2; \ | ^ >> drivers/net/ethernet/pensando/ionic/ionic_txrx.c:203:30: warning: implicit conversion from 'unsigned long' to 'u16' (aka 'unsigned short') changes value from 65536 to 0 [-Wconstant-conversion] 203 | frag_len = min_t(u16, len, IONIC_PAGE_SIZE); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ drivers/net/ethernet/pensando/ionic/ionic_dev.h:184:32: note: expanded from macro 'IONIC_PAGE_SIZE' 184 | #define IONIC_PAGE_SIZE MIN(PAGE_SIZE, IONIC_MAX_BUF_LEN) | ^ include/vdso/page.h:15:30: note: expanded from macro 'PAGE_SIZE' 15 | #define PAGE_SIZE (_AC(1,UL) << CONFIG_PAGE_SHIFT) | ^ include/linux/minmax.h:314:30: note: expanded from macro 'MIN' 314 | #define MIN(a, b) __cmp(min, a, b) | ^ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/minmax.h:161:52: note: expanded from macro 'min_t' 161 | #define min_t(type, x, y) __cmp_once(min, type, x, y) | ~~~~~~~~~~~~~~~~~~~~~~~~~^~ include/linux/minmax.h:89:33: note: expanded from macro '__cmp_once' 89 | __cmp_once_unique(op, type, x, y, __UNIQUE_ID(x_), __UNIQUE_ID(y_)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/minmax.h:86:31: note: expanded from macro '__cmp_once_unique' 86 | ({ type ux = (x); type uy = (y); __cmp(op, ux, uy); }) | ~~ ^ drivers/net/ethernet/pensando/ionic/ionic_txrx.c:803:36: warning: implicit conversion from 'unsigned long' to 'u16' (aka 'unsigned short') changes value from 65536 to 0 [-Wconstant-conversion] 803 | first_frag_len = min_t(u16, len, IONIC_PAGE_SIZE); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ drivers/net/ethernet/pensando/ionic/ionic_dev.h:184:32: note: expanded from macro 'IONIC_PAGE_SIZE' 184 | #define IONIC_PAGE_SIZE MIN(PAGE_SIZE, IONIC_MAX_BUF_LEN) | ^ include/vdso/page.h:15:30: note: expanded from macro 'PAGE_SIZE' 15 | #define PAGE_SIZE (_AC(1,UL) << CONFIG_PAGE_SHIFT) | ^ include/linux/minmax.h:314:30: note: expanded from macro 'MIN' 314 | #define MIN(a, b) __cmp(min, a, b) | ^ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/minmax.h:161:52: note: expanded from macro 'min_t' 161 | #define min_t(type, x, y) __cmp_once(min, type, x, y) | ~~~~~~~~~~~~~~~~~~~~~~~~~^~ include/linux/minmax.h:89:33: note: expanded from macro '__cmp_once' 89 | __cmp_once_unique(op, type, x, y, __UNIQUE_ID(x_), __UNIQUE_ID(y_)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/minmax.h:86:31: note: expanded from macro '__cmp_once_unique' 86 | ({ type ux = (x); type uy = (y); __cmp(op, ux, uy); }) | ~~ ^ drivers/net/ethernet/pensando/ionic/ionic_txrx.c:838:38: warning: implicit conversion from 'unsigned long' to 'u16' (aka 'unsigned short') changes value from 65536 to 0 [-Wconstant-conversion] 838 | frag_len = min_t(u16, remain_len, IONIC_PAGE_SIZE); | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ drivers/net/ethernet/pensando/ionic/ionic_dev.h:184:32: note: expanded from macro 'IONIC_PAGE_SIZE' 184 | #define IONIC_PAGE_SIZE MIN(PAGE_SIZE, IONIC_MAX_BUF_LEN) | ^ include/vdso/page.h:15:30: note: expanded from macro 'PAGE_SIZE' 15 | #define PAGE_SIZE (_AC(1,UL) << CONFIG_PAGE_SHIFT) | ^ include/linux/minmax.h:314:30: note: expanded from macro 'MIN' 314 | #define MIN(a, b) __cmp(min, a, b) | ^ note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/minmax.h:161:52: note: expanded from macro 'min_t' 161 | #define min_t(type, x, y) __cmp_once(min, type, x, y) | ~~~~~~~~~~~~~~~~~~~~~~~~~^~ include/linux/minmax.h:89:33: note: expanded from macro '__cmp_once' 89 | __cmp_once_unique(op, type, x, y, __UNIQUE_ID(x_), __UNIQUE_ID(y_)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/minmax.h:86:31: note: expanded from macro '__cmp_once_unique' 86 | ({ type ux = (x); type uy = (y); __cmp(op, ux, uy); }) | ~~ ^ 16 warnings and 9 errors generated. vim +203 drivers/net/ethernet/pensando/ionic/ionic_txrx.c 36a47c906b23240 Shannon Nelson 2024-03-06 174 36a47c906b23240 Shannon Nelson 2024-03-06 175 static struct sk_buff *ionic_rx_build_skb(struct ionic_queue *q, 4dcd4575bfb17d0 Shannon Nelson 2024-03-06 176 struct ionic_rx_desc_info *desc_info, f81da39bf4c0a54 Shannon Nelson 2024-02-14 177 unsigned int headroom, f81da39bf4c0a54 Shannon Nelson 2024-02-14 178 unsigned int len, f81da39bf4c0a54 Shannon Nelson 2024-02-14 179 unsigned int num_sg_elems, 180e35cdf035d1c Shannon Nelson 2024-02-14 180 bool synced) 0f3154e6bcb3549 Shannon Nelson 2019-09-03 181 { 4b0a7539a3728f0 Shannon Nelson 2021-03-10 182 struct ionic_buf_info *buf_info; 08f2e4b2b2008ce Shannon Nelson 2019-10-23 183 struct sk_buff *skb; 08f2e4b2b2008ce Shannon Nelson 2019-10-23 184 unsigned int i; 08f2e4b2b2008ce Shannon Nelson 2019-10-23 185 u16 frag_len; 08f2e4b2b2008ce Shannon Nelson 2019-10-23 186 4b0a7539a3728f0 Shannon Nelson 2021-03-10 187 buf_info = &desc_info->bufs[0]; e75ccac1d0644c9 Shannon Nelson 2021-07-27 188 prefetchw(buf_info->page); 08f2e4b2b2008ce Shannon Nelson 2019-10-23 189 89e572e7369fd9a Shannon Nelson 2021-03-10 190 skb = napi_get_frags(&q_to_qcq(q)->napi); 89e572e7369fd9a Shannon Nelson 2021-03-10 191 if (unlikely(!skb)) { 89e572e7369fd9a Shannon Nelson 2021-03-10 192 net_warn_ratelimited("%s: SKB alloc failed on %s!\n", 36a47c906b23240 Shannon Nelson 2024-03-06 193 dev_name(q->dev), q->name); 2854242d23a7b3a Shannon Nelson 2024-03-06 194 q_to_rx_stats(q)->alloc_err++; 08f2e4b2b2008ce Shannon Nelson 2019-10-23 195 return NULL; 89e572e7369fd9a Shannon Nelson 2021-03-10 196 } ac8813c0ab7d281 Shannon Nelson 2024-09-06 197 skb_mark_for_recycle(skb); 08f2e4b2b2008ce Shannon Nelson 2019-10-23 198 f81da39bf4c0a54 Shannon Nelson 2024-02-14 199 if (headroom) 36a47c906b23240 Shannon Nelson 2024-03-06 200 frag_len = min_t(u16, len, 36a47c906b23240 Shannon Nelson 2024-03-06 201 IONIC_XDP_MAX_LINEAR_MTU + VLAN_ETH_HLEN); f81da39bf4c0a54 Shannon Nelson 2024-02-14 202 else ac8813c0ab7d281 Shannon Nelson 2024-09-06 @203 frag_len = min_t(u16, len, IONIC_PAGE_SIZE); f81da39bf4c0a54 Shannon Nelson 2024-02-14 204 36a47c906b23240 Shannon Nelson 2024-03-06 205 if (unlikely(!buf_info->page)) 36a47c906b23240 Shannon Nelson 2024-03-06 206 goto err_bad_buf_page; 36a47c906b23240 Shannon Nelson 2024-03-06 207 ionic_rx_add_skb_frag(q, skb, buf_info, headroom, frag_len, synced); 36a47c906b23240 Shannon Nelson 2024-03-06 208 len -= frag_len; 4b0a7539a3728f0 Shannon Nelson 2021-03-10 209 buf_info++; 4b0a7539a3728f0 Shannon Nelson 2021-03-10 210 36a47c906b23240 Shannon Nelson 2024-03-06 211 for (i = 0; i < num_sg_elems; i++, buf_info++) { 36a47c906b23240 Shannon Nelson 2024-03-06 212 if (unlikely(!buf_info->page)) 36a47c906b23240 Shannon Nelson 2024-03-06 213 goto err_bad_buf_page; ac8813c0ab7d281 Shannon Nelson 2024-09-06 214 frag_len = min_t(u16, len, buf_info->len); 36a47c906b23240 Shannon Nelson 2024-03-06 215 ionic_rx_add_skb_frag(q, skb, buf_info, 0, frag_len, synced); 36a47c906b23240 Shannon Nelson 2024-03-06 216 len -= frag_len; 36a47c906b23240 Shannon Nelson 2024-03-06 217 } 08f2e4b2b2008ce Shannon Nelson 2019-10-23 218 08f2e4b2b2008ce Shannon Nelson 2019-10-23 219 return skb; 36a47c906b23240 Shannon Nelson 2024-03-06 220 36a47c906b23240 Shannon Nelson 2024-03-06 221 err_bad_buf_page: 36a47c906b23240 Shannon Nelson 2024-03-06 222 dev_kfree_skb(skb); 36a47c906b23240 Shannon Nelson 2024-03-06 223 return NULL; 0f3154e6bcb3549 Shannon Nelson 2019-09-03 224 } 0f3154e6bcb3549 Shannon Nelson 2019-09-03 225 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
Hi, kernel test robot noticed the following build errors: [auto build test ERROR on arnd-asm-generic/master] [also build test ERROR on linus/master v6.16-rc2 next-20250620] [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/cp0613-linux-alibaba-com/bitops-generic-rotate/20250620-192016 base: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git master patch link: https://lore.kernel.org/r/20250620111610.52750-2-cp0613%40linux.alibaba.com patch subject: [PATCH 1/2] bitops: generic rotate reproduce: (https://download.01.org/0day-ci/archive/20250620/202506202300.dZGgBtbQ-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/202506202300.dZGgBtbQ-lkp@intel.com/ All errors (new ones prefixed by >>): make[1]: *** [Makefile:1281: prepare0] Error 2 In file included from weak.c:10: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from arch/x86/orc.c:5: In file included from tools/objtool/include/objtool/check.h:11: In file included from tools/objtool/include/objtool/arch.h:11: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from check.c:13: In file included from tools/objtool/include/objtool/arch.h:11: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from orc_gen.c:12: In file included from tools/objtool/include/objtool/check.h:11: In file included from tools/objtool/include/objtool/arch.h:11: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitIn file included from orc_dump.c:8: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found o 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ps/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from arch/x86/special.c:4: -- In file included from tools/objtool/include/objtool/check.h:11: In file included from tools/objtool/include/objtool/arch.h:11: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found :13 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ : In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. make[4]: *** [tools/build/Makefile.build:86: tools/objtool/weak.o] Error 1 In file included from elf.c:22: In file included from tools/objtool/include/objtool/elf.h:12: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from builtin-check.c:15: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from objtool.c:16: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. 1 error generated. make[5]: *** [tools/build/Makefile.build:86: tools/objtool/arch/x86/orc.o] Error 1 -- In file included from tools/objtool/include/objtool/check.h:11: In file included from tools/objtool/include/objtool/arch.h:11: In file included from tools/objtool/include/objtool/objtool.h:11: In file included from tools/include/linux/hashtable.h:13: In file included from tools/include/linux/bitops.h:52: >> tools/include/asm-generic/bitops.h:27:10: fatal error: 'asm-generic/bitops/rotate.h' file not found 27 | #include <asm-generic/bitops/rotate.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. make[4]: *** [tools/build/Makefile.build:86: tools/objtool/check.o] Error 1 1 error generated. vim +27 tools/include/asm-generic/bitops.h 25 26 #include <asm-generic/bitops/hweight.h> > 27 #include <asm-generic/bitops/rotate.h> 28 #include <asm-generic/bitops/atomic.h> 29 #include <asm-generic/bitops/non-atomic.h> 30 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
© 2016 - 2025 Red Hat, Inc.