Summary: | LINT: ixgbe(4)/ixl(4) fails to compile on powerpc/powerpc64 because of missing netmap symbols | ||
---|---|---|---|
Product: | Base System | Reporter: | Enji Cooper <ngie> |
Component: | kern | Assignee: | Enji Cooper <ngie> |
Status: | Closed FIXED | ||
Severity: | Affects Many People | CC: | erj, jhibbits, luigi, nwhitehorn, sbruno |
Priority: | --- | Keywords: | IntelNetworking |
Version: | 10.2-STABLE | ||
Hardware: | Any | ||
OS: | Any |
Description
Enji Cooper
![]() Correction -- the issue reported is in ixgbe, not ixl -- however it affects both. My guess is that it's because the variable's static: sys/dev/netmap/ixgbe_netmap.h:static int ix_rx_miss, ix_rx_miss_bufs, ix_crcstrip; Why isn't this localized in ixgbe(4)/ixl(4)? Does luigi want to weigh in on this? The mention in ix_txrx.c is in ixgbe_setup_hw_rsc(), and according to the X540 datasheet, setting the CRCSTRIP option is required when hardware RSC is enabled, so that check needs to be removed or there should be an explanation saying that disabling CRCSTRIP doesn't break netmap. As for if_ix.c, maybe the extern int ix_crcstrip declaration should be moved there. Is this still the case? I think this has been papered over at svn r280430 dragging the powerpc folks into this one. Giving ixgbe bug to erj. Still an issue on stable/10, but not head... I'll see if I can MFC the change. $ set -x; tail -20 $PWD/_.powerpc.LINT64; svnversion; uname -a + tail -20 /scratch/tmp/ngie/svn/_.powerpc.LINT64 linking kernel ix_txrx.o:(.got+0x120): undefined reference to `ix_crcstrip' *** [kernel] Error code 1 make[5]: stopped in /scratch/tmp/ngie/obj/powerpc.powerpc64/scratch/tmp/ngie/svn/sys/LINT64 1 error make[5]: stopped in /scratch/tmp/ngie/obj/powerpc.powerpc64/scratch/tmp/ngie/svn/sys/LINT64 *** [buildkernel] Error code 2 make[4]: stopped in /scratch/tmp/ngie/svn 1 error make[4]: stopped in /scratch/tmp/ngie/svn *** [buildkernel] Error code 2 make[3]: stopped in /scratch/tmp/ngie/svn 1 error make[3]: stopped in /scratch/tmp/ngie/svn + svnversion 292177 + uname -a FreeBSD ref10-amd64.freebsd.org 10.2-STABLE FreeBSD 10.2-STABLE #0 r291875: Sat Dec 5 23:54:35 UTC 2015 peter@build-10.freebsd.org:/usr/obj/usr/src/sys/CLUSTER10 amd64 A commit references this bug: Author: ngie Date: Mon Dec 14 14:44:23 UTC 2015 New revision: 292211 URL: https://svnweb.freebsd.org/changeset/base/292211 Log: Unbreak the powerpc/powerpc64 tinderbox PR: 198805 Submitted by: sbruno MFC r280430: r280430 (by bz): Make ix_crcstrip a public symbol for the moment; it probably is not the right solution but I will leave it to experts to untangle this problem to properly stop the build failures. At the moment only if_ix.c includes dev/netmap/ixgbe_netmap.h which is good as ixgbe_netmap.h defines a couple of (file) static variables--thus local to if_ix.c. static int ix_crcstrip however now also got checked from ix_txrx.c (as an extern) and should not be visible there. In fact we do see powerpc and powerpc64 build failures because of this. It is unclear to me why on other (clang built?) architectures this does not lead to a reference of an undefined symbol and similar build breakage. Changes: _U stable/10/ stable/10/sys/dev/netmap/ixgbe_netmap.h |