From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail1.windriver.com (mail1.windriver.com [147.11.146.13]) by dpdk.org (Postfix) with ESMTP id 8E4015934 for ; Fri, 15 Aug 2014 00:09:32 +0200 (CEST) Received: from ALA-HCA.corp.ad.wrs.com (ala-hca.corp.ad.wrs.com [147.11.189.40]) by mail1.windriver.com (8.14.9/8.14.5) with ESMTP id s7EMCbJH018441 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Thu, 14 Aug 2014 15:12:37 -0700 (PDT) Received: from [128.224.147.212] (128.224.147.212) by ALA-HCA.corp.ad.wrs.com (147.11.189.50) with Microsoft SMTP Server id 14.3.174.1; Thu, 14 Aug 2014 15:12:37 -0700 Message-ID: <53ED34FC.3050405@windriver.com> Date: Thu, 14 Aug 2014 18:15:24 -0400 From: Aws Ismail Organization: Wind River Systems User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130330 Thunderbird/17.0.5 MIME-Version: 1.0 To: Qiaobing Xie References: <53ED2DBF.4070003@gmail.com> In-Reply-To: <53ED2DBF.4070003@gmail.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 8bit Cc: dev@dpdk.org Subject: Re: [dpdk-dev] 1.7.0 release failed to compile on linux X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: aws.ismail@windriver.com List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Aug 2014 22:09:33 -0000 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. My ultimate recommendation is to update you CPU to a newer one or 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 > function ‘ixgbe_recv_pkts_vec’: > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: > error: implicit declaration of function ‘_mm_shuffle_epi8’ > [-Werror=implicit-function-declaration] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:3: > error: nested extern declaration of ‘_mm_shuffle_epi8’ > [-Werror=nested-externs] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:297:11: > error: incompatible types when assigning to type ‘__m128i’ from type > ‘int’ > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:298:11: > error: incompatible types when assigning to type ‘__m128i’ from type > ‘int’ > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:313:11: > error: incompatible types when assigning to type ‘__m128i’ from type > ‘int’ > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:314:11: > error: incompatible types when assigning to type ‘__m128i’ from type > ‘int’ > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: > error: implicit declaration of function ‘_mm_popcnt_u64’ > [-Werror=implicit-function-declaration] > /home/qxie/dpdk-1.7.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:341:3: > error: nested extern declaration of ‘_mm_popcnt_u64’ > [-Werror=nested-externs] > cc1: all warnings being treated as errors > make[3]: *** [ixgbe_rxtx_vec.o] Error 1 > ============== > > My CPU is the older Intel C2D E6550 which does not have sse4.2/sse4.1 > support. Is there a way to work around this? > > -Q > > > > >