From 9ca2f16faa7f1fab0564c37f381f7c12a8986cd6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Juraj=20Linke=C5=A1?= Date: Fri, 15 Jan 2021 14:26:04 +0100 Subject: [PATCH] config/arm: isolate generic build MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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š Reviewed-by: Honnappa Nagarahalli Acked-by: Jerin Jacob Tested-by: Jerin Jacob Tested-by: Pavan Nikhilesh Tested-by: Vimal Chungath Tested-by: Dharmik Thakkar --- config/arm/arm64_armada_linux_gcc | 1 + config/arm/arm64_dpaa_linux_gcc | 1 + config/arm/arm64_emag_linux_gcc | 1 + ..._linux_gcc => arm64_thunderxt88_linux_gcc} | 1 + config/arm/meson.build | 45 +++++++++---------- .../linux_gsg/cross_build_dpdk_for_arm64.rst | 9 ++-- 6 files changed, 29 insertions(+), 29 deletions(-) rename config/arm/{arm64_thunderx_linux_gcc => arm64_thunderxt88_linux_gcc} (93%) diff --git a/config/arm/arm64_armada_linux_gcc b/config/arm/arm64_armada_linux_gcc index 52c5f4476a..143a3c9f87 100644 --- a/config/arm/arm64_armada_linux_gcc +++ b/config/arm/arm64_armada_linux_gcc @@ -15,3 +15,4 @@ endian = 'little' [properties] implementer_id = '0x56' +part_number = '0xd08' diff --git a/config/arm/arm64_dpaa_linux_gcc b/config/arm/arm64_dpaa_linux_gcc index 573ae7e42c..c3c8a1ef6c 100644 --- a/config/arm/arm64_dpaa_linux_gcc +++ b/config/arm/arm64_dpaa_linux_gcc @@ -15,3 +15,4 @@ endian = 'little' [properties] implementer_id = 'dpaa' +part_number = '0xd08' diff --git a/config/arm/arm64_emag_linux_gcc b/config/arm/arm64_emag_linux_gcc index 24f3d533eb..c675954fc9 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 670764437b..7589662626 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 39cf98c671..be92630581 100644 --- a/config/arm/meson.build +++ b/config/arm/meson.build @@ -46,8 +46,6 @@ implementer_generic = { } 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']}, @@ -103,8 +101,6 @@ implementer_cavium = { ['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'], @@ -154,8 +150,8 @@ implementer_ampere = { ['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']}, 'native': {'machine_args': ['-march=native']} } } @@ -205,10 +201,9 @@ if dpdk_conf.get('RTE_ARCH_32') machine_args += '-mfpu=neon' else # aarch64 build - implementer_id = 'generic' if machine == 'default' and not meson.is_cross_build() # default build - implementer_config = implementer['generic'] + implementer_id = 'generic' part_number = 'generic' elif not meson.is_cross_build() # native build @@ -221,21 +216,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']) @@ -245,15 +243,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 diff --git a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst index 972598835d..6a883b0302 100644 --- a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst +++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst @@ -114,8 +114,10 @@ you may use various combinations of implementer/part number:: '0x56': Marvell ARMADA 'dpaa': NXP DPAA - 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) + + Supported part_numbers for 0x41, 0x56, dpaa: '0xd03': cortex-a53 '0xd04': cortex-a35 '0xd09': cortex-a73 @@ -124,7 +126,6 @@ you may use various combinations of implementer/part number:: '0xd0c': neoverse-n1 Supported part_numbers for 0x43: - 'generic': valid for all Cavium builds '0xa1': thunderxt88 '0xa2': thunderxt81 '0xa3': thunderxt83 @@ -132,4 +133,4 @@ you may use various combinations of implementer/part number:: '0xb2': octeontx2 Supported part_numbers for 0x50: - 'generic': valid for all Ampere builds + '0x0': emag -- 2.20.1