On Wed, Oct 23, 2019 at 2:37 AM Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> wrote: > > > > <snip> > > > > > > > > > > > On Thu, 2019-08-01 at 07:48 +0800, Gavin Hu wrote: > > > > > Arm N1 SDP is an infrastructure segment development platform based > > > > > on armv8.2-a Neoverse N1 CPU. For more information, refer to: > > > > > https://community.arm.com/developer/tools-software/oss-platforms/w > > > > > / > > > > > docs/440/neoverse-n1-sdp > > > > > > > > > > Signed-off-by: Gavin Hu <gavin...@arm.com> > > > > > Reviewed-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com> > > > > > Reviewed-by: Steve Capper <steve.cap...@arm.com> > > > > > --- > > > > > config/arm/meson.build | 9 ++++++- > > > > > config/defconfig_arm64-neoversen1-linux-gcc | 1 + > > > > > config/defconfig_arm64-neoversen1-linuxapp-gcc | 15 ++++++++++++ > > > > > mk/machine/neoversen1/rte.vars.mk | 34 > > > > > > > > > > > diff --git a/config/defconfig_arm64-neoversen1-linuxapp-gcc > > > > > b/config/defconfig_arm64-neoversen1-linuxapp-gcc > > > > > new file mode 100644 > > > > > index 0000000..39b9e1f > > > > > --- /dev/null > > > > > +++ b/config/defconfig_arm64-neoversen1-linuxapp-gcc > > > > > > > > > > > @@ -0,0 +1,15 @@ > > > > > +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019 Arm Ltd. > > > > > +# > > > > > + > > > > > +#include "defconfig_arm64-armv8a-linux-gcc" > > > > > + > > > > > +CONFIG_RTE_MACHINE="neoversen1" > > > > This should probably be "n1sdp" as this is the name of the platform > > > > that matches the below configuration. > > > A clear definition of RTE_MACHINE is required. Jerin? > > > > I think, In the existing scheme of things, RTE_MACHINE defines, where to > > take > > the MACHINE_CFLAGS mk/machine/xxxx/rte.vars.mk > Ok, thank you > > > > > Considering the fact that there will be a lot of reusable IPs(for CPU) from > > ARM > > for armv8, I think, it would make sense to introduce RTE_MICRO_ARCH to > > avoid a lot of code duplications and confusion. > > > > RTE_ARCH example: "x86" or "arm64" > > RTE_MICRO_ARCH example: "a72" or "thunderx3" - defines > > mcpu and armv8 verion arch etc > > RTE_MACHINE example: "bluefield" or "thunderx3" > > - defines, number of cores, NUMA or not? etc > Looking at mk/machine/ directory, looks like RTE_MACHINE seems to be defining > micro-architecture for Intel. For ex: hsw, nhm, wsm. I see the same for Arm > as well. > Are you suggesting that we use RTE_MICRO_ARCH to pick > mk/micro-arch/xxxx/rte.vars.mk? and RTE_MACHINE would pick > mk/machine/xxxx/rte.vars.mk, but contain NUMA, #of cores etc?
Yes for Make build. I think, it is deprecated soon, so we need a similar solution for meson. > > > > > RTE_MACHINE should be probe based on "implementation ID" for arm64 and > > reuse already defined RTE_MICRO_ARCH to avoid code duplication. > > > > > > > > > > > > > > > > +CONFIG_RTE_ARCH_ARM_TUNE="neoverse-n1" > > > > > +CONFIG_RTE_MAX_LCORE=4 > > > > > +CONFIG_RTE_MAX_NUMA_NODES=1 > > > > > +CONFIG_RTE_CACHE_LINE_SIZE=64 > > > > > + > > > > > +# Doesn't support NUMA > > > > > +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n > > > > > +CONFIG_RTE_LIBRTE_VHOST_NUMA=n > > > > > diff --git a/mk/machine/neoversen1/rte.vars.mk > > > > > b/mk/machine/neoversen1/rte.vars.mk > > > > > new file mode 100644 > > > > > index 0000000..6d69de0 > > > > > --- /dev/null > > > > > +++ b/mk/machine/neoversen1/rte.vars.mk > > > > > @@ -0,0 +1,34 @@ > > > > > +# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2019 Arm > > > > > +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.2-a+crc+crypto) MACHINE_CFLAGS += $(call > > > > > +rte_cc_has_argument, -mcpu=neoverse-n1) > > > > > > > > > > > > > > -- > > > > Ola Liljedahl, Networking System Architect, Arm Phone +46706866373, > > > > Skype ola.liljedahl > > >