config: add octeontx2 machine
authorJerin Jacob <jerinj@marvell.com>
Sat, 13 Apr 2019 20:19:46 +0000 (01:49 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 15 Apr 2019 20:58:20 +0000 (22:58 +0200)
Optimized configuration for Marvell octeontx2 SoC.
Updated meson build to support Marvell octeontx2 SoC.
Added meson cross build target for octeontx2.

Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
config/arm/arm64_octeontx2_linux_gcc [new file with mode: 0644]
config/arm/meson.build
config/defconfig_arm64-octeontx2-linux-gcc [new symlink]
config/defconfig_arm64-octeontx2-linuxapp-gcc [new file with mode: 0644]
mk/machine/octeontx2/rte.vars.mk [new file with mode: 0644]

diff --git a/config/arm/arm64_octeontx2_linux_gcc b/config/arm/arm64_octeontx2_linux_gcc
new file mode 100644 (file)
index 0000000..e2c0b8f
--- /dev/null
@@ -0,0 +1,16 @@
+[binaries]
+c = 'aarch64-linux-gnu-gcc'
+cpp = 'aarch64-linux-gnu-cpp'
+ar = 'aarch64-linux-gnu-gcc-ar'
+strip = 'aarch64-linux-gnu-strip'
+pcap-config = ''
+
+[host_machine]
+system = 'linux'
+cpu_family = 'aarch64'
+cpu = 'armv8-a'
+endian = 'little'
+
+[properties]
+implementor_id = '0x43'
+implementor_pn = '0xb2'
index ccf806e..22a062b 100644 (file)
@@ -60,6 +60,12 @@ flags_thunderx2_extra = [
        ['RTE_MAX_NUMA_NODES', 2],
        ['RTE_MAX_LCORE', 256],
        ['RTE_USE_C11_MEM_MODEL', true]]
+flags_octeontx2_extra = [
+       ['RTE_MACHINE', '"octeontx2"'],
+       ['RTE_MAX_NUMA_NODES', 1],
+       ['RTE_MAX_LCORE', 24],
+       ['RTE_EAL_IGB_UIO', false],
+       ['RTE_USE_C11_MEM_MODEL', true]]
 
 machine_args_generic = [
        ['default', ['-march=armv8-a+crc+crypto']],
@@ -77,7 +83,8 @@ machine_args_cavium = [
        ['0xa1', ['-mcpu=thunderxt88'], flags_thunderx_extra],
        ['0xa2', ['-mcpu=thunderxt81'], flags_thunderx_extra],
        ['0xa3', ['-mcpu=thunderxt83'], flags_thunderx_extra],
-       ['0xaf', ['-mcpu=thunderx2t99'], flags_thunderx2_extra]]
+       ['0xaf', ['-mcpu=thunderx2t99'], flags_thunderx2_extra],
+       ['0xb2', ['-mcpu=octeontx2'], flags_octeontx2_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-octeontx2-linux-gcc b/config/defconfig_arm64-octeontx2-linux-gcc
new file mode 120000 (symlink)
index 0000000..e251505
--- /dev/null
@@ -0,0 +1 @@
+defconfig_arm64-octeontx2-linuxapp-gcc
\ No newline at end of file
diff --git a/config/defconfig_arm64-octeontx2-linuxapp-gcc b/config/defconfig_arm64-octeontx2-linuxapp-gcc
new file mode 100644 (file)
index 0000000..9eae845
--- /dev/null
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2018 Marvell International Ltd
+#
+
+#include "defconfig_arm64-armv8a-linux-gcc"
+
+CONFIG_RTE_MACHINE="octeontx2"
+
+CONFIG_RTE_CACHE_LINE_SIZE=128
+CONFIG_RTE_MAX_NUMA_NODES=1
+CONFIG_RTE_MAX_LCORE=24
+
+# Doesn't support NUMA
+CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n
+CONFIG_RTE_LIBRTE_VHOST_NUMA=n
+
+# Recommend to use VFIO as co-processors needs SMMU/IOMMU
+CONFIG_RTE_EAL_IGB_UIO=n
diff --git a/mk/machine/octeontx2/rte.vars.mk b/mk/machine/octeontx2/rte.vars.mk
new file mode 100644 (file)
index 0000000..cbec7f1
--- /dev/null
@@ -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=-mcpu=armv8.2-a+crc+crypto+lse)
+MACHINE_CFLAGS += $(call rte_cc_has_argument, -mcpu=octeontx2)