> -----Original Message----- > From: Juraj Linkeš <juraj.lin...@pantheon.tech> > Sent: Thursday, November 5, 2020 2:59 PM > To: bruce.richard...@intel.com; ruifeng.w...@arm.com; > honnappa.nagaraha...@arm.com; phil.y...@arm.com; > vcchu...@amazon.com; dharmik.thak...@arm.com; jerinjac...@gmail.com; > hemant.agra...@nxp.com; ajit.khapa...@broadcom.com; > ferruh.yi...@intel.com; acon...@redhat.com > Cc: dev@dpdk.org; Juraj Linkeš <juraj.lin...@pantheon.tech> > Subject: [PATCH v7 07/14] build: isolate configuration for generic build > > Use generic configuration for the only build where it makes sense - the > generic > build. For other builds, if we don't know either of implementer ID or part > number, the build is not supported. > Add part numbers to cross files where fallback to generic configuration is > assumed. > > Signed-off-by: Juraj Linkeš <juraj.lin...@pantheon.tech> > --- > config/arm/arm64_armv8_linux_gcc | 11 ++--- > config/arm/arm64_emag_linux_gcc | 1 + > ..._linux_gcc => arm64_thunderxt88_linux_gcc} | 1 + > config/arm/meson.build | 45 +++++++++---------- > 4 files changed, 30 insertions(+), 28 deletions(-) rename > config/arm/{arm64_thunderx_linux_gcc => arm64_thunderxt88_linux_gcc} > (93%) > > diff --git a/config/arm/arm64_armv8_linux_gcc > b/config/arm/arm64_armv8_linux_gcc > index 04cd82ba9..818953e0f 100644 > --- a/config/arm/arm64_armv8_linux_gcc > +++ b/config/arm/arm64_armv8_linux_gcc > @@ -22,8 +22,11 @@ endian = 'little' > # 'dpaa': NXP DPAA > implementer_id = 'generic' > > -# Supported part_numbers for generic, 0x41, 0x56, dpaa: > -# 'generic': valid for all armv8-a architectures (default value) > +# Supported part_numbers for generic: > +# 'generic': valid for all armv8-a architectures (unoptimized portable > +build) part_number = 'generic' > + > +# Supported part_numbers for 0x41, 0x56, dpaa: > # '0xd03': cortex-a53 > # '0xd04': cortex-a35 > # '0xd05': cortex-a55 > @@ -33,10 +36,8 @@ implementer_id = 'generic' > # '0xd0a': cortex-a75 > # '0xd0b': cortex-a76 > # '0xd0c': neoverse-n1 > -part_number = 'generic' > > # Supported part_numbers for 0x43: > -# 'generic': valid for all Cavium builds > # '0xa1': thunderxt88 > # '0xa2': thunderxt81 > # '0xa3': thunderxt83 > @@ -44,4 +45,4 @@ part_number = 'generic' > # '0xb2': octeontx2 > > # Supported part_numbers for 0x50: > -# 'generic': valid for all Ampere builds > +# '0x0': emag > diff --git a/config/arm/arm64_emag_linux_gcc > b/config/arm/arm64_emag_linux_gcc index 24f3d533e..c675954fc 100644 > --- a/config/arm/arm64_emag_linux_gcc > +++ b/config/arm/arm64_emag_linux_gcc > @@ -14,3 +14,4 @@ endian = 'little' > > [properties] > implementer_id = '0x50' > +part_number = '0x0' > diff --git a/config/arm/arm64_thunderx_linux_gcc > b/config/arm/arm64_thunderxt88_linux_gcc > similarity index 93% > rename from config/arm/arm64_thunderx_linux_gcc > rename to config/arm/arm64_thunderxt88_linux_gcc > index 670764437..758966262 100644 > --- a/config/arm/arm64_thunderx_linux_gcc > +++ b/config/arm/arm64_thunderxt88_linux_gcc > @@ -14,3 +14,4 @@ endian = 'little' > > [properties] > implementer_id = '0x43' > +part_number = '0xa1' > diff --git a/config/arm/meson.build b/config/arm/meson.build index > 3e692057a..92572f670 100644 > --- a/config/arm/meson.build > +++ b/config/arm/meson.build > @@ -34,7 +34,6 @@ flags_part_number_thunderx = [ > ['RTE_USE_C11_MEM_MODEL', false] > ] > part_number_config_arm = { > - 'generic': {'machine_args': ['-march=armv8-a+crc', '-moutline- > atomics']}, > 'native': {'machine_args': ['-march=native']}, > '0xd03': {'machine_args': ['-mcpu=cortex-a53']}, > '0xd04': {'machine_args': ['-mcpu=cortex-a35']}, @@ -74,7 +73,9 @@ > implementers = { > ['RTE_CACHE_LINE_SIZE', 128], > ['RTE_MAX_LCORE', 256] > ], > - 'part_number_config': part_number_config_arm > + 'part_number_config': { > + 'generic': {'machine_args': ['-march=armv8-a+crc', '- > moutline-atomics']} > + } > }, > '0x41': { > 'description': 'Arm', > @@ -95,7 +96,6 @@ implementers = { > ['RTE_MAX_NUMA_NODES', 2] > ], > 'part_number_config': { > - 'generic': {'machine_args': ['-march=armv8- > a+crc+crypto', '-mcpu=thunderx']}, > 'native': {'machine_args': ['-march=native']}, > '0xa1': { > 'machine_args': ['-mcpu=thunderxt88'], @@ - > 142,7 +142,7 @@ implementers = { > ['RTE_MAX_NUMA_NODES', 1] > ], > 'part_number_config': { > - 'generic': {'machine_args': ['-march=armv8- > a+crc+crypto', '-mtune=emag']}, > + '0x0': {'machine_args': ['-march=armv8-a+crc+crypto', > +'-mtune=emag']},
I removed generic from emag and instead used 0x0. Ruifeng, can you confirm that this is the right part number for emag? > 'native': {'machine_args': ['-march=native']} > } > }, > @@ -181,10 +181,9 @@ if dpdk_conf.get('RTE_ARCH_32') > machine_args += '-mfpu=neon' > else > # aarch64 build > - implementer_id = 'generic' > if machine == 'generic' and not meson.is_cross_build() > # generic build > - implementer_config = implementer['generic'] > + implementer_id = 'generic' > part_number = 'generic' > elif not meson.is_cross_build() > # native build > @@ -197,21 +196,24 @@ else > cmd_output = cmd.stdout().to_lower().strip().split(' ') > implementer_id = cmd_output[0] > part_number = cmd_output[3] > - endif > - # Set to generic if variable is not found > - implementer_config = implementers.get(implementer_id, > ['generic']) > - if implementer_config[0] == 'generic' > - implementer_config = implementer['generic'] > - part_number = 'generic' > + else > + error('Error when getting Arm Implementer ID and part > number.') > endif > if arm_force_native_march == true > part_number = 'native' > endif > else > # cross build > - implementer_id = meson.get_cross_property('implementer_id', > 'generic') > - part_number = meson.get_cross_property('part_number', > 'generic') > - implementer_config = implementers.get(implementer_id) > + implementer_id = meson.get_cross_property('implementer_id') > + part_number = meson.get_cross_property('part_number') > + endif > + > + if implementers.has_key(implementer_id) > + implementer_config = implementers[implementer_id] > + else > + error('Unsupported Arm implementer: @0@. > '.format(implementer_id) + > + 'Please add support for it or use the generic ' + > + '(-Dmachine=generic) build.') > endif > > message('Arm implementer: ' + implementer_config['description']) > @@ -221,15 +223,12 @@ else > if part_number_config.has_key(part_number) > # use the specified part_number machine args if found > part_number_config = part_number_config[part_number] > - elif not meson.is_cross_build() > - # default to generic machine args if part_number is not found > - # and not forcing native machine args > - # but don't default in cross-builds; if part_number is specified > - # incorrectly in a cross-file, it needs to be fixed there > - part_number_config = part_number_config['generic'] > else > - # doing cross build and part number is not in > part_number_config > - error('Cross build part number 0@0 not > found.'.format(part_number)) > + # unknown part number > + error('Unsupported part number @0@ of implementer @1@. ' > + .format(part_number, implementer_id) + > + 'Please add support for it or use the generic ' + > + '(-Dmachine=generic) build.') > endif > > # use default flags with implementer flags > -- > 2.20.1