[v6,3/4] config: add thunderx2 machine config

Message ID 20190318164949.2357-3-jerinj@marvell.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v6,1/4] mk: introduce helper to check valid compiler argument |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Jerin Jacob March 18, 2019, 4:50 p.m. UTC
From: Jerin Jacob <jerinj@marvell.com>

Optimized configuration for Marvell thunderx2 SoC.
Updated meson build to support Marvell thunderx2 SoC.
Added meson cross compile target.

Product details are here:

https://www.marvell.com/server-processors/thunderx2-arm-processors/

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
 config/arm/arm64_thunderx2_linux_gcc          | 15 ++++++++
 config/arm/meson.build                        |  9 ++++-
 config/defconfig_arm64-thunderx2-linux-gcc    |  1 +
 config/defconfig_arm64-thunderx2-linuxapp-gcc | 11 ++++++
 mk/machine/thunderx2/rte.vars.mk              | 34 +++++++++++++++++++
 5 files changed, 69 insertions(+), 1 deletion(-)
 create mode 100644 config/arm/arm64_thunderx2_linux_gcc
 create mode 120000 config/defconfig_arm64-thunderx2-linux-gcc
 create mode 100644 config/defconfig_arm64-thunderx2-linuxapp-gcc
 create mode 100644 mk/machine/thunderx2/rte.vars.mk
  

Comments

Gavin Hu April 2, 2019, 8:52 a.m. UTC | #1
> -----Original Message-----
> From: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
> Sent: Tuesday, March 19, 2019 12:50 AM
> To: thomas@monjalon.net
> Cc: dev@dpdk.org; Gavin Hu (Arm Technology China) <Gavin.Hu@arm.com>;
> jerinj@marvell.com; Pavan Nikhilesh Bhagavatula
> <pbhagavatula@marvell.com>
> Subject: [dpdk-dev] [PATCH v6 3/4] config: add thunderx2 machine config
>
> From: Jerin Jacob <jerinj@marvell.com>
>
> Optimized configuration for Marvell thunderx2 SoC.
> Updated meson build to support Marvell thunderx2 SoC.
> Added meson cross compile target.
>
> Product details are here:
>
> https://www.marvell.com/server-processors/thunderx2-arm-processors/
>
> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
> ---
>  config/arm/arm64_thunderx2_linux_gcc          | 15 ++++++++
>  config/arm/meson.build                        |  9 ++++-
>  config/defconfig_arm64-thunderx2-linux-gcc    |  1 +
>  config/defconfig_arm64-thunderx2-linuxapp-gcc | 11 ++++++
>  mk/machine/thunderx2/rte.vars.mk              | 34 +++++++++++++++++++
>  5 files changed, 69 insertions(+), 1 deletion(-)
>  create mode 100644 config/arm/arm64_thunderx2_linux_gcc
>  create mode 120000 config/defconfig_arm64-thunderx2-linux-gcc
>  create mode 100644 config/defconfig_arm64-thunderx2-linuxapp-gcc
>  create mode 100644 mk/machine/thunderx2/rte.vars.mk
>
> diff --git a/config/arm/arm64_thunderx2_linux_gcc
> b/config/arm/arm64_thunderx2_linux_gcc
> new file mode 100644
> index 000000000..48b07a40c
> --- /dev/null
> +++ b/config/arm/arm64_thunderx2_linux_gcc
> @@ -0,0 +1,15 @@
> +[binaries]
> +c = 'aarch64-linux-gnu-gcc'
> +cpp = 'aarch64-linux-gnu-cpp'
> +ar = 'aarch64-linux-gnu-gcc-ar'
> +strip = 'aarch64-linux-gnu-strip'
> +
> +[host_machine]
> +system = 'linux'
> +cpu_family = 'aarch64'
> +cpu = 'armv8-a'
> +endian = 'little'
> +
> +[properties]
> +implementor_id = '0x43'
> +implementor_pn = '0xaf'
> diff --git a/config/arm/meson.build b/config/arm/meson.build
> index 3db6d6445..5c391ed3c 100644
> --- a/config/arm/meson.build
> +++ b/config/arm/meson.build
> @@ -73,6 +73,12 @@ flags_default_extra = []
>  flags_thunderx_extra = [
>  ['RTE_MACHINE', '"thunderx"'],
>  ['RTE_USE_C11_MEM_MODEL', false]]
> +flags_thunderx2_extra = [
> +['RTE_MACHINE', '"thunderx2"'],
> +['RTE_CACHE_LINE_SIZE', 64],
> +['RTE_MAX_NUMA_NODES', 2],
> +['RTE_MAX_LCORE', 256],
> +['RTE_USE_C11_MEM_MODEL', true]]
>
>  machine_args_generic = [
>  ['default', ['-march=armv8-a+crc+crypto']],
> @@ -89,7 +95,8 @@ machine_args_cavium = [
>  ['native', ['-march=native']],
>  ['0xa1', ['-mcpu=thunderxt88'], flags_thunderx_extra],
>  ['0xa2', ['-mcpu=thunderxt81'], flags_thunderx_extra],
> -['0xa3', ['-mcpu=thunderxt83'], flags_thunderx_extra]]
> +['0xa3', ['-mcpu=thunderxt83'], flags_thunderx_extra],
> +['0xaf', ['-mcpu=thunderx2t99'], flags_thunderx2_extra]]
>
>  ## Arm implementer ID (ARM DDI 0487C.a, Section G7.2.106, Page G7-5321)
>  impl_generic = ['Generic armv8', flags_generic, machine_args_generic]
> diff --git a/config/defconfig_arm64-thunderx2-linux-gcc
> b/config/defconfig_arm64-thunderx2-linux-gcc
> new file mode 120000
> index 000000000..b40a760b1
> --- /dev/null
> +++ b/config/defconfig_arm64-thunderx2-linux-gcc
> @@ -0,0 +1 @@
> +defconfig_arm64-thunderx2-linuxapp-gcc
> \ No newline at end of file
> diff --git a/config/defconfig_arm64-thunderx2-linuxapp-gcc
> b/config/defconfig_arm64-thunderx2-linuxapp-gcc
> new file mode 100644
> index 000000000..cc5c64ba0
> --- /dev/null
> +++ b/config/defconfig_arm64-thunderx2-linuxapp-gcc
> @@ -0,0 +1,11 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2018 Marvell International Ltd
> +#
> +
> +#include "defconfig_arm64-armv8a-linux-gcc"
> +
> +CONFIG_RTE_MACHINE="thunderx2"
> +
> +CONFIG_RTE_CACHE_LINE_SIZE=64
> +CONFIG_RTE_MAX_NUMA_NODES=2
> +CONFIG_RTE_MAX_LCORE=256
> diff --git a/mk/machine/thunderx2/rte.vars.mk
> b/mk/machine/thunderx2/rte.vars.mk
> new file mode 100644
> index 000000000..b80dc8680
> --- /dev/null
> +++ b/mk/machine/thunderx2/rte.vars.mk
> @@ -0,0 +1,34 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2018 Marvell International Ltd
> +#
> +
> +#
> +# 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.1-
> a+crc+crypto)
> +MACHINE_CFLAGS += $(call rte_cc_has_argument, -mcpu=thunderx2t99)
> --
> 2.21.0

Reviewed-by: Gavin Hu <gavin.hu@arm.com>

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
  
Thomas Monjalon April 5, 2019, 6:13 p.m. UTC | #2
18/03/2019 17:50, Jerin Jacob Kollanukkaran:
> From: Jerin Jacob <jerinj@marvell.com>
> 
> Optimized configuration for Marvell thunderx2 SoC.
> Updated meson build to support Marvell thunderx2 SoC.
> Added meson cross compile target.
> 
> Product details are here:
> 
> https://www.marvell.com/server-processors/thunderx2-arm-processors/
> 
> Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>

I see a very strange error when compiling with meson:

In file included from /usr/include/inttypes.h:27,
                 from /usr/include/pcap/pcap-inttypes.h:114,
                 from /usr/include/pcap/pcap.h:74,
                 from /usr/include/pcap.h:43,
                 from ../drivers/net/pcap/rte_eth_pcap.c:19:
/usr/include/stdint.h:109: error: "__INT64_C" redefined [-Werror]

Could we try to debug it and merge these patches in -rc2?
  
Jerin Jacob April 5, 2019, 6:47 p.m. UTC | #3
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Friday, April 5, 2019 11:43 PM
> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Pavan Nikhilesh
> Bhagavatula <pbhagavatula@marvell.com>
> Cc: dev@dpdk.org; gavin.hu@arm.com
> Subject: Re: [dpdk-dev] [PATCH v6 3/4] config: add thunderx2 machine
> config
> 
> 18/03/2019 17:50, Jerin Jacob Kollanukkaran:
> > From: Jerin Jacob <jerinj@marvell.com>
> >
> > Optimized configuration for Marvell thunderx2 SoC.
> > Updated meson build to support Marvell thunderx2 SoC.
> > Added meson cross compile target.
> >
> > Product details are here:
> >
> > https://www.marvell.com/server-processors/thunderx2-arm-processors/
> >
> > Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> > Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
> 
> I see a very strange error when compiling with meson:
> 
> In file included from /usr/include/inttypes.h:27,
>                  from /usr/include/pcap/pcap-inttypes.h:114,
>                  from /usr/include/pcap/pcap.h:74,
>                  from /usr/include/pcap.h:43,
>                  from ../drivers/net/pcap/rte_eth_pcap.c:19:
> /usr/include/stdint.h:109: error: "__INT64_C" redefined [-Werror]
> 
> Could we try to debug it and merge these patches in -rc2?


Could you please give more details to reproduce this issue
Compiler version - gcc or clang version? 
Build - Native or cross ?
Build OS ?
Meson and Ninja - Versions?
The command use to reproduce this issue as we are not able to get this Issue in our local setup? 


>
  
Thomas Monjalon April 5, 2019, 7:09 p.m. UTC | #4
05/04/2019 20:47, Jerin Jacob Kollanukkaran:
> From: Thomas Monjalon <thomas@monjalon.net>
> > 18/03/2019 17:50, Jerin Jacob Kollanukkaran:
> > > From: Jerin Jacob <jerinj@marvell.com>
> > >
> > > Optimized configuration for Marvell thunderx2 SoC.
> > > Updated meson build to support Marvell thunderx2 SoC.
> > > Added meson cross compile target.
> > >
> > > Product details are here:
> > >
> > > https://www.marvell.com/server-processors/thunderx2-arm-processors/
> > >
> > > Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> > > Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
> > 
> > I see a very strange error when compiling with meson:
> > 
> > In file included from /usr/include/inttypes.h:27,
> >                  from /usr/include/pcap/pcap-inttypes.h:114,
> >                  from /usr/include/pcap/pcap.h:74,
> >                  from /usr/include/pcap.h:43,
> >                  from ../drivers/net/pcap/rte_eth_pcap.c:19:
> > /usr/include/stdint.h:109: error: "__INT64_C" redefined [-Werror]
> > 
> > Could we try to debug it and merge these patches in -rc2?
> 
> Could you please give more details to reproduce this issue

First of all, we need to understand why it is getting pcap includes
from the native system while compiling for thunderx2.

> Compiler version - gcc or clang version?

aarch64-linux-gnu-gcc (GCC) 8.3.0

> Build - Native or cross ?

cross-compilation

> Build OS ?

My host is an archlinux

> Meson and Ninja - Versions?

meson 0.49.2
ninja 1.9.0

> The command use to reproduce this issue as we are not able to get this Issue in our local setup? 

I just run devtools/test-meson-builds.sh
and it compiles for config/arm/arm64_thunderx_linux_gcc
because I have an Arm toolchain installed.
  
Jerin Jacob April 6, 2019, 11:40 a.m. UTC | #5
On Fri, 2019-04-05 at 21:09 +0200, Thomas Monjalon wrote:
> 05/04/2019 20:47, Jerin Jacob Kollanukkaran:
> > From: Thomas Monjalon <thomas@monjalon.net>
> > > 18/03/2019 17:50, Jerin Jacob Kollanukkaran:
> > > > From: Jerin Jacob <jerinj@marvell.com>
> > > > 
> > > > Optimized configuration for Marvell thunderx2 SoC.
> > > > Updated meson build to support Marvell thunderx2 SoC.
> > > > Added meson cross compile target.
> > > > 
> > > > Product details are here:
> > > > 
> > > > https://www.marvell.com/server-processors/thunderx2-arm-processors/
> > > > 
> > > > Signed-off-by: Jerin Jacob <jerinj@marvell.com>
> > > > Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
> > > 
> > > I see a very strange error when compiling with meson:
> > > 

cross compiling config files needs an update since
"build: improve pcap dependency handling" changeset.

I will spin another version to fix this.

> > > In file included from /usr/include/inttypes.h:27,
> > >                  from /usr/include/pcap/pcap-inttypes.h:114,
> > >                  from /usr/include/pcap/pcap.h:74,
> > >                  from /usr/include/pcap.h:43,
> > >                  from ../drivers/net/pcap/rte_eth_pcap.c:19:
> > > /usr/include/stdint.h:109: error: "__INT64_C" redefined [-Werror]
> > > 
> > > Could we try to debug it and merge these patches in -rc2?
> >
  

Patch

diff --git a/config/arm/arm64_thunderx2_linux_gcc b/config/arm/arm64_thunderx2_linux_gcc
new file mode 100644
index 000000000..48b07a40c
--- /dev/null
+++ b/config/arm/arm64_thunderx2_linux_gcc
@@ -0,0 +1,15 @@ 
+[binaries]
+c = 'aarch64-linux-gnu-gcc'
+cpp = 'aarch64-linux-gnu-cpp'
+ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
+
+[host_machine]
+system = 'linux'
+cpu_family = 'aarch64'
+cpu = 'armv8-a'
+endian = 'little'
+
+[properties]
+implementor_id = '0x43'
+implementor_pn = '0xaf'
diff --git a/config/arm/meson.build b/config/arm/meson.build
index 3db6d6445..5c391ed3c 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -73,6 +73,12 @@  flags_default_extra = []
 flags_thunderx_extra = [
 	['RTE_MACHINE', '"thunderx"'],
 	['RTE_USE_C11_MEM_MODEL', false]]
+flags_thunderx2_extra = [
+	['RTE_MACHINE', '"thunderx2"'],
+	['RTE_CACHE_LINE_SIZE', 64],
+	['RTE_MAX_NUMA_NODES', 2],
+	['RTE_MAX_LCORE', 256],
+	['RTE_USE_C11_MEM_MODEL', true]]
 
 machine_args_generic = [
 	['default', ['-march=armv8-a+crc+crypto']],
@@ -89,7 +95,8 @@  machine_args_cavium = [
 	['native', ['-march=native']],
 	['0xa1', ['-mcpu=thunderxt88'], flags_thunderx_extra],
 	['0xa2', ['-mcpu=thunderxt81'], flags_thunderx_extra],
-	['0xa3', ['-mcpu=thunderxt83'], flags_thunderx_extra]]
+	['0xa3', ['-mcpu=thunderxt83'], flags_thunderx_extra],
+	['0xaf', ['-mcpu=thunderx2t99'], flags_thunderx2_extra]]
 
 ## Arm implementer ID (ARM DDI 0487C.a, Section G7.2.106, Page G7-5321)
 impl_generic = ['Generic armv8', flags_generic, machine_args_generic]
diff --git a/config/defconfig_arm64-thunderx2-linux-gcc b/config/defconfig_arm64-thunderx2-linux-gcc
new file mode 120000
index 000000000..b40a760b1
--- /dev/null
+++ b/config/defconfig_arm64-thunderx2-linux-gcc
@@ -0,0 +1 @@ 
+defconfig_arm64-thunderx2-linuxapp-gcc
\ No newline at end of file
diff --git a/config/defconfig_arm64-thunderx2-linuxapp-gcc b/config/defconfig_arm64-thunderx2-linuxapp-gcc
new file mode 100644
index 000000000..cc5c64ba0
--- /dev/null
+++ b/config/defconfig_arm64-thunderx2-linuxapp-gcc
@@ -0,0 +1,11 @@ 
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd
+#
+
+#include "defconfig_arm64-armv8a-linux-gcc"
+
+CONFIG_RTE_MACHINE="thunderx2"
+
+CONFIG_RTE_CACHE_LINE_SIZE=64
+CONFIG_RTE_MAX_NUMA_NODES=2
+CONFIG_RTE_MAX_LCORE=256
diff --git a/mk/machine/thunderx2/rte.vars.mk b/mk/machine/thunderx2/rte.vars.mk
new file mode 100644
index 000000000..b80dc8680
--- /dev/null
+++ b/mk/machine/thunderx2/rte.vars.mk
@@ -0,0 +1,34 @@ 
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd
+#
+
+#
+# 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.1-a+crc+crypto)
+MACHINE_CFLAGS += $(call rte_cc_has_argument, -mcpu=thunderx2t99)