[dpdk-dev] [PATCH v2 1/1] build: add Graviton2(arm64) meson configuration

2020-10-27 Thread Vimal Chungath
Add meson build configuration for Graviton2 platform
with 64-bit Arm Neoverse N1 cores. This patch makes the
following changes to generic Neoverse N1 config:

1. increase lcore limit to 64
2. increase memory support to 1TB
3. remove +crc from -march as that is default when setting armv8.2

For more information about Graviton2 platform, refer to:
https://aws.amazon.com/ec2/graviton/

Signed-off-by: Vimal Chungath 
---
 config/arm/arm64_graviton2_linux_gcc | 17 +
 config/arm/meson.build   | 12 +++-
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 config/arm/arm64_graviton2_linux_gcc

diff --git a/config/arm/arm64_graviton2_linux_gcc 
b/config/arm/arm64_graviton2_linux_gcc
new file mode 100644
index 0..022e06303
--- /dev/null
+++ b/config/arm/arm64_graviton2_linux_gcc
@@ -0,0 +1,17 @@
+[binaries]
+c = 'aarch64-linux-gnu-gcc'
+cpp = 'aarch64-linux-gnu-cpp'
+ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
+pkgconfig = 'aarch64-linux-gnu-pkg-config'
+pcap-config = ''
+
+[host_machine]
+system = 'linux'
+cpu_family = 'aarch64'
+cpu = 'armv8-a'
+endian = 'little'
+
+[properties]
+implementor_id = '0x41'
+implementor_pn = '0xd0c'
diff --git a/config/arm/meson.build b/config/arm/meson.build
index b49203fa8..0e7124843 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -86,6 +86,16 @@ flags_octeontx2_extra = [
['RTE_ARM_FEATURE_ATOMICS', true],
['RTE_EAL_IGB_UIO', false],
['RTE_USE_C11_MEM_MODEL', true]]
+flags_n1generic_extra = [
+   ['RTE_MACHINE', '"neoverse-n1"'],
+   ['RTE_MAX_LCORE', 64],
+   ['RTE_CACHE_LINE_SIZE', 64],
+   ['RTE_ARM_FEATURE_ATOMICS', true],
+   ['RTE_USE_C11_MEM_MODEL', true],
+   ['RTE_MAX_MEM_MB', 1048576],
+   ['RTE_MAX_NUMA_NODES', 1],
+   ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
+   ['RTE_LIBRTE_VHOST_NUMA', false]]
 
 machine_args_generic = [
['default', ['-march=armv8-a+crc', '-moutline-atomics']],
@@ -97,7 +107,7 @@ machine_args_generic = [
['0xd09', ['-mcpu=cortex-a73']],
['0xd0a', ['-mcpu=cortex-a75']],
['0xd0b', ['-mcpu=cortex-a76']],
-   ['0xd0c', ['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'], 
flags_n1sdp_extra]]
+   ['0xd0c', ['-march=armv8.2-a+crypto', '-mcpu=neoverse-n1'], 
flags_n1generic_extra]]
 
 machine_args_cavium = [
['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],
-- 
2.16.6



[dpdk-dev] [PATCH v2 0/1] build: add Graviton2(arm64) meson configuration

2020-10-27 Thread Vimal Chungath
V2 changes:
 - drop make patch

Vimal Chungath (1):
  build: add Graviton2(arm64) meson configuration

 config/arm/arm64_graviton2_linux_gcc | 17 +
 config/arm/meson.build   | 12 +++-
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 config/arm/arm64_graviton2_linux_gcc

-- 
2.16.6



Re: [dpdk-dev] [PATCH v3 1/1] build: add Graviton2(arm64) meson configuration

2020-11-03 Thread Vimal Chungath
On 11/3/20 10:38 AM, Jerin Jacob Kollanukkaran wrote:
>
>
>> -Original Message-
>> From: Thomas Monjalon 
>> Sent: Wednesday, November 4, 2020 12:02 AM
>> To: Vimal Chungath ;
>> honnappa.nagaraha...@arm.com; dharmik.thak...@arm.com; Jerin Jacob
>> Kollanukkaran ; juraj.lin...@pantheon.tech
>> Cc: dev@dpdk.org; alisa...@amazon.com; bruce.richard...@intel.com;
>> hemant.agra...@nxp.com; jerinjac...@gmail.com; n...@arm.com
>> Subject: [EXT] Re: [PATCH v3 1/1] build: add Graviton2(arm64) meson
>> configuration
>>
>> External Email
>>
>> ------
>> 03/11/2020 19:06, Vimal Chungath:
>>> Add meson build configuration for Graviton2 platform with 64-bit Arm
>>> Neoverse N1 cores. This patch makes the following changes to generic
>>> Neoverse N1 config:
>>>
>>> 1. increase lcore limit to 64
>>> 2. increase memory support to 1TB
>>> 3. remove +crc from -march as that is default when setting armv8.2
>>>
>>> Signed-off-by: Vimal Chungath 
>>> ---
>>>  config/arm/arm64_graviton2_linux_gcc | 17 +
>>>  config/arm/meson.build   | 18 +++---
>>>  2 files changed, 28 insertions(+), 7 deletions(-)
>>
>> Can this patch be merged without the rework from Juraj?
>
> Yes. +1
>
> @Vimal Chungath, Could you review and test Juraj changes on Graviton2 so that
> Juraj changes can be targeted for 21.02.
>
Yes, will do that.



[dpdk-dev] [PATCH v3 0/1] build: add Graviton2(arm64) meson configuration

2020-11-03 Thread Vimal Chungath
Hi All,

I see that meson rework patches are still pending.
Can this patch be accepted for 20.11 to enable Graviton2 support?

v3 changes:
 - remove flags_n1sdp_extra as it is unused.

Vimal Chungath (1):
  build: add Graviton2(arm64) meson configuration

 config/arm/arm64_graviton2_linux_gcc | 17 +
 config/arm/meson.build   | 18 +++---
 2 files changed, 28 insertions(+), 7 deletions(-)
 create mode 100644 config/arm/arm64_graviton2_linux_gcc

-- 
2.16.6



[dpdk-dev] [PATCH v3 1/1] build: add Graviton2(arm64) meson configuration

2020-11-03 Thread Vimal Chungath
Add meson build configuration for Graviton2 platform
with 64-bit Arm Neoverse N1 cores. This patch makes the
following changes to generic Neoverse N1 config:

1. increase lcore limit to 64
2. increase memory support to 1TB
3. remove +crc from -march as that is default when setting armv8.2

For more information about Graviton2 platform, refer to:
https://aws.amazon.com/ec2/graviton/

Signed-off-by: Vimal Chungath 
---
 config/arm/arm64_graviton2_linux_gcc | 17 +
 config/arm/meson.build   | 18 +++---
 2 files changed, 28 insertions(+), 7 deletions(-)
 create mode 100644 config/arm/arm64_graviton2_linux_gcc

diff --git a/config/arm/arm64_graviton2_linux_gcc 
b/config/arm/arm64_graviton2_linux_gcc
new file mode 100644
index 0..022e06303
--- /dev/null
+++ b/config/arm/arm64_graviton2_linux_gcc
@@ -0,0 +1,17 @@
+[binaries]
+c = 'aarch64-linux-gnu-gcc'
+cpp = 'aarch64-linux-gnu-cpp'
+ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
+pkgconfig = 'aarch64-linux-gnu-pkg-config'
+pcap-config = ''
+
+[host_machine]
+system = 'linux'
+cpu_family = 'aarch64'
+cpu = 'armv8-a'
+endian = 'little'
+
+[properties]
+implementor_id = '0x41'
+implementor_pn = '0xd0c'
diff --git a/config/arm/meson.build b/config/arm/meson.build
index b49203fa8..073b4afc0 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -63,12 +63,6 @@ flags_armada = [
['RTE_MAX_LCORE', 16]]
 
 flags_default_extra = []
-flags_n1sdp_extra = [
-   ['RTE_MACHINE', '"n1sdp"'],
-   ['RTE_MAX_NUMA_NODES', 1],
-   ['RTE_MAX_LCORE', 4],
-   ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
-   ['RTE_LIBRTE_VHOST_NUMA', false]]
 flags_thunderx_extra = [
['RTE_MACHINE', '"thunderx"'],
['RTE_USE_C11_MEM_MODEL', false]]
@@ -86,6 +80,16 @@ flags_octeontx2_extra = [
['RTE_ARM_FEATURE_ATOMICS', true],
['RTE_EAL_IGB_UIO', false],
['RTE_USE_C11_MEM_MODEL', true]]
+flags_n1generic_extra = [
+   ['RTE_MACHINE', '"neoverse-n1"'],
+   ['RTE_MAX_LCORE', 64],
+   ['RTE_CACHE_LINE_SIZE', 64],
+   ['RTE_ARM_FEATURE_ATOMICS', true],
+   ['RTE_USE_C11_MEM_MODEL', true],
+   ['RTE_MAX_MEM_MB', 1048576],
+   ['RTE_MAX_NUMA_NODES', 1],
+   ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
+   ['RTE_LIBRTE_VHOST_NUMA', false]]
 
 machine_args_generic = [
['default', ['-march=armv8-a+crc', '-moutline-atomics']],
@@ -97,7 +101,7 @@ machine_args_generic = [
['0xd09', ['-mcpu=cortex-a73']],
['0xd0a', ['-mcpu=cortex-a75']],
['0xd0b', ['-mcpu=cortex-a76']],
-   ['0xd0c', ['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'], 
flags_n1sdp_extra]]
+   ['0xd0c', ['-march=armv8.2-a+crypto', '-mcpu=neoverse-n1'], 
flags_n1generic_extra]]
 
 machine_args_cavium = [
['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],
-- 
2.16.6



Re: [dpdk-dev] [PATCH v13 00/12] Arm build options rework

2020-12-16 Thread Vimal Chungath
On 11/20/20 4:08 AM, Juraj Linkeš wrote:
> The current way of specifying Arm configuration options is insufficient
> since we can't identify the SoC we're building for from the MIDR
> information. For example, we can't distinguish between N1SDP, Graviton2
> or Ampere Altra.
>
> Add a way to specify the cpu count and numa node count for cross builds
> and aarch64 -> aarch64 (SoC) builds.
>
> We also want to be able to disable which drivers (and possibly
> libraries) are built without user input. This is useful when building:
> 1. on an SoC that is slow and we want to build only what is necessary
>   without the user having to check which libraries they have installed
> 2. a cross build on a fast aarch64 machine but with target SoC which
>   differs in capabilities or libraries.
> This is achieved by specifying the drivers in SoC configuration.
>
> Among libraries, only libnuma can be now disabled.
>
> Also add an optional way to discover cpu count a numa node count. Fix
> -Dmax_lcores and -Dmax_numa_nodes for arm builds.
>
> The current implementation adds/supports the following:
> * x86 -> aarch64 cross build with added config options/disabled
>   drivers/libs
> * aarch64 -> aarch64 builds for a different SoCs using meson -Darm_soc
>   option or using a cross file
> * max numa nodes and max lcore may be specified on the command line to
>   overwrite the values for any (native, SoC or cross) build
>

I tested on Graviton2 and it looks good to me. I tested native, cross and the 
arm_soc builds and verified the config options for Graviton2.

Series Tested-by: Vimal Chungath 


[dpdk-dev] [PATCH 0/2] build: add Graviton2(arm64) config

2020-09-08 Thread Vimal Chungath
These two patches add meson and make build configuration
for AWS Graviton2 platform. I plan to send platform guide
patch separately.

Vimal Chungath (2):
  config: add Graviton2(arm64) meson configuration
  config: add Graviton2(arm64) defconfig

 config/arm/arm64_graviton2_linux_gcc  | 17 ++
 config/arm/meson.build| 12 +-
 config/defconfig_arm64-graviton2-linux-gcc|  1 +
 config/defconfig_arm64-graviton2-linuxapp-gcc | 13 +++
 config/defconfig_graviton2|  1 +
 mk/machine/graviton2/rte.vars.mk  | 33 +++
 6 files changed, 76 insertions(+), 1 deletion(-)
 create mode 100644 config/arm/arm64_graviton2_linux_gcc
 create mode 12 config/defconfig_arm64-graviton2-linux-gcc
 create mode 100644 config/defconfig_arm64-graviton2-linuxapp-gcc
 create mode 12 config/defconfig_graviton2
 create mode 100644 mk/machine/graviton2/rte.vars.mk

-- 
2.16.6



[dpdk-dev] [PATCH 1/2] config: add Graviton2(arm64) meson configuration

2020-09-08 Thread Vimal Chungath
Add meson build configuration for Graviton2 platform
with 64-bit ARM Neoverse N1 cores. This patch makes the
following changes to generic Neoverse N1 config:

1. increase lcore limit to 64
2. increase memory support to 1TB
3. remove +crc from -march as that is default when setting armv8.2

For more information about Graviton2 platform, refer to:
https://aws.amazon.com/ec2/graviton/

Signed-off-by: Vimal Chungath 
---
 config/arm/arm64_graviton2_linux_gcc | 17 +
 config/arm/meson.build   | 12 +++-
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 config/arm/arm64_graviton2_linux_gcc

diff --git a/config/arm/arm64_graviton2_linux_gcc 
b/config/arm/arm64_graviton2_linux_gcc
new file mode 100644
index 0..022e06303
--- /dev/null
+++ b/config/arm/arm64_graviton2_linux_gcc
@@ -0,0 +1,17 @@
+[binaries]
+c = 'aarch64-linux-gnu-gcc'
+cpp = 'aarch64-linux-gnu-cpp'
+ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
+pkgconfig = 'aarch64-linux-gnu-pkg-config'
+pcap-config = ''
+
+[host_machine]
+system = 'linux'
+cpu_family = 'aarch64'
+cpu = 'armv8-a'
+endian = 'little'
+
+[properties]
+implementor_id = '0x41'
+implementor_pn = '0xd0c'
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 8728051d5..64e277ebc 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -86,6 +86,16 @@ flags_octeontx2_extra = [
['RTE_ARM_FEATURE_ATOMICS', true],
['RTE_EAL_IGB_UIO', false],
['RTE_USE_C11_MEM_MODEL', true]]
+flags_n1generic_extra = [
+   ['RTE_MACHINE', '"neoverse-n1"'],
+   ['RTE_MAX_LCORE', 64],
+   ['RTE_CACHE_LINE_SIZE', 64],
+   ['RTE_ARM_FEATURE_ATOMICS', true],
+   ['RTE_USE_C11_MEM_MODEL', true],
+   ['RTE_MAX_MEM_MB', 1048576],
+   ['RTE_MAX_NUMA_NODES', 1],
+   ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
+   ['RTE_LIBRTE_VHOST_NUMA', false]]
 
 machine_args_generic = [
['default', ['-march=armv8-a+crc']],
@@ -97,7 +107,7 @@ machine_args_generic = [
['0xd09', ['-mcpu=cortex-a73']],
['0xd0a', ['-mcpu=cortex-a75']],
['0xd0b', ['-mcpu=cortex-a76']],
-   ['0xd0c', ['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'], 
flags_n1sdp_extra]]
+   ['0xd0c', ['-march=armv8.2-a+crypto', '-mcpu=neoverse-n1'], 
flags_n1generic_extra]]
 
 machine_args_cavium = [
['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],
-- 
2.16.6



[dpdk-dev] [PATCH 2/2] config: add Graviton2(arm64) defconfig

2020-09-08 Thread Vimal Chungath
Add make configuration for Graviton2 platform with
64-bit ARM Neoverse N1 cores.

Sample build steps:
make config T=arm64-graviton2-linux-gcc O=arm64-build
make -C arm64-build
OR
make config T=graviton2 O=arm64-build
make -C arm64-build

For more information about Graviton2 platform, refer to:
https://aws.amazon.com/ec2/graviton/

Signed-off-by: Vimal Chungath 
---
 config/defconfig_arm64-graviton2-linux-gcc|  1 +
 config/defconfig_arm64-graviton2-linuxapp-gcc | 13 +++
 config/defconfig_graviton2|  1 +
 mk/machine/graviton2/rte.vars.mk  | 33 +++
 4 files changed, 48 insertions(+)
 create mode 12 config/defconfig_arm64-graviton2-linux-gcc
 create mode 100644 config/defconfig_arm64-graviton2-linuxapp-gcc
 create mode 12 config/defconfig_graviton2
 create mode 100644 mk/machine/graviton2/rte.vars.mk

diff --git a/config/defconfig_arm64-graviton2-linux-gcc 
b/config/defconfig_arm64-graviton2-linux-gcc
new file mode 12
index 0..80ac94d54
--- /dev/null
+++ b/config/defconfig_arm64-graviton2-linux-gcc
@@ -0,0 +1 @@
+defconfig_arm64-graviton2-linuxapp-gcc
\ No newline at end of file
diff --git a/config/defconfig_arm64-graviton2-linuxapp-gcc 
b/config/defconfig_arm64-graviton2-linuxapp-gcc
new file mode 100644
index 0..e99fef307
--- /dev/null
+++ b/config/defconfig_arm64-graviton2-linuxapp-gcc
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) Amazon.com, Inc or its affiliates
+#
+
+#include "defconfig_arm64-armv8a-linux-gcc"
+
+CONFIG_RTE_MACHINE="graviton2"
+CONFIG_RTE_MAX_LCORE=64
+CONFIG_RTE_CACHE_LINE_SIZE=64
+CONFIG_RTE_MAX_MEM_MB=1048576
+CONFIG_RTE_MAX_NUMA_NODES=1
+CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n
+CONFIG_RTE_LIBRTE_VHOST_NUMA=n
diff --git a/config/defconfig_graviton2 b/config/defconfig_graviton2
new file mode 12
index 0..80ac94d54
--- /dev/null
+++ b/config/defconfig_graviton2
@@ -0,0 +1 @@
+defconfig_arm64-graviton2-linuxapp-gcc
\ No newline at end of file
diff --git a/mk/machine/graviton2/rte.vars.mk b/mk/machine/graviton2/rte.vars.mk
new file mode 100644
index 0..acb027968
--- /dev/null
+++ b/mk/machine/graviton2/rte.vars.mk
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) Amazon.com, Inc or its affiliates
+#
+
+#
+# machine:
+#
+#   - can define ARCH variable (overridden by cmdline value)
+#   - can define CROSS variable (overridden by cmdline value)
+#   - define MACHINE_CFLAGS variable (overridden by cmdline value)
+#   - define MACHINE_LDFLAGS variable (overridden by cmdline value)
+#   - define MACHINE_ASFLAGS variable (overridden by cmdline value)
+#   - can define CPU_CFLAGS variable (overridden by cmdline value) that
+# overrides the one defined in arch.
+#   - can define CPU_LDFLAGS variable (overridden by cmdline value) that
+# overrides the one defined in arch.
+#   - can define CPU_ASFLAGS variable (overridden by cmdline value) that
+# overrides the one defined in arch.
+#   - may override any previously defined variable
+#
+
+# ARCH =
+# CROSS =
+# MACHINE_CFLAGS =
+# MACHINE_LDFLAGS =
+# MACHINE_ASFLAGS =
+# CPU_CFLAGS =
+# CPU_LDFLAGS =
+# CPU_ASFLAGS =
+
+include $(RTE_SDK)/mk/rte.helper.mk
+
+MACHINE_CFLAGS += $(call rte_cc_has_argument, -march=armv8.2-a+crypto)
-- 
2.16.6



Re: [dpdk-dev] [PATCH 1/2] config: add Graviton2(arm64) meson configuration

2020-09-12 Thread Vimal Chungath
On 9/11/20 8:23 PM, Honnappa Nagarahalli wrote:
>
> +Jerin, Hemant, Dharmik
>
> 
> Hi Vimal,
> Few comments inline.
>
>>
>> Add meson build configuration for Graviton2 platform with 64-bit ARM
>> Neoverse N1 cores. This patch makes the following changes to generic
>> Neoverse N1 config:
>>
>> 1. increase lcore limit to 64
>> 2. increase memory support to 1TB
> There will be multiple SoCs with N1 cores. All of them will have the same 
> implementor ID and part number. But, they will have different values for 
> these configurable parameters.
> IMO, from usage perspective, we have 2 cases:
> 1) Ability to build a portable binary that can run on multiple Arm SoCs (for 
> ex: BlueField, thunderx1, thunderx2, N1SDP, Graviton2 etc)
> 2) Ability to build a binary which would run only on a SoC it was compiled 
> for and provide the most optimized binary for that SoC. But, this may not be 
> portable.
>
> For 1) we have default march.
>
> For 2) we do not have the capability today in meson build (at least, this is 
> my understanding, please correct me if I am wrong). In this case, the user 
> knows the target platform for compilation. IMO, we should add the capability 
> to take the target platform as an input from the user (similar to the make 
> build system) and Graviton2 can be one such target platform.

My intention was to have parameters that work for both N1SDP and Graviton2
rather than 2). Does the change to RTE_MAX_LCORE and RTE_MAX_MEM_MB make them
incompatible with N1SDP?

I'm not sure if taking target platform from user is the best option here.
Would this be specific to N1 since other platforms like thunderx 
differentiate the flags with part number?

>
>> 3. remove +crc from -march as that is default when setting armv8.2
>>
>> For more information about Graviton2 platform, refer to:
>> https://aws.amazon.com/ec2/graviton/
>>
>> Signed-off-by: Vimal Chungath 
>> ---
>>  config/arm/arm64_graviton2_linux_gcc | 17 +
>>  config/arm/meson.build   | 12 +++-
>>  2 files changed, 28 insertions(+), 1 deletion(-)  create mode 100644
>> config/arm/arm64_graviton2_linux_gcc
>>
>> diff --git a/config/arm/arm64_graviton2_linux_gcc
>> b/config/arm/arm64_graviton2_linux_gcc
>> new file mode 100644
>> index 0..022e06303
>> --- /dev/null
>> +++ b/config/arm/arm64_graviton2_linux_gcc
>> @@ -0,0 +1,17 @@
>> +[binaries]
>> +c = 'aarch64-linux-gnu-gcc'
>> +cpp = 'aarch64-linux-gnu-cpp'
>> +ar = 'aarch64-linux-gnu-gcc-ar'
>> +strip = 'aarch64-linux-gnu-strip'
>> +pkgconfig = 'aarch64-linux-gnu-pkg-config'
>> +pcap-config = ''
>> +
>> +[host_machine]
>> +system = 'linux'
>> +cpu_family = 'aarch64'
>> +cpu = 'armv8-a'
>> +endian = 'little'
>> +
>> +[properties]
>> +implementor_id = '0x41'
>> +implementor_pn = '0xd0c'
>> diff --git a/config/arm/meson.build b/config/arm/meson.build index
>> 8728051d5..64e277ebc 100644
>> --- a/config/arm/meson.build
>> +++ b/config/arm/meson.build
>> @@ -86,6 +86,16 @@ flags_octeontx2_extra = [
>>   ['RTE_ARM_FEATURE_ATOMICS', true],
>>   ['RTE_EAL_IGB_UIO', false],
>>   ['RTE_USE_C11_MEM_MODEL', true]]
>> +flags_n1generic_extra = [
>> + ['RTE_MACHINE', '"neoverse-n1"'],
>> + ['RTE_MAX_LCORE', 64],
>> + ['RTE_CACHE_LINE_SIZE', 64],
>> + ['RTE_ARM_FEATURE_ATOMICS', true],
>> + ['RTE_USE_C11_MEM_MODEL', true],
>> + ['RTE_MAX_MEM_MB', 1048576],
>> + ['RTE_MAX_NUMA_NODES', 1],
>> + ['RTE_EAL_NUMA_AWARE_HUGEPAGES', false],
>> + ['RTE_LIBRTE_VHOST_NUMA', false]]
>>
>>  machine_args_generic = [
>>   ['default', ['-march=armv8-a+crc']],
>> @@ -97,7 +107,7 @@ machine_args_generic = [
>>   ['0xd09', ['-mcpu=cortex-a73']],
>>   ['0xd0a', ['-mcpu=cortex-a75']],
>>   ['0xd0b', ['-mcpu=cortex-a76']],
>> - ['0xd0c', ['-march=armv8.2-a+crc+crypto', '-mcpu=neoverse-n1'],
>> flags_n1sdp_extra]]
>> + ['0xd0c', ['-march=armv8.2-a+crypto', '-mcpu=neoverse-n1'],
>> +flags_n1generic_extra]]
>>
>>  machine_args_cavium = [
>>   ['default', ['-march=armv8-a+crc+crypto','-mcpu=thunderx']],
>> --
>> 2.16.6
>



Re: [dpdk-dev] [PATCH 0/2] build: add Graviton2(arm64) config

2020-09-12 Thread Vimal Chungath
On 9/9/20 1:03 AM, David Marchand wrote:
>
> Hello Vimal,
>
> On Wed, Sep 9, 2020 at 3:11 AM Vimal Chungath  wrote:
>>
>> These two patches add meson and make build configuration
>> for AWS Graviton2 platform. I plan to send platform guide
>> patch separately.
>>
>> Vimal Chungath (2):
>>   config: add Graviton2(arm64) meson configuration
>>   config: add Graviton2(arm64) defconfig
>
> I did not look at the patches, just looked at the cover letter.
> You can drop the makefile config files since make support has been dropped.
> Thanks.

Thanks. I will remove make config files in next version.


Re: [dpdk-dev] [PATCH 1/2] config: add Graviton2(arm64) meson configuration

2020-09-18 Thread Vimal Chungath
On 9/17/20 9:02 PM, Jerin Jacob wrote:
>
> On Thu, Sep 17, 2020 at 10:41 PM Honnappa Nagarahalli
>  wrote:
>>
>> 
>>
>>>>>
>>>>> On 9/11/20 8:23 PM, Honnappa Nagarahalli wrote:
>>>>>>
>>>>>> +Jerin, Hemant, Dharmik
>>>>>>
>>>>>> 
>>>>>> Hi Vimal,
>>>>>> Few comments inline.
>>>>>>
>>>>>>>
>>>>>>> Add meson build configuration for Graviton2 platform with 64-bit
>>>>>>> ARM Neoverse N1 cores. This patch makes the following changes to
>>>>>>> generic Neoverse N1 config:
>>>>>>>
>>>>>>> 1. increase lcore limit to 64
>>>>>>> 2. increase memory support to 1TB
>>>>>> There will be multiple SoCs with N1 cores. All of them will have
>>>>>> the same
>>>>> implementor ID and part number. But, they will have different values
>>>>> for these configurable parameters.
>>>>>> IMO, from usage perspective, we have 2 cases:
>>>>>> 1) Ability to build a portable binary that can run on multiple Arm
>>>>>> SoCs (for ex: BlueField, thunderx1, thunderx2, N1SDP, Graviton2
>>>>>> etc)
>>>>>> 2) Ability to build a binary which would run only on a SoC it was
>>>>>> compiled
>>>>> for and provide the most optimized binary for that SoC. But, this
>>>>> may not be portable.
>>>>>>
>>>>>> For 1) we have default march.
>>>>>>
>>>>>> For 2) we do not have the capability today in meson build (at
>>>>>> least, this is
>>>>> my understanding, please correct me if I am wrong). In this case,
>>>>> the user knows the target platform for compilation. IMO, we should
>>>>> add the capability to take the target platform as an input from the
>>>>> user (similar to the make build system) and Graviton2 can be one such
>>> target platform.
>>>>>
>>>>> My intention was to have parameters that work for both N1SDP and
>>>>> Graviton2 rather than 2). Does the change to RTE_MAX_LCORE and
>>>>> RTE_MAX_MEM_MB make them incompatible with N1SDP?
>>>> They are not optimal for N1SDP. In the future these parameters might have
>>> to be changed. For ex: if there a N1 based SoC with more than 64 CPU cores.
>>>
>>>
>>> Sorry for the late reply.
>>>
>>> Looking at the Bluefield, Graviton2, and upcoming SoCs based on ARM IP, It 
>>> is
>>> very clear that MIDR value can not be changed by the silicon vendors.
>>> So our existing build scheme of using the MIDR  value-based probe does not
>>> work anymore with ARM IP.
>>> So IMO, We need to change our build scheme. i.e
>>>
>>> 1) For native build just use -march=native
>> I think we do not need the native build. With the native build, it is not 
>> possible to identify the SoC and use the correct configuration parameters.
>
> Ack. Both native and cross can use same config.
>
>>
>>> 2) For cross-build, explicitly, mention the target to pick the configuration
>>> values instead of probing the MIDR value-based scheme.
>> Agree
>>
>>>
>>> If we agree, Any volunteers for the update to new scheme?
>> Arm will work on this.
>
> Thanks. We wait for the patch for the rework before applying Graviton patches.
>
Ack. I will update Graviton patch once we have the meson build changes.

>
>>
>>>
>>>>
>>>>>
>>>>> I'm not sure if taking target platform from user is the best option here.
>>>>> Would this be specific to N1 since other platforms like thunderx
>>>>> differentiate the flags with part number?
>>>> This issue is specific to Arm CPU cores in general. So, it applies to N1 
>>>> too.
>>>>
>>>>>
>>>>>>
>>>>>>> 3. remove +crc from -march as that is default when setting
>>>>>>> armv8.2
>>>>>>>
>>>>>>> For more information about Graviton2 platform, refer to:
>>>>>>> https://aws.amazon.com/ec2/graviton/
>>>>>>>
>>>>>>> Signed-off-by: Vimal Chungath 
>>>>>>> ---
>>>>>>>  config/arm/arm64_gravito