tree:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: d15fe4ec043588beee823781602ddb51d0bc84c8
commit: adcfc3482ffff813fa2c34e5902005853f79c2aa [13398/13940] sfc_ef100: read Design
Parameters at probe time
config: microblaze-randconfig-r032-20200805 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.3.0
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
git checkout adcfc3482ffff813fa2c34e5902005853f79c2aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=microblaze
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
microblaze-linux-ld: drivers/net/ethernet/sfc/ef100_nic.o: in function
`ef100_process_design_param':
> drivers/net/ethernet/sfc/ef100_nic.c:610: undefined reference to
`__umoddi3'
vim +610 drivers/net/ethernet/sfc/ef100_nic.c
567
568 static int ef100_process_design_param(struct efx_nic *efx,
569 const struct ef100_tlv_state *reader)
570 {
571 struct ef100_nic_data *nic_data = efx->nic_data;
572
573 switch (reader->type) {
574 case ESE_EF100_DP_GZ_PAD: /* padding, skip it */
575 return 0;
576 case ESE_EF100_DP_GZ_PARTIAL_TSTAMP_SUB_NANO_BITS:
577 /* Driver doesn't support timestamping yet, so we don't care */
578 return 0;
579 case ESE_EF100_DP_GZ_EVQ_UNSOL_CREDIT_SEQ_BITS:
580 /* Driver doesn't support unsolicited-event credits yet, so
581 * we don't care
582 */
583 return 0;
584 case ESE_EF100_DP_GZ_NMMU_GROUP_SIZE:
585 /* Driver doesn't manage the NMMU (so we don't care) */
586 return 0;
587 case ESE_EF100_DP_GZ_RX_L4_CSUM_PROTOCOLS:
588 /* Driver uses CHECKSUM_COMPLETE, so we don't care about
589 * protocol checksum validation
590 */
591 return 0;
592 case ESE_EF100_DP_GZ_TSO_MAX_HDR_LEN:
593 nic_data->tso_max_hdr_len = min_t(u64, reader->value, 0xffff);
594 return 0;
595 case ESE_EF100_DP_GZ_TSO_MAX_HDR_NUM_SEGS:
596 /* We always put HDR_NUM_SEGS=1 in our TSO descriptors */
597 if (!reader->value) {
598 netif_err(efx, probe, efx->net_dev,
599 "TSO_MAX_HDR_NUM_SEGS < 1\n");
600 return -EOPNOTSUPP;
601 }
602 return 0;
603 case ESE_EF100_DP_GZ_RXQ_SIZE_GRANULARITY:
604 case ESE_EF100_DP_GZ_TXQ_SIZE_GRANULARITY:
605 /* Our TXQ and RXQ sizes are always power-of-two and thus divisible by
606 * EFX_MIN_DMAQ_SIZE, so we just need to check that
607 * EFX_MIN_DMAQ_SIZE is divisible by GRANULARITY.
608 * This is very unlikely to fail.
609 */
610 if (EFX_MIN_DMAQ_SIZE % reader->value) {
611 netif_err(efx, probe, efx->net_dev,
612 "%s size granularity is %llu, can't guarantee safety\n",
613 reader->type == ESE_EF100_DP_GZ_RXQ_SIZE_GRANULARITY ? "RXQ" :
"TXQ",
614 reader->value);
615 return -EOPNOTSUPP;
616 }
617 return 0;
618 case ESE_EF100_DP_GZ_TSO_MAX_PAYLOAD_LEN:
619 nic_data->tso_max_payload_len = min_t(u64, reader->value, GSO_MAX_SIZE);
620 efx->net_dev->gso_max_size = nic_data->tso_max_payload_len;
621 return 0;
622 case ESE_EF100_DP_GZ_TSO_MAX_PAYLOAD_NUM_SEGS:
623 nic_data->tso_max_payload_num_segs = min_t(u64, reader->value, 0xffff);
624 efx->net_dev->gso_max_segs = nic_data->tso_max_payload_num_segs;
625 return 0;
626 case ESE_EF100_DP_GZ_TSO_MAX_NUM_FRAMES:
627 nic_data->tso_max_frames = min_t(u64, reader->value, 0xffff);
628 return 0;
629 case ESE_EF100_DP_GZ_COMPAT:
630 if (reader->value) {
631 netif_err(efx, probe, efx->net_dev,
632 "DP_COMPAT has unknown bits %#llx, driver not compatible with this
hw\n",
633 reader->value);
634 return -EOPNOTSUPP;
635 }
636 return 0;
637 case ESE_EF100_DP_GZ_MEM2MEM_MAX_LEN:
638 /* Driver doesn't use mem2mem transfers */
639 return 0;
640 case ESE_EF100_DP_GZ_EVQ_TIMER_TICK_NANOS:
641 /* Driver doesn't currently use EVQ_TIMER */
642 return 0;
643 case ESE_EF100_DP_GZ_NMMU_PAGE_SIZES:
644 /* Driver doesn't manage the NMMU (so we don't care) */
645 return 0;
646 case ESE_EF100_DP_GZ_VI_STRIDES:
647 /* We never try to set the VI stride, and we don't rely on
648 * being able to find VIs past VI 0 until after we've learned
649 * the current stride from MC_CMD_GET_CAPABILITIES.
650 * So the value of this shouldn't matter.
651 */
652 if (reader->value != ESE_EF100_DP_GZ_VI_STRIDES_DEFAULT)
653 netif_dbg(efx, probe, efx->net_dev,
654 "NIC has other than default VI_STRIDES (mask "
655 "%#llx), early probing might use wrong one\n",
656 reader->value);
657 return 0;
658 case ESE_EF100_DP_GZ_RX_MAX_RUNT:
659 /* Driver doesn't look at L2_STATUS:LEN_ERR bit, so we don't
660 * care whether it indicates runt or overlength for any given
661 * packet, so we don't care about this parameter.
662 */
663 return 0;
664 default:
665 /* Host interface says "Drivers should ignore design parameters
666 * that they do not recognise."
667 */
668 netif_dbg(efx, probe, efx->net_dev,
669 "Ignoring unrecognised design parameter %u\n",
670 reader->type);
671 return 0;
672 }
673 }
674
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org