All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qiaobing Xie <qiaobing.xie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: aws.ismail-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org
Cc: "dev-VfR2kkLFssw@public.gmane.org" <dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: 1.7.0 release failed to compile on linux
Date: Thu, 14 Aug 2014 18:27:40 -0500	[thread overview]
Message-ID: <53ED45EC.8080906@gmail.com> (raw)
In-Reply-To: <53ED3710.3090008-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>

OK, I made the following 3 changes and the v1.7.0 release tarball got 
built cleanly on my older machine (Ubuntu 12.04/kernel 
3.13.0-32-generic, Intel C2D E6550 without SSE4.x, gcc 4.6.3):

1) kcompat.h change version check from 3.14.0 -> 3.13.8, as Roger suggested.

2) disable RTE_IXGBE_INC_VECTOR:
-CONFIG_RTE_IXGBE_INC_VECTOR=y
+CONFIG_RTE_IXGBE_INC_VECTOR=n

3) disable CONFIG_RTE_LIBRTE_ACL:
-CONFIG_RTE_LIBRTE_ACL=y
+CONFIG_RTE_LIBRTE_ACL=n

I haven't tried to test run anything yet... What would be the 
implication without LIBRTE_ACL and IXGBE_INC_VECTOR built?

-Q

On 8/14/14 5:24 PM, Aws Ismail wrote:
>
>
> 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) 
>> 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>
>
>> 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
>>
>>
>>
>>
>>
>>
>

  parent reply	other threads:[~2014-08-14 23:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-14 21:44 1.7.0 release failed to compile on linux Qiaobing Xie
     [not found] ` <53ED2DBF.4070003-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-08-14 21:55   ` Wiles, Roger Keith
     [not found]     ` <4B613BEE-2D07-417D-ACA3-6C228FADB14E-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>
2014-08-14 22:24       ` Aws Ismail
     [not found]         ` <53ED3710.3090008-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>
2014-08-14 22:57           ` Qiaobing Xie
2014-08-14 23:27           ` Qiaobing Xie [this message]
2014-08-15 22:41       ` Thomas Monjalon
2014-08-17  0:10         ` [please ignore this test email] Wiles, Roger Keith
2014-08-14 22:15   ` 1.7.0 release failed to compile on linux Aws Ismail
     [not found]     ` <53ED34FC.3050405-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org>
2014-08-15  0:16       ` Neil Horman
     [not found]         ` <20140815001651.GA11038-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2014-08-15  0:31           ` Qiaobing Xie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53ED45EC.8080906@gmail.com \
    --to=qiaobing.xie-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=aws.ismail-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.