Re: [PATCH] net: stmmac: correct MAC propagation delay

From: kernel test robot
Date: Wed Jul 19 2023 - 14:55:40 EST


Hi Johannes,

kernel test robot noticed the following build errors:

[auto build test ERROR on 36395b2efe905650cd179d67411ffee3b770268b]

url: https://github.com/intel-lab-lkp/linux/commits/Johannes-Zink/net-stmmac-correct-MAC-propagation-delay/20230719-221258
base: 36395b2efe905650cd179d67411ffee3b770268b
patch link: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v1-1-768aa4d09334%40pengutronix.de
patch subject: [PATCH] net: stmmac: correct MAC propagation delay
config: i386-randconfig-i002-20230720 (https://download.01.org/0day-ci/archive/20230720/202307200225.B8rmKQPN-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230720/202307200225.B8rmKQPN-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307200225.B8rmKQPN-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

ld: drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.o: in function `correct_latency':
>> drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c:83: undefined reference to `__udivdi3'


vim +83 drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c

62
63 static void correct_latency(struct stmmac_priv *priv)
64 {
65 void __iomem *ioaddr = priv->ptpaddr;
66 u32 reg_tsic, reg_tsicsns;
67 u32 reg_tsec, reg_tsecsns;
68 u64 scaled_ns;
69 u32 val;
70
71 /* MAC-internal ingress latency */
72 scaled_ns = readl(ioaddr + PTP_TS_INGR_LAT);
73
74 /* See section 11.7.2.5.3.1 "Ingress Correction" on page 4001 of
75 * i.MX8MP Applications Processor Reference Manual Rev. 1, 06/2021
76 */
77 val = readl(ioaddr + PTP_TCR);
78 if (val & PTP_TCR_TSCTRLSSR)
79 /* nanoseconds field is in decimal format with granularity of 1ns/bit */
80 scaled_ns = (NSEC_PER_SEC << 16) - scaled_ns;
81 else
82 /* nanoseconds field is in binary format with granularity of ~0.466ns/bit */
> 83 scaled_ns = ((1ULL << 31) << 16) - scaled_ns * PSEC_PER_NSEC / 466;
84
85 reg_tsic = scaled_ns >> 16;
86 reg_tsicsns = scaled_ns & 0xff00;
87
88 /* set bit 31 for 2's compliment */
89 reg_tsic |= BIT(31);
90
91 writel(reg_tsic, ioaddr + PTP_TS_INGR_CORR_NS);
92 writel(reg_tsicsns, ioaddr + PTP_TS_INGR_CORR_SNS);
93
94 /* MAC-internal egress latency */
95 scaled_ns = readl(ioaddr + PTP_TS_EGR_LAT);
96
97 reg_tsec = scaled_ns >> 16;
98 reg_tsecsns = scaled_ns & 0xff00;
99
100 writel(reg_tsec, ioaddr + PTP_TS_EGR_CORR_NS);
101 writel(reg_tsecsns, ioaddr + PTP_TS_EGR_CORR_SNS);
102 }
103

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki