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 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 :::::: CC: David S. Miller --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org