Nail, Thanks for the info... I got v1.7.0 tarball compile after configuring out both IXGBE_INC_VECTOR and ACL. I will take a look at the head.
-Q On 8/14/14 7:16 PM, Neil Horman wrote: > On Thu, Aug 14, 2014 at 06:15:24PM -0400, Aws Ismail wrote: >> 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 tarball on >>> a Linux box (Ubuntu 12.04/kernel=3.13.0-32-generic, gcc=4.6.3): >>> >>> ============ >>> 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/e1000_hw.h:31, >> >from >> >/home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_api.h:31, >> >from >> >/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_82575.c:38: >>> /home/qxie/dpdk-1.7.0/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3853:1: >>> error: conflicting types for ?skb_set_hash? >>> /usr/src/linux-headers-3.13.0-32-generic/include/linux/skbuff.h:740:1: >>> note: previous definition of ?skb_set_hash? was here >>> make[8]: *** >>> [/home/qxie/dpdk-1.7.0/build/build/lib/librte_eal/linuxapp/kni/e1000_82575.o] >>> Error 1 >>> ============ >>> >>> 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: >>> >>> ============= >>> 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: #error >>> "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 being >> executed and see which file is including nmmintrin.h. For example, I have >> 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. >> >> 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 builtin >> call. >> > This is fixed at the head of the dpdk git tree. The vector rx code has been > 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 enabling > 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 perform >> the build/run on a separate newer CPU. >> > Building on a newer cpu won't help if you intend to run it on an older cpu. > > Neil >