From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Horman Subject: Re: 1.7.0 release failed to compile on linux Date: Thu, 14 Aug 2014 20:16:51 -0400 Message-ID: <20140815001651.GA11038@localhost.localdomain> References: <53ED2DBF.4070003@gmail.com> <53ED34FC.3050405@windriver.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: dev-VfR2kkLFssw@public.gmane.org To: Aws Ismail Return-path: Content-Disposition: inline In-Reply-To: <53ED34FC.3050405-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 Thu, Aug 14, 2014 at 06:15:24PM -0400, Aws Ismail wrote: >=20 > 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 tarbal= l 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/kn= i/ethtool/igb/e1000_osdep.h:41:0, > >from > >/home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_hw= .h:31, > >from /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e10= 00_api.h:31, > >from /home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e10= 00_82575.c:38: > >/home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.= h:3853:1: > >error: conflicting types for =E2=80=98skb_set_hash=E2=80=99 > >/usr/src/linux-headers-3.13.0-32-generic/include/linux/skbuff.h:740:1: > >note: previous definition of =E2=80=98skb_set_hash=E2=80=99 was here > >make[8]: *** [/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxap= p/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 faile= d > >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: #er= ror > >"SSE4.2 instruction set not enabled" > From the error, nmmintrin.h contains built-in CPU calls that depend on = the > CPU having SSE4.2 extensions. You need to hunt down the call that is be= ing > executed and see which file is including nmmintrin.h. For example, I ha= ve > encountered similar error on a CPU that does not have SSE4.1 and 4.2 > extension and it was trying to call the built-in HW crc hashing call. > instead I switched with rte_jhash.h, the alternative SW implementation = of > the hashing call. >=20 > Looking below, nmmintrin.h is being included by the > lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c, from the looks of it. This means= that > your defconfig (did you use the default one?) has > CONFIG_RTE_IXGBE_INC_VECTOR value set to "y". try setting it to "n" and= see > where the build would stop next looking for another SSE4.x based builti= n > call. >=20 This is fixed at the head of the dpdk git tree. The vector rx code has b= een converted to use builtin intrinsics that can work without sse support in = the cpu. The ACL library has a simmilar problem, but we are working at enabl= ing it for all cpus, with runtime updates to faster paths when the executing cpu supports it. > My ultimate recommendation is to update you CPU to a newer one or perfo= rm > the build/run on a separate newer CPU. >=20 Building on a newer cpu won't help if you intend to run it on an older cp= u. Neil