[dpdk-dev] mk: bump minimum march in default machine

Message ID 1448980014-31548-1-git-send-email-christian.ehrhardt@canonical.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Christian Ehrhardt Dec. 1, 2015, 2:26 p.m. UTC
  While playing with building 2.2-rc2 I found that our usual way didn't work
anymore.
We usually configured "make config T=x86_64-native-linuxapp-gcc" but then
set CONFIG_RTE_MACHINE="default" to get something like the "lowest acceptable
build" but with that wide CPU copatibility.

I found that with DPDK 2.2 this fails with issues like:
In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:37:0,
from dpdk-2.2.0-rc2/lib/librte_sched/rte_sched.c:56:
dpdk-2.2.0-rc2/lib/librte_sched/rte_sched.c: In function ‘grinder_pipe_exists’:
/usr/lib/gcc/x86_64-linux-gnu/5/include/smmintrin.h:67:1: error: inlining
failed in call to always_inline ‘_mm_testz_si128’: target specific option
mismatch
 _mm_testz_si128 (__m128i __M, __m128i __V)
 ^
This is a hard need on newer SSE4.x features which are not given with
march=core2.

So if nehalem (the next march level which has SSE4.x) is the new minimum let us
set this in the default machine config.

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
---

[diffstat]
 rte.vars.mk |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

[diff]
  

Comments

Panu Matilainen Dec. 1, 2015, 2:32 p.m. UTC | #1
On 12/01/2015 04:26 PM, Christian Ehrhardt wrote:
> While playing with building 2.2-rc2 I found that our usual way didn't work
> anymore.
> We usually configured "make config T=x86_64-native-linuxapp-gcc" but then
> set CONFIG_RTE_MACHINE="default" to get something like the "lowest acceptable
> build" but with that wide CPU copatibility.
>
> I found that with DPDK 2.2 this fails with issues like:
> In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:37:0,
> from dpdk-2.2.0-rc2/lib/librte_sched/rte_sched.c:56:
> dpdk-2.2.0-rc2/lib/librte_sched/rte_sched.c: In function ‘grinder_pipe_exists’:
> /usr/lib/gcc/x86_64-linux-gnu/5/include/smmintrin.h:67:1: error: inlining
> failed in call to always_inline ‘_mm_testz_si128’: target specific option
> mismatch
>   _mm_testz_si128 (__m128i __M, __m128i __V)
>   ^
> This is a hard need on newer SSE4.x features which are not given with
> march=core2.
>
> So if nehalem (the next march level which has SSE4.x) is the new minimum let us
> set this in the default machine config.
>
> Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
> ---
>
> [diffstat]
>   rte.vars.mk |    2 +-
>    1 file changed, 1 insertion(+), 1 deletion(-)
>
> [diff]
> diff --git a/mk/machine/default/rte.vars.mk b/mk/machine/default/rte.vars.mk
> index 53c6af6..170d880 100644
> --- a/mk/machine/default/rte.vars.mk
> +++ b/mk/machine/default/rte.vars.mk
> @@ -55,4 +55,4 @@
>   # CPU_LDFLAGS =
>   # CPU_ASFLAGS =
>
> -MACHINE_CFLAGS += -march=core2
> +MACHINE_CFLAGS += -march=nehalem
>

You can just disable CONFIG_RTE_SCHED_VECTOR instead. Also see 
http://dpdk.org/ml/archives/dev/2015-November/029067.html

	- Panu -
  
Christian Ehrhardt Dec. 1, 2015, 3:08 p.m. UTC | #2
Hi,
thanks!
I didn't have the insight of it being "lightly tested and doesn't
provide really significant performance improvement".
But probably we then should go for the suggestion of the referred mail
of "it should probably be disabled by default on all platforms".

I'll submit a patch for that then in a few minutes.
Christian Ehrhardt
Software Engineer, Ubuntu Server
Canonical Ltd


On Tue, Dec 1, 2015 at 3:32 PM, Panu Matilainen <pmatilai@redhat.com> wrote:
> On 12/01/2015 04:26 PM, Christian Ehrhardt wrote:
>>
>> While playing with building 2.2-rc2 I found that our usual way didn't work
>> anymore.
>> We usually configured "make config T=x86_64-native-linuxapp-gcc" but then
>> set CONFIG_RTE_MACHINE="default" to get something like the "lowest
>> acceptable
>> build" but with that wide CPU copatibility.
>>
>> I found that with DPDK 2.2 this fails with issues like:
>> In file included from
>> /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:37:0,
>> from dpdk-2.2.0-rc2/lib/librte_sched/rte_sched.c:56:
>> dpdk-2.2.0-rc2/lib/librte_sched/rte_sched.c: In function
>> ‘grinder_pipe_exists’:
>> /usr/lib/gcc/x86_64-linux-gnu/5/include/smmintrin.h:67:1: error: inlining
>> failed in call to always_inline ‘_mm_testz_si128’: target specific option
>> mismatch
>>   _mm_testz_si128 (__m128i __M, __m128i __V)
>>   ^
>> This is a hard need on newer SSE4.x features which are not given with
>> march=core2.
>>
>> So if nehalem (the next march level which has SSE4.x) is the new minimum
>> let us
>> set this in the default machine config.
>>
>> Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
>> ---
>>
>> [diffstat]
>>   rte.vars.mk |    2 +-
>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> [diff]
>> diff --git a/mk/machine/default/rte.vars.mk
>> b/mk/machine/default/rte.vars.mk
>> index 53c6af6..170d880 100644
>> --- a/mk/machine/default/rte.vars.mk
>> +++ b/mk/machine/default/rte.vars.mk
>> @@ -55,4 +55,4 @@
>>   # CPU_LDFLAGS =
>>   # CPU_ASFLAGS =
>>
>> -MACHINE_CFLAGS += -march=core2
>> +MACHINE_CFLAGS += -march=nehalem
>>
>
> You can just disable CONFIG_RTE_SCHED_VECTOR instead. Also see
> http://dpdk.org/ml/archives/dev/2015-November/029067.html
>
>         - Panu -
  

Patch

diff --git a/mk/machine/default/rte.vars.mk b/mk/machine/default/rte.vars.mk
index 53c6af6..170d880 100644
--- a/mk/machine/default/rte.vars.mk
+++ b/mk/machine/default/rte.vars.mk
@@ -55,4 +55,4 @@ 
 # CPU_LDFLAGS =
 # CPU_ASFLAGS =
 
-MACHINE_CFLAGS += -march=core2
+MACHINE_CFLAGS += -march=nehalem