From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aws Ismail Subject: Re: 1.7.0 release failed to compile on linux Date: Thu, 14 Aug 2014 18:15:24 -0400 Message-ID: <53ED34FC.3050405@windriver.com> References: <53ED2DBF.4070003@gmail.com> Reply-To: aws.ismail-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: quoted-printable Cc: dev-VfR2kkLFssw@public.gmane.org To: Qiaobing Xie Return-path: In-Reply-To: <53ED2DBF.4070003-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" On 08/14/2014 05:44 PM, Qiaobing Xie wrote: > Hi, > > I got the following error when I tried to compile 1.7.0 release=20 > tarball on a Linux box (Ubuntu 12.04/kernel=3D3.13.0-32-generic,=20 > gcc=3D4.6.3): > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > In file included from=20 > /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_osd= ep.h:41:0, > from=20 > /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_hw.= h:31, > from=20 > /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api= .h:31, > from=20 > /home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_825= 75.c:38: > /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h= :3853:1:=20 > error: conflicting types for =91skb_set_hash=92 > /usr/src/linux-headers-3.13.0-32-generic/include/linux/skbuff.h:740:1:=20 > note: previous definition of =91skb_set_hash=92 was here > make[8]: ***=20 > [/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_82= 575.o]=20 > Error 1 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > Apparently the version check around 'skb_set_hash' in kcompat.h failed=20 > for some reason. To work around it, I temporarily commented out that=20 > 'skb_set_hash' definition code and rte_kni complied fine. But it=20 > failed again in librte_pmd_ixgbe: > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > In file included from=20 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:41:0: > /usr/lib/gcc/x86_64-linux-gnu/4.6/include/nmmintrin.h:31:3: error:=20 > #error "SSE4.2 instruction set not enabled" From the error, nmmintrin.h contains built-in CPU calls that depend on=20 the CPU having SSE4.2 extensions. You need to hunt down the call that is=20 being executed and see which file is including nmmintrin.h. For example,=20 I have encountered similar error on a CPU that does not have SSE4.1 and=20 4.2 extension and it was trying to call the built-in HW crc hashing=20 call. instead I switched with rte_jhash.h, the alternative SW=20 implementation of the hashing call. Looking below, nmmintrin.h is being included by the=20 lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c, from the looks of it. This means=20 that your defconfig (did you use the default one?) has=20 CONFIG_RTE_IXGBE_INC_VECTOR value set to "y". try setting it to "n" and=20 see where the build would stop next looking for another SSE4.x based=20 builtin call. My ultimate recommendation is to update you CPU to a newer one or=20 perform the build/run on a separate newer CPU. Aws\ > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c: In=20 > function =91ixgbe_recv_pkts_vec=92: > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3:=20 > error: implicit declaration of function =91_mm_shuffle_epi8=92=20 > [-Werror=3Dimplicit-function-declaration] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3:=20 > error: nested extern declaration of =91_mm_shuffle_epi8=92=20 > [-Werror=3Dnested-externs] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:11:=20 > error: incompatible types when assigning to type =91__m128i=92 from typ= e=20 > =91int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:298:11:=20 > error: incompatible types when assigning to type =91__m128i=92 from typ= e=20 > =91int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:313:11:=20 > error: incompatible types when assigning to type =91__m128i=92 from typ= e=20 > =91int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:314:11:=20 > error: incompatible types when assigning to type =91__m128i=92 from typ= e=20 > =91int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3:=20 > error: implicit declaration of function =91_mm_popcnt_u64=92=20 > [-Werror=3Dimplicit-function-declaration] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3:=20 > error: nested extern declaration of =91_mm_popcnt_u64=92=20 > [-Werror=3Dnested-externs] > cc1: all warnings being treated as errors > make[3]: *** [ixgbe_rxtx_vec.o] Error 1 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > My CPU is the older Intel C2D E6550 which does not have sse4.2/sse4.1=20 > support. Is there a way to work around this? > > -Q > > > > >