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:24:16 -0400 Message-ID: <53ED3710.3090008@windriver.com> References: <53ED2DBF.4070003@gmail.com> <4B613BEE-2D07-417D-ACA3-6C228FADB14E@windriver.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: <4B613BEE-2D07-417D-ACA3-6C228FADB14E-CWA4WttNNZF54TAoqtyWWQ@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:55 PM, Wiles, Roger Keith wrote: > For the SKB function change I had to change the ifdef in the kcompat.h = file around line 3848 (I think) to: > > /* #### Changed the next line to use (3,13,8) instead of (3,14,0) Keith= W */ > #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,13,8) ) > #if (!(RHEL_RELEASE_CODE && RHEL_RELEASE_CODE >=3D RHEL_RELEASE_VERSION= (7,0))) > #ifdef NETIF_F_RXHASH > #define PKT_HASH_TYPE_L3 0 > static inline void > skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type) > { > skb->rxhash =3D hash; > } > #endif /* NETIF_F_RXHASH */ > #endif /* < RHEL7 */ > #endif /* < 3.14.0 */ > > > Keith Wiles, Principal Technologist with CTO office, Wind River mobile = 972-213-5533 > > On Aug 14, 2014, at 4:44 PM, Qiaobing Xie > wrote: > > Hi, > > I got the following error when I tried to compile 1.7.0 release tarball= on a Linux box (Ubuntu 12.04/kernel=3D3.13.0-32-generic, gcc=3D4.6.3): > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > In file included from /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni= /ethtool/igb/e1000_osdep.h:41:0, > from /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e100= 0_hw.h:31, > from /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e100= 0_api.h:31, > from /home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e100= 0_82575.c:38: > /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h= :3853:1: error: conflicting types for =91skb_set_hash=92 > /usr/src/linux-headers-3.13.0-32-generic/include/linux/skbuff.h:740:1: = note: previous definition of =91skb_set_hash=92 was here Last time I checked, I overcame this error by not using the tarball but=20 by simply cloning the dpdk git repo and checking out the v1.7.0-rc4 tag.=20 For example: git clone git://dpdk.org/dpdk git checkout v1.7.0-rc4 git checkout -b dpdk1.7.0-rc4 <---- the branch name is just an example,=20 you could decide on any other name as you see fit. My machine info: 3.11.0-20 kernel, ubuntu 12.04, gcc 4.6.3 From the v1.7.0-rc4 tag, viewing=20 lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3848, you could see: #if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) ) #if (!(RHEL_RELEASE_CODE && RHEL_RELEASE_CODE >=3D RHEL_RELEASE_VERSION(7= ,0))) #ifdef NETIF_F_RXHASH #define PKT_HASH_TYPE_L3 0 static inline void skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type) { skb->rxhash =3D hash; } #endif /* NETIF_F_RXHASH */ #endif /* < RHEL7 */ #endif /* < 3.14.0 */ > make[8]: *** [/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp= /kni/e1000_82575.o] 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 = for some reason. To work around it, I temporarily commented out that 'skb= _set_hash' definition code and rte_kni complied fine. But it failed again= in librte_pmd_ixgbe: > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > In file included from /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: #err= or "SSE4.2 instruction set not enabled" > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c: In functio= n =91ixgbe_recv_pkts_vec=92: > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: erro= r: implicit declaration of function =91_mm_shuffle_epi8=92 [-Werror=3Dimp= licit-function-declaration] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: erro= r: nested extern declaration of =91_mm_shuffle_epi8=92 [-Werror=3Dnested-= externs] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:11: err= or: incompatible types when assigning to type =91__m128i=92 from type =91= int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:298:11: err= or: incompatible types when assigning to type =91__m128i=92 from type =91= int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:313:11: err= or: incompatible types when assigning to type =91__m128i=92 from type =91= int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:314:11: err= or: incompatible types when assigning to type =91__m128i=92 from type =91= int=92 > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: erro= r: implicit declaration of function =91_mm_popcnt_u64=92 [-Werror=3Dimpli= cit-function-declaration] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: erro= r: nested extern declaration of =91_mm_popcnt_u64=92 [-Werror=3Dnested-ex= terns] > 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 s= upport. Is there a way to work around this? > > -Q > > > > > >