* [alaahl:netdev-next 16/21] drivers/net/dsa/ocelot/felix.c:357: undefined reference to `ocelot_port_add_txtstamp_skb'
@ 2019-12-15 3:17 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2019-12-15 3:17 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 16878 bytes --]
Hi Jakub,
It's probably a bug fix that unveils the link errors.
tree: https://github.com/alaahl/linux.git netdev-next
head: 5f04ed74a8a3bcb2122738b7eda857187e85aa34
commit: ab44081fef9b5d31ea5641494c9a379b0ebe1839 [16/21] sfc: fix build without CONFIG_RFS_ACCEL
config: powerpc-randconfig-a001-20191214 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 7.5.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout ab44081fef9b5d31ea5641494c9a379b0ebe1839
# save the attached .config to linux build tree
GCC_VERSION=7.5.0 make.cross ARCH=powerpc
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/net/dsa/ocelot/felix.o: In function `felix_txtstamp':
>> drivers/net/dsa/ocelot/felix.c:357: undefined reference to `ocelot_port_add_txtstamp_skb'
drivers/net/dsa/ocelot/felix.o: In function `felix_vlan_add':
drivers/net/dsa/ocelot/felix.c:112: undefined reference to `ocelot_vlan_add'
drivers/net/dsa/ocelot/felix.o: In function `felix_hwtstamp_set':
>> drivers/net/dsa/ocelot/felix.c:320: undefined reference to `ocelot_hwstamp_set'
drivers/net/dsa/ocelot/felix.o: In function `felix_teardown':
drivers/net/dsa/ocelot/felix.c:304: undefined reference to `ocelot_deinit'
drivers/net/dsa/ocelot/felix.o: In function `felix_port_enable':
drivers/net/dsa/ocelot/felix.c:146: undefined reference to `ocelot_port_enable'
drivers/net/dsa/ocelot/felix.o: In function `felix_port_disable':
drivers/net/dsa/ocelot/felix.c:155: undefined reference to `ocelot_port_disable'
drivers/net/dsa/ocelot/felix.o: In function `felix_get_strings':
drivers/net/dsa/ocelot/felix.c:163: undefined reference to `ocelot_get_strings'
drivers/net/dsa/ocelot/felix.o: In function `felix_init_structs':
drivers/net/dsa/ocelot/felix.c:220: undefined reference to `ocelot_regmap_init'
drivers/net/dsa/ocelot/felix.c:230: undefined reference to `ocelot_regfields_init'
drivers/net/dsa/ocelot/felix.o: In function `felix_setup':
drivers/net/dsa/ocelot/felix.c:285: undefined reference to `ocelot_init'
drivers/net/dsa/ocelot/felix.c:288: undefined reference to `ocelot_init_port'
drivers/net/dsa/ocelot/felix.c:291: undefined reference to `ocelot_set_cpu_port'
drivers/net/dsa/ocelot/felix.o: In function `felix_vlan_filtering':
drivers/net/dsa/ocelot/felix.c:99: undefined reference to `ocelot_port_vlan_filtering'
drivers/net/dsa/ocelot/felix.o: In function `felix_fdb_dump':
drivers/net/dsa/ocelot/felix.c:42: undefined reference to `ocelot_fdb_dump'
drivers/net/dsa/ocelot/felix.o: In function `felix_hwtstamp_get':
>> drivers/net/dsa/ocelot/felix.c:312: undefined reference to `ocelot_hwstamp_get'
drivers/net/dsa/ocelot/felix.o: In function `felix_vlan_del':
drivers/net/dsa/ocelot/felix.c:131: undefined reference to `ocelot_vlan_del'
drivers/net/dsa/ocelot/felix.o: In function `felix_get_ethtool_stats':
drivers/net/dsa/ocelot/felix.c:170: undefined reference to `ocelot_get_ethtool_stats'
drivers/net/dsa/ocelot/felix.o: In function `felix_get_ts_info':
drivers/net/dsa/ocelot/felix.c:185: undefined reference to `ocelot_get_ts_info'
drivers/net/dsa/ocelot/felix.o: In function `felix_set_ageing_time':
drivers/net/dsa/ocelot/felix.c:24: undefined reference to `ocelot_set_ageing_time'
drivers/net/dsa/ocelot/felix.o: In function `felix_get_sset_count':
drivers/net/dsa/ocelot/felix.c:177: undefined reference to `ocelot_get_sset_count'
drivers/net/dsa/ocelot/felix.o: In function `felix_fdb_del':
drivers/net/dsa/ocelot/felix.c:61: undefined reference to `ocelot_fdb_del'
drivers/net/dsa/ocelot/felix.o: In function `felix_bridge_leave':
drivers/net/dsa/ocelot/felix.c:85: undefined reference to `ocelot_port_bridge_leave'
drivers/net/dsa/ocelot/felix.o: In function `felix_adjust_link':
drivers/net/dsa/ocelot/felix.c:34: undefined reference to `ocelot_adjust_link'
drivers/net/dsa/ocelot/felix.o: In function `felix_fdb_add':
drivers/net/dsa/ocelot/felix.c:53: undefined reference to `ocelot_fdb_add'
drivers/net/dsa/ocelot/felix.c:53: undefined reference to `ocelot_fdb_add'
drivers/net/dsa/ocelot/felix.o: In function `felix_rxtstamp':
>> drivers/net/dsa/ocelot/felix.c:333: undefined reference to `ocelot_ptp_gettime64'
drivers/net/dsa/ocelot/felix.o: In function `felix_bridge_stp_state_set':
drivers/net/dsa/ocelot/felix.c:69: undefined reference to `ocelot_bridge_stp_state_set'
drivers/net/dsa/ocelot/felix.o: In function `felix_bridge_join':
drivers/net/dsa/ocelot/felix.c:77: undefined reference to `ocelot_port_bridge_join'
drivers/net/dsa/ocelot/felix.o: In function `felix_irq_handler':
>> drivers/net/dsa/ocelot/felix.c:407: undefined reference to `ocelot_get_txtstamp'
drivers/net/dsa/ocelot/felix_vsc9959.o: In function `vsc9959_reset':
drivers/net/dsa/ocelot/felix_vsc9959.c:553: undefined reference to `__ocelot_write_ix'
drivers/net/dsa/ocelot/felix_vsc9959.o: In function `vsc9959_sys_ram_init_status':
drivers/net/dsa/ocelot/felix_vsc9959.c:535: undefined reference to `__ocelot_read_ix'
drivers/net/dsa/ocelot/felix_vsc9959.c:535: undefined reference to `__ocelot_read_ix'
drivers/net/dsa/ocelot/felix_vsc9959.c:535: undefined reference to `__ocelot_read_ix'
vim +357 drivers/net/dsa/ocelot/felix.c
56051948773eeb Vladimir Oltean 2019-11-14 269
56051948773eeb Vladimir Oltean 2019-11-14 270 /* Hardware initialization done here so that we can allocate structures with
56051948773eeb Vladimir Oltean 2019-11-14 271 * devm without fear of dsa_register_switch returning -EPROBE_DEFER and causing
56051948773eeb Vladimir Oltean 2019-11-14 272 * us to allocate structures twice (leak memory) and map PCI memory twice
56051948773eeb Vladimir Oltean 2019-11-14 273 * (which will not work).
56051948773eeb Vladimir Oltean 2019-11-14 274 */
56051948773eeb Vladimir Oltean 2019-11-14 275 static int felix_setup(struct dsa_switch *ds)
56051948773eeb Vladimir Oltean 2019-11-14 276 {
56051948773eeb Vladimir Oltean 2019-11-14 277 struct ocelot *ocelot = ds->priv;
56051948773eeb Vladimir Oltean 2019-11-14 278 struct felix *felix = ocelot_to_felix(ocelot);
56051948773eeb Vladimir Oltean 2019-11-14 279 int port, err;
56051948773eeb Vladimir Oltean 2019-11-14 280
56051948773eeb Vladimir Oltean 2019-11-14 281 err = felix_init_structs(felix, ds->num_ports);
56051948773eeb Vladimir Oltean 2019-11-14 282 if (err)
56051948773eeb Vladimir Oltean 2019-11-14 283 return err;
56051948773eeb Vladimir Oltean 2019-11-14 284
56051948773eeb Vladimir Oltean 2019-11-14 @285 ocelot_init(ocelot);
56051948773eeb Vladimir Oltean 2019-11-14 286
56051948773eeb Vladimir Oltean 2019-11-14 287 for (port = 0; port < ds->num_ports; port++) {
56051948773eeb Vladimir Oltean 2019-11-14 288 ocelot_init_port(ocelot, port);
56051948773eeb Vladimir Oltean 2019-11-14 289
b8fc7177d8aef1 Vladimir Oltean 2019-11-18 290 if (dsa_is_cpu_port(ds, port))
56051948773eeb Vladimir Oltean 2019-11-14 291 ocelot_set_cpu_port(ocelot, port,
56051948773eeb Vladimir Oltean 2019-11-14 292 OCELOT_TAG_PREFIX_NONE,
56051948773eeb Vladimir Oltean 2019-11-14 293 OCELOT_TAG_PREFIX_LONG);
56051948773eeb Vladimir Oltean 2019-11-14 294 }
56051948773eeb Vladimir Oltean 2019-11-14 295
56051948773eeb Vladimir Oltean 2019-11-14 296 return 0;
56051948773eeb Vladimir Oltean 2019-11-14 297 }
56051948773eeb Vladimir Oltean 2019-11-14 298
56051948773eeb Vladimir Oltean 2019-11-14 299 static void felix_teardown(struct dsa_switch *ds)
56051948773eeb Vladimir Oltean 2019-11-14 300 {
56051948773eeb Vladimir Oltean 2019-11-14 301 struct ocelot *ocelot = ds->priv;
56051948773eeb Vladimir Oltean 2019-11-14 302
56051948773eeb Vladimir Oltean 2019-11-14 303 /* stop workqueue thread */
56051948773eeb Vladimir Oltean 2019-11-14 304 ocelot_deinit(ocelot);
56051948773eeb Vladimir Oltean 2019-11-14 305 }
56051948773eeb Vladimir Oltean 2019-11-14 306
c0bcf537667cf8 Yangbo Lu 2019-11-20 307 static int felix_hwtstamp_get(struct dsa_switch *ds, int port,
c0bcf537667cf8 Yangbo Lu 2019-11-20 308 struct ifreq *ifr)
c0bcf537667cf8 Yangbo Lu 2019-11-20 309 {
c0bcf537667cf8 Yangbo Lu 2019-11-20 310 struct ocelot *ocelot = ds->priv;
c0bcf537667cf8 Yangbo Lu 2019-11-20 311
c0bcf537667cf8 Yangbo Lu 2019-11-20 @312 return ocelot_hwstamp_get(ocelot, port, ifr);
c0bcf537667cf8 Yangbo Lu 2019-11-20 313 }
c0bcf537667cf8 Yangbo Lu 2019-11-20 314
c0bcf537667cf8 Yangbo Lu 2019-11-20 315 static int felix_hwtstamp_set(struct dsa_switch *ds, int port,
c0bcf537667cf8 Yangbo Lu 2019-11-20 316 struct ifreq *ifr)
c0bcf537667cf8 Yangbo Lu 2019-11-20 317 {
c0bcf537667cf8 Yangbo Lu 2019-11-20 318 struct ocelot *ocelot = ds->priv;
c0bcf537667cf8 Yangbo Lu 2019-11-20 319
c0bcf537667cf8 Yangbo Lu 2019-11-20 @320 return ocelot_hwstamp_set(ocelot, port, ifr);
c0bcf537667cf8 Yangbo Lu 2019-11-20 321 }
c0bcf537667cf8 Yangbo Lu 2019-11-20 322
c0bcf537667cf8 Yangbo Lu 2019-11-20 323 static bool felix_rxtstamp(struct dsa_switch *ds, int port,
c0bcf537667cf8 Yangbo Lu 2019-11-20 324 struct sk_buff *skb, unsigned int type)
c0bcf537667cf8 Yangbo Lu 2019-11-20 325 {
c0bcf537667cf8 Yangbo Lu 2019-11-20 326 struct skb_shared_hwtstamps *shhwtstamps;
c0bcf537667cf8 Yangbo Lu 2019-11-20 327 struct ocelot *ocelot = ds->priv;
c0bcf537667cf8 Yangbo Lu 2019-11-20 328 u8 *extraction = skb->data - ETH_HLEN - OCELOT_TAG_LEN;
c0bcf537667cf8 Yangbo Lu 2019-11-20 329 u32 tstamp_lo, tstamp_hi;
c0bcf537667cf8 Yangbo Lu 2019-11-20 330 struct timespec64 ts;
c0bcf537667cf8 Yangbo Lu 2019-11-20 331 u64 tstamp, val;
c0bcf537667cf8 Yangbo Lu 2019-11-20 332
c0bcf537667cf8 Yangbo Lu 2019-11-20 @333 ocelot_ptp_gettime64(&ocelot->ptp_info, &ts);
c0bcf537667cf8 Yangbo Lu 2019-11-20 334 tstamp = ktime_set(ts.tv_sec, ts.tv_nsec);
c0bcf537667cf8 Yangbo Lu 2019-11-20 335
c0bcf537667cf8 Yangbo Lu 2019-11-20 336 packing(extraction, &val, 116, 85, OCELOT_TAG_LEN, UNPACK, 0);
c0bcf537667cf8 Yangbo Lu 2019-11-20 337 tstamp_lo = (u32)val;
c0bcf537667cf8 Yangbo Lu 2019-11-20 338
c0bcf537667cf8 Yangbo Lu 2019-11-20 339 tstamp_hi = tstamp >> 32;
c0bcf537667cf8 Yangbo Lu 2019-11-20 340 if ((tstamp & 0xffffffff) < tstamp_lo)
c0bcf537667cf8 Yangbo Lu 2019-11-20 341 tstamp_hi--;
c0bcf537667cf8 Yangbo Lu 2019-11-20 342
c0bcf537667cf8 Yangbo Lu 2019-11-20 343 tstamp = ((u64)tstamp_hi << 32) | tstamp_lo;
c0bcf537667cf8 Yangbo Lu 2019-11-20 344
c0bcf537667cf8 Yangbo Lu 2019-11-20 345 shhwtstamps = skb_hwtstamps(skb);
c0bcf537667cf8 Yangbo Lu 2019-11-20 346 memset(shhwtstamps, 0, sizeof(struct skb_shared_hwtstamps));
c0bcf537667cf8 Yangbo Lu 2019-11-20 347 shhwtstamps->hwtstamp = tstamp;
c0bcf537667cf8 Yangbo Lu 2019-11-20 348 return false;
c0bcf537667cf8 Yangbo Lu 2019-11-20 349 }
c0bcf537667cf8 Yangbo Lu 2019-11-20 350
3243e04ab1c06e Chen Wandun 2019-11-22 351 static bool felix_txtstamp(struct dsa_switch *ds, int port,
c0bcf537667cf8 Yangbo Lu 2019-11-20 352 struct sk_buff *clone, unsigned int type)
c0bcf537667cf8 Yangbo Lu 2019-11-20 353 {
c0bcf537667cf8 Yangbo Lu 2019-11-20 354 struct ocelot *ocelot = ds->priv;
c0bcf537667cf8 Yangbo Lu 2019-11-20 355 struct ocelot_port *ocelot_port = ocelot->ports[port];
c0bcf537667cf8 Yangbo Lu 2019-11-20 356
c0bcf537667cf8 Yangbo Lu 2019-11-20 @357 if (!ocelot_port_add_txtstamp_skb(ocelot_port, clone))
c0bcf537667cf8 Yangbo Lu 2019-11-20 358 return true;
c0bcf537667cf8 Yangbo Lu 2019-11-20 359
c0bcf537667cf8 Yangbo Lu 2019-11-20 360 return false;
c0bcf537667cf8 Yangbo Lu 2019-11-20 361 }
c0bcf537667cf8 Yangbo Lu 2019-11-20 362
56051948773eeb Vladimir Oltean 2019-11-14 363 static const struct dsa_switch_ops felix_switch_ops = {
56051948773eeb Vladimir Oltean 2019-11-14 364 .get_tag_protocol = felix_get_tag_protocol,
56051948773eeb Vladimir Oltean 2019-11-14 365 .setup = felix_setup,
56051948773eeb Vladimir Oltean 2019-11-14 366 .teardown = felix_teardown,
56051948773eeb Vladimir Oltean 2019-11-14 367 .set_ageing_time = felix_set_ageing_time,
56051948773eeb Vladimir Oltean 2019-11-14 368 .get_strings = felix_get_strings,
56051948773eeb Vladimir Oltean 2019-11-14 369 .get_ethtool_stats = felix_get_ethtool_stats,
56051948773eeb Vladimir Oltean 2019-11-14 370 .get_sset_count = felix_get_sset_count,
56051948773eeb Vladimir Oltean 2019-11-14 371 .get_ts_info = felix_get_ts_info,
56051948773eeb Vladimir Oltean 2019-11-14 372 .adjust_link = felix_adjust_link,
56051948773eeb Vladimir Oltean 2019-11-14 373 .port_enable = felix_port_enable,
56051948773eeb Vladimir Oltean 2019-11-14 374 .port_disable = felix_port_disable,
56051948773eeb Vladimir Oltean 2019-11-14 375 .port_fdb_dump = felix_fdb_dump,
56051948773eeb Vladimir Oltean 2019-11-14 376 .port_fdb_add = felix_fdb_add,
56051948773eeb Vladimir Oltean 2019-11-14 377 .port_fdb_del = felix_fdb_del,
56051948773eeb Vladimir Oltean 2019-11-14 378 .port_bridge_join = felix_bridge_join,
56051948773eeb Vladimir Oltean 2019-11-14 379 .port_bridge_leave = felix_bridge_leave,
56051948773eeb Vladimir Oltean 2019-11-14 380 .port_stp_state_set = felix_bridge_stp_state_set,
56051948773eeb Vladimir Oltean 2019-11-14 381 .port_vlan_prepare = felix_vlan_prepare,
56051948773eeb Vladimir Oltean 2019-11-14 382 .port_vlan_filtering = felix_vlan_filtering,
56051948773eeb Vladimir Oltean 2019-11-14 383 .port_vlan_add = felix_vlan_add,
56051948773eeb Vladimir Oltean 2019-11-14 384 .port_vlan_del = felix_vlan_del,
c0bcf537667cf8 Yangbo Lu 2019-11-20 385 .port_hwtstamp_get = felix_hwtstamp_get,
c0bcf537667cf8 Yangbo Lu 2019-11-20 386 .port_hwtstamp_set = felix_hwtstamp_set,
c0bcf537667cf8 Yangbo Lu 2019-11-20 387 .port_rxtstamp = felix_rxtstamp,
c0bcf537667cf8 Yangbo Lu 2019-11-20 388 .port_txtstamp = felix_txtstamp,
56051948773eeb Vladimir Oltean 2019-11-14 389 };
56051948773eeb Vladimir Oltean 2019-11-14 390
56051948773eeb Vladimir Oltean 2019-11-14 391 static struct felix_info *felix_instance_tbl[] = {
56051948773eeb Vladimir Oltean 2019-11-14 392 [FELIX_INSTANCE_VSC9959] = &felix_info_vsc9959,
56051948773eeb Vladimir Oltean 2019-11-14 393 };
56051948773eeb Vladimir Oltean 2019-11-14 394
c0bcf537667cf8 Yangbo Lu 2019-11-20 395 static irqreturn_t felix_irq_handler(int irq, void *data)
c0bcf537667cf8 Yangbo Lu 2019-11-20 396 {
c0bcf537667cf8 Yangbo Lu 2019-11-20 397 struct ocelot *ocelot = (struct ocelot *)data;
c0bcf537667cf8 Yangbo Lu 2019-11-20 398
c0bcf537667cf8 Yangbo Lu 2019-11-20 399 /* The INTB interrupt is used for both PTP TX timestamp interrupt
c0bcf537667cf8 Yangbo Lu 2019-11-20 400 * and preemption status change interrupt on each port.
c0bcf537667cf8 Yangbo Lu 2019-11-20 401 *
c0bcf537667cf8 Yangbo Lu 2019-11-20 402 * - Get txtstamp if have
c0bcf537667cf8 Yangbo Lu 2019-11-20 403 * - TODO: handle preemption. Without handling it, driver may get
c0bcf537667cf8 Yangbo Lu 2019-11-20 404 * interrupt storm.
c0bcf537667cf8 Yangbo Lu 2019-11-20 405 */
c0bcf537667cf8 Yangbo Lu 2019-11-20 406
c0bcf537667cf8 Yangbo Lu 2019-11-20 @407 ocelot_get_txtstamp(ocelot);
c0bcf537667cf8 Yangbo Lu 2019-11-20 408
c0bcf537667cf8 Yangbo Lu 2019-11-20 409 return IRQ_HANDLED;
c0bcf537667cf8 Yangbo Lu 2019-11-20 410 }
c0bcf537667cf8 Yangbo Lu 2019-11-20 411
:::::: The code at line 357 was first introduced by commit
:::::: c0bcf537667cf88bbcbb377d01d2b79c45265741 net: dsa: ocelot: add hardware timestamping support for Felix
:::::: TO: Yangbo Lu <yangbo.lu@nxp.com>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28035 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-12-15 3:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-15 3:17 [alaahl:netdev-next 16/21] drivers/net/dsa/ocelot/felix.c:357: undefined reference to `ocelot_port_add_txtstamp_skb' kbuild test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.