> -----Original Message----- > From: Yutang Jiang <yutang.ji...@amperecomputing.com> > Sent: Monday, June 12, 2023 10:48 PM > To: Ruifeng Wang <ruifeng.w...@arm.com> > Cc: Open Source Submission <patc...@amperecomputing.com>; dev@dpdk.org; > Yutang Jiang OS > <jiangyut...@os.amperecomputing.com> > Subject: RE: [PATCH] config/arm: add Ampere Altra/AltraMax/AmpereOne platform > > Hi Ruifeng, > > Please help me review this patch. Thank you very much. > > Best Regards, > Yutang Jiang > > -----Original Message----- > From: Yutang Jiang OS <jiangyut...@os.amperecomputing.com> > Sent: Sunday, June 11, 2023 1:03 PM > To: dev@dpdk.org > Cc: Open Source Submission <patc...@amperecomputing.com>; Yutang Jiang > <yutang.ji...@amperecomputing.com>; Yutang Jiang OS > <jiangyut...@os.amperecomputing.com> > Subject: [PATCH] config/arm: add Ampere Altra/AltraMax/AmpereOne platform > > This patch add Ampere series platform support for DPDK: > 1. Merging the eMAG and AmpereOne to the one struct implementer_ampere. > 2. The microarchitecture of Altra/AltraMax is N1, which > implementer/part_number > is defined in arm, so the definition of RTE_MAX_LCORE/RTE_MAX_NUMA_NODES > refers to the quadrant sub-numa definition in AltraMax 2P system. > 3. Added basic definition of AmpereOne. > > Signed-off-by: Yutang Jiang <yutang.ji...@amperecomputing.com> > Signed-off-by: Yutang Jiang <jiangyut...@os.amperecomputing.com> > --- > config/arm/arm64_altra_linux_gcc | 16 +++++++++ > config/arm/arm64_ampereone_linux_gcc | 16 +++++++++ > config/arm/meson.build | 52 ++++++++++++++++++++++++---- > 3 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 > config/arm/arm64_altra_linux_gcc create mode 100644 > config/arm/arm64_ampereone_linux_gcc > > diff --git a/config/arm/arm64_altra_linux_gcc > b/config/arm/arm64_altra_linux_gcc > new file mode 100644 > index 0000000000..ce0667ebe2 > --- /dev/null > +++ b/config/arm/arm64_altra_linux_gcc > @@ -0,0 +1,16 @@ > +[binaries] > +c = ['ccache', 'aarch64-linux-gnu-gcc'] cpp = ['ccache', > +'aarch64-linux-gnu-g++'] 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.2-a' > +endian = 'little' > + > +[properties] > +platform = 'altra' > diff --git a/config/arm/arm64_ampereone_linux_gcc > b/config/arm/arm64_ampereone_linux_gcc > new file mode 100644 > index 0000000000..8964432a74 > --- /dev/null > +++ b/config/arm/arm64_ampereone_linux_gcc > @@ -0,0 +1,16 @@ > +[binaries] > +c = ['ccache', 'aarch64-linux-gnu-gcc'] cpp = ['ccache', > +'aarch64-linux-gnu-g++'] 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.6-a' > +endian = 'little' > + > +[properties] > +platform = 'ampereone' > diff --git a/config/arm/meson.build b/config/arm/meson.build index > 43f6a551a2..57424b88dc > 100644 > --- a/config/arm/meson.build > +++ b/config/arm/meson.build > @@ -71,8 +71,8 @@ part_number_config_arm = { > ['RTE_MACHINE', '"neoverse-n1"'], > ['RTE_ARM_FEATURE_ATOMICS', true], > ['RTE_MAX_MEM_MB', 1048576], > - ['RTE_MAX_LCORE', 160], > - ['RTE_MAX_NUMA_NODES', 2] > + ['RTE_MAX_LCORE', 256], > + ['RTE_MAX_NUMA_NODES', 8] > ] > }, > '0xd40': { > @@ -166,16 +166,29 @@ implementer_cavium = { implementer_ampere = { > 'description': 'Ampere Computing', > 'flags': [ > - ['RTE_MACHINE', '"emag"'], > ['RTE_CACHE_LINE_SIZE', 64], > - ['RTE_MAX_LCORE', 32], > - ['RTE_MAX_NUMA_NODES', 1] > + ['RTE_MAX_LCORE', 1024], > + ['RTE_MAX_NUMA_NODES', 8] > ], > 'part_number_config': { > '0x0': { > 'march': 'armv8-a',
eMag is defined as armv8.2-a in cross file. Do you want to update march to armv8.2-a? > 'march_features': ['crc', 'crypto'], > - 'compiler_options': ['-mtune=emag'] > + 'compiler_options': ['-mtune=emag'], > + 'flags': [ > + ['RTE_MACHINE', '"eMAG"'], > + ['RTE_MAX_LCORE', 32], > + ['RTE_MAX_NUMA_NODES', 1] > + ] > + }, > + '0xac3': { > + 'march': 'armv8.6-a', > + 'march_features': ['crc', 'crypto'], > + 'compiler_options': ['-mcpu=ampere1'], > + 'flags': [ > + ['RTE_MACHINE', '"AmpereOne"'], > + ['RTE_MAX_LCORE', 320] Add MAX_NUMA_NODES here. > + ] > } > } > } > @@ -266,6 +279,7 @@ implementers = { > '0x43': implementer_cavium, > '0x48': implementer_hisilicon, > '0x50': implementer_ampere, > + '0xc0': implementer_ampere, > '0x51': implementer_qualcomm, > '0x70': implementer_phytium, > } > @@ -347,6 +361,28 @@ soc_emag = { > 'part_number': '0x0' > } > > +soc_altra = { > + 'description': 'Ampere Altra/AltraMax', > + 'implementer': '0x41', > + 'part_number': '0xd0c', > + 'flags': [ > + ['RTE_MAX_LCORE', 256], > + ['RTE_MAX_NUMA_NODES', 8] These two flags are redundant. MAX_LCORE & MAX_NUMA_NODES are already in corresponding part_number_config. > + ], > + 'numa': true > +} > + > +soc_ampereone = { > + 'description': 'Ampere AmpereOne', > + 'implementer': '0xc0', > + 'part_number': '0xac3', > + 'flags': [ > + ['RTE_MAX_LCORE', 320], > + ['RTE_MAX_NUMA_NODES', 8] Same here. > + ], > + 'numa': true > +} > + > soc_ft2000plus = { > 'description': 'Phytium FT-2000+', > 'implementer': '0x70', > @@ -469,6 +505,8 @@ cn9k: Marvell OCTEON 9 > cn10k: Marvell OCTEON 10 > dpaa: NXP DPAA > emag: Ampere eMAG > +altra: Ampere Altra/AltraMax > +ampereone: Ampere AmpereOne > ft2000plus: Phytium FT-2000+ > tys2500: Phytium TengYun S2500 > graviton2: AWS Graviton2 > @@ -496,6 +534,8 @@ socs = { > 'cn10k' : soc_cn10k, > 'dpaa': soc_dpaa, > 'emag': soc_emag, > + 'altra': soc_altra, > + 'ampereone': soc_ampereone, > 'ft2000plus': soc_ft2000plus, > 'tys2500': soc_tys2500, > 'graviton2': soc_graviton2, > -- > 2.40.0