Thread (1 message) 1 message, 1 author, 2014-08-14

Re: 1.7.0 release failed to compile on linux

From: Qiaobing Xie <hidden>
Date: 2014-08-14 22:57:00

Aws,

Thanks, I will move to v1.7.0-rc4 and get it a try...

-Q

On 8/14/14 5:24 PM, Aws Ismail wrote:

On 08/14/2014 05:55 PM, Wiles, Roger Keith wrote:
quoted
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) 
KeithW */
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,13,8) )
#if (!(RHEL_RELEASE_CODE && RHEL_RELEASE_CODE >= 
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 = 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 
<qiaobing.xie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org<mailto:qiaobing.xie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> 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
Last time I checked, I overcame this error by not using the tarball 
but by simply cloning the dpdk git repo and checking out the 
v1.7.0-rc4 tag. 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, 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 
lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h:3848, you could see:

<snip>
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) )
#if (!(RHEL_RELEASE_CODE && RHEL_RELEASE_CODE >= 
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 = hash;
}
#endif /* NETIF_F_RXHASH */
#endif /* < RHEL7 */
#endif /* < 3.14.0 */
<snip>
quoted
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"
/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




Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help