[linuxppc:next-test 71/141] drivers/net/ethernet/sfc/falcon/farch.c:994:10: warning: shift count is negative

From: kernel test robot
Date: Tue Aug 31 2021 - 22:55:27 EST


tree: https://github.com/linuxppc/linux next-test
head: c7dee506ec3450717e84518ab3a6a3f2ce755cf6
commit: 1e688dd2a3d6759d416616ff07afc4bb836c4213 [71/141] powerpc/bug: Provide better flexibility to WARN_ON/__WARN_FLAGS() with asm goto
config: powerpc-randconfig-r031-20210901 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 4b1fde8a2b681dad2ce0c082a5d6422caa06b0bc)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
# https://github.com/linuxppc/linux/commit/1e688dd2a3d6759d416616ff07afc4bb836c4213
git remote add linuxppc https://github.com/linuxppc/linux
git fetch --no-tags linuxppc next-test
git checkout 1e688dd2a3d6759d416616ff07afc4bb836c4213
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> drivers/net/ethernet/sfc/falcon/farch.c:994:10: warning: shift count is negative [-Wshift-count-negative]
WARN_ON(EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_Q_LABEL) !=
~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/sfc/falcon/bitfield.h:222:26: note: expanded from macro 'EF4_QWORD_FIELD'
#define EF4_QWORD_FIELD EF4_QWORD_FIELD64
^
drivers/net/ethernet/sfc/falcon/bitfield.h:173:2: note: expanded from macro 'EF4_QWORD_FIELD64'
EF4_EXTRACT_QWORD64(qword, EF4_LOW_BIT(field), \
^
drivers/net/ethernet/sfc/falcon/bitfield.h:149:3: note: expanded from macro 'EF4_EXTRACT_QWORD64'
(EF4_EXTRACT64((qword).u64[0], 0, 63, low, high) & \
^
note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
arch/powerpc/include/asm/bug.h:122:30: note: expanded from macro 'WARN_ON'
__label_warn_on, "r" (x)); \
~~~~~~~~~~~~~~~~~~~~~~^~~
arch/powerpc/include/asm/bug.h:75:7: note: expanded from macro 'WARN_ENTRY'
##__VA_ARGS__ : : label)
~~^~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:254:42: note: expanded from macro 'asm_volatile_goto'
#define asm_volatile_goto(x...) asm goto(x)
^
1 warning generated.


vim +994 drivers/net/ethernet/sfc/falcon/farch.c

5a6681e22c1409 Edward Cree 2016-11-28 970
5a6681e22c1409 Edward Cree 2016-11-28 971 /* Handle a packet received event
5a6681e22c1409 Edward Cree 2016-11-28 972 *
5a6681e22c1409 Edward Cree 2016-11-28 973 * The NIC gives a "discard" flag if it's a unicast packet with the
5a6681e22c1409 Edward Cree 2016-11-28 974 * wrong destination address
5a6681e22c1409 Edward Cree 2016-11-28 975 * Also "is multicast" and "matches multicast filter" flags can be used to
5a6681e22c1409 Edward Cree 2016-11-28 976 * discard non-matching multicast packets.
5a6681e22c1409 Edward Cree 2016-11-28 977 */
5a6681e22c1409 Edward Cree 2016-11-28 978 static void
5a6681e22c1409 Edward Cree 2016-11-28 979 ef4_farch_handle_rx_event(struct ef4_channel *channel, const ef4_qword_t *event)
5a6681e22c1409 Edward Cree 2016-11-28 980 {
5a6681e22c1409 Edward Cree 2016-11-28 981 unsigned int rx_ev_desc_ptr, rx_ev_byte_cnt;
5a6681e22c1409 Edward Cree 2016-11-28 982 unsigned int rx_ev_hdr_type, rx_ev_mcast_pkt;
5a6681e22c1409 Edward Cree 2016-11-28 983 unsigned expected_ptr;
5a6681e22c1409 Edward Cree 2016-11-28 984 bool rx_ev_pkt_ok, rx_ev_sop, rx_ev_cont;
5a6681e22c1409 Edward Cree 2016-11-28 985 u16 flags;
5a6681e22c1409 Edward Cree 2016-11-28 986 struct ef4_rx_queue *rx_queue;
5a6681e22c1409 Edward Cree 2016-11-28 987 struct ef4_nic *efx = channel->efx;
5a6681e22c1409 Edward Cree 2016-11-28 988
6aa7de059173a9 Mark Rutland 2017-10-23 989 if (unlikely(READ_ONCE(efx->reset_pending)))
5a6681e22c1409 Edward Cree 2016-11-28 990 return;
5a6681e22c1409 Edward Cree 2016-11-28 991
5a6681e22c1409 Edward Cree 2016-11-28 992 rx_ev_cont = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_JUMBO_CONT);
5a6681e22c1409 Edward Cree 2016-11-28 993 rx_ev_sop = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_SOP);
5a6681e22c1409 Edward Cree 2016-11-28 @994 WARN_ON(EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_Q_LABEL) !=
5a6681e22c1409 Edward Cree 2016-11-28 995 channel->channel);
5a6681e22c1409 Edward Cree 2016-11-28 996
5a6681e22c1409 Edward Cree 2016-11-28 997 rx_queue = ef4_channel_get_rx_queue(channel);
5a6681e22c1409 Edward Cree 2016-11-28 998
5a6681e22c1409 Edward Cree 2016-11-28 999 rx_ev_desc_ptr = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_DESC_PTR);
5a6681e22c1409 Edward Cree 2016-11-28 1000 expected_ptr = ((rx_queue->removed_count + rx_queue->scatter_n) &
5a6681e22c1409 Edward Cree 2016-11-28 1001 rx_queue->ptr_mask);
5a6681e22c1409 Edward Cree 2016-11-28 1002
5a6681e22c1409 Edward Cree 2016-11-28 1003 /* Check for partial drops and other errors */
5a6681e22c1409 Edward Cree 2016-11-28 1004 if (unlikely(rx_ev_desc_ptr != expected_ptr) ||
5a6681e22c1409 Edward Cree 2016-11-28 1005 unlikely(rx_ev_sop != (rx_queue->scatter_n == 0))) {
5a6681e22c1409 Edward Cree 2016-11-28 1006 if (rx_ev_desc_ptr != expected_ptr &&
5a6681e22c1409 Edward Cree 2016-11-28 1007 !ef4_farch_handle_rx_bad_index(rx_queue, rx_ev_desc_ptr))
5a6681e22c1409 Edward Cree 2016-11-28 1008 return;
5a6681e22c1409 Edward Cree 2016-11-28 1009
5a6681e22c1409 Edward Cree 2016-11-28 1010 /* Discard all pending fragments */
5a6681e22c1409 Edward Cree 2016-11-28 1011 if (rx_queue->scatter_n) {
5a6681e22c1409 Edward Cree 2016-11-28 1012 ef4_rx_packet(
5a6681e22c1409 Edward Cree 2016-11-28 1013 rx_queue,
5a6681e22c1409 Edward Cree 2016-11-28 1014 rx_queue->removed_count & rx_queue->ptr_mask,
5a6681e22c1409 Edward Cree 2016-11-28 1015 rx_queue->scatter_n, 0, EF4_RX_PKT_DISCARD);
5a6681e22c1409 Edward Cree 2016-11-28 1016 rx_queue->removed_count += rx_queue->scatter_n;
5a6681e22c1409 Edward Cree 2016-11-28 1017 rx_queue->scatter_n = 0;
5a6681e22c1409 Edward Cree 2016-11-28 1018 }
5a6681e22c1409 Edward Cree 2016-11-28 1019
5a6681e22c1409 Edward Cree 2016-11-28 1020 /* Return if there is no new fragment */
5a6681e22c1409 Edward Cree 2016-11-28 1021 if (rx_ev_desc_ptr != expected_ptr)
5a6681e22c1409 Edward Cree 2016-11-28 1022 return;
5a6681e22c1409 Edward Cree 2016-11-28 1023
5a6681e22c1409 Edward Cree 2016-11-28 1024 /* Discard new fragment if not SOP */
5a6681e22c1409 Edward Cree 2016-11-28 1025 if (!rx_ev_sop) {
5a6681e22c1409 Edward Cree 2016-11-28 1026 ef4_rx_packet(
5a6681e22c1409 Edward Cree 2016-11-28 1027 rx_queue,
5a6681e22c1409 Edward Cree 2016-11-28 1028 rx_queue->removed_count & rx_queue->ptr_mask,
5a6681e22c1409 Edward Cree 2016-11-28 1029 1, 0, EF4_RX_PKT_DISCARD);
5a6681e22c1409 Edward Cree 2016-11-28 1030 ++rx_queue->removed_count;
5a6681e22c1409 Edward Cree 2016-11-28 1031 return;
5a6681e22c1409 Edward Cree 2016-11-28 1032 }
5a6681e22c1409 Edward Cree 2016-11-28 1033 }
5a6681e22c1409 Edward Cree 2016-11-28 1034
5a6681e22c1409 Edward Cree 2016-11-28 1035 ++rx_queue->scatter_n;
5a6681e22c1409 Edward Cree 2016-11-28 1036 if (rx_ev_cont)
5a6681e22c1409 Edward Cree 2016-11-28 1037 return;
5a6681e22c1409 Edward Cree 2016-11-28 1038
5a6681e22c1409 Edward Cree 2016-11-28 1039 rx_ev_byte_cnt = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_BYTE_CNT);
5a6681e22c1409 Edward Cree 2016-11-28 1040 rx_ev_pkt_ok = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_PKT_OK);
5a6681e22c1409 Edward Cree 2016-11-28 1041 rx_ev_hdr_type = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_HDR_TYPE);
5a6681e22c1409 Edward Cree 2016-11-28 1042
5a6681e22c1409 Edward Cree 2016-11-28 1043 if (likely(rx_ev_pkt_ok)) {
5a6681e22c1409 Edward Cree 2016-11-28 1044 /* If packet is marked as OK then we can rely on the
5a6681e22c1409 Edward Cree 2016-11-28 1045 * hardware checksum and classification.
5a6681e22c1409 Edward Cree 2016-11-28 1046 */
5a6681e22c1409 Edward Cree 2016-11-28 1047 flags = 0;
5a6681e22c1409 Edward Cree 2016-11-28 1048 switch (rx_ev_hdr_type) {
5a6681e22c1409 Edward Cree 2016-11-28 1049 case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_TCP:
5a6681e22c1409 Edward Cree 2016-11-28 1050 flags |= EF4_RX_PKT_TCP;
df561f6688fef7 Gustavo A. R. Silva 2020-08-23 1051 fallthrough;
5a6681e22c1409 Edward Cree 2016-11-28 1052 case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_UDP:
5a6681e22c1409 Edward Cree 2016-11-28 1053 flags |= EF4_RX_PKT_CSUMMED;
df561f6688fef7 Gustavo A. R. Silva 2020-08-23 1054 fallthrough;
5a6681e22c1409 Edward Cree 2016-11-28 1055 case FSE_CZ_RX_EV_HDR_TYPE_IPV4V6_OTHER:
5a6681e22c1409 Edward Cree 2016-11-28 1056 case FSE_AZ_RX_EV_HDR_TYPE_OTHER:
5a6681e22c1409 Edward Cree 2016-11-28 1057 break;
5a6681e22c1409 Edward Cree 2016-11-28 1058 }
5a6681e22c1409 Edward Cree 2016-11-28 1059 } else {
5a6681e22c1409 Edward Cree 2016-11-28 1060 flags = ef4_farch_handle_rx_not_ok(rx_queue, event);
5a6681e22c1409 Edward Cree 2016-11-28 1061 }
5a6681e22c1409 Edward Cree 2016-11-28 1062
5a6681e22c1409 Edward Cree 2016-11-28 1063 /* Detect multicast packets that didn't match the filter */
5a6681e22c1409 Edward Cree 2016-11-28 1064 rx_ev_mcast_pkt = EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_MCAST_PKT);
5a6681e22c1409 Edward Cree 2016-11-28 1065 if (rx_ev_mcast_pkt) {
5a6681e22c1409 Edward Cree 2016-11-28 1066 unsigned int rx_ev_mcast_hash_match =
5a6681e22c1409 Edward Cree 2016-11-28 1067 EF4_QWORD_FIELD(*event, FSF_AZ_RX_EV_MCAST_HASH_MATCH);
5a6681e22c1409 Edward Cree 2016-11-28 1068
5a6681e22c1409 Edward Cree 2016-11-28 1069 if (unlikely(!rx_ev_mcast_hash_match)) {
5a6681e22c1409 Edward Cree 2016-11-28 1070 ++channel->n_rx_mcast_mismatch;
5a6681e22c1409 Edward Cree 2016-11-28 1071 flags |= EF4_RX_PKT_DISCARD;
5a6681e22c1409 Edward Cree 2016-11-28 1072 }
5a6681e22c1409 Edward Cree 2016-11-28 1073 }
5a6681e22c1409 Edward Cree 2016-11-28 1074
5a6681e22c1409 Edward Cree 2016-11-28 1075 channel->irq_mod_score += 2;
5a6681e22c1409 Edward Cree 2016-11-28 1076
5a6681e22c1409 Edward Cree 2016-11-28 1077 /* Handle received packet */
5a6681e22c1409 Edward Cree 2016-11-28 1078 ef4_rx_packet(rx_queue,
5a6681e22c1409 Edward Cree 2016-11-28 1079 rx_queue->removed_count & rx_queue->ptr_mask,
5a6681e22c1409 Edward Cree 2016-11-28 1080 rx_queue->scatter_n, rx_ev_byte_cnt, flags);
5a6681e22c1409 Edward Cree 2016-11-28 1081 rx_queue->removed_count += rx_queue->scatter_n;
5a6681e22c1409 Edward Cree 2016-11-28 1082 rx_queue->scatter_n = 0;
5a6681e22c1409 Edward Cree 2016-11-28 1083 }
5a6681e22c1409 Edward Cree 2016-11-28 1084

:::::: The code at line 994 was first introduced by commit
:::::: 5a6681e22c1409089132085811857d6da828761b sfc: separate out SFC4000 ("Falcon") support into new sfc-falcon driver

:::::: TO: Edward Cree <ecree@xxxxxxxxxxxxxx>
:::::: CC: David S. Miller <davem@xxxxxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip