<snip>

> 
> 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>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com>

> ---
>  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 ++--
>  4 files changed, 27 insertions(+), 29 deletions(-)  rename
> config/arm/{arm64_thunderx_linux_gcc => arm64_thunderxt88_linux_gcc}
> (93%)
> 
> 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
> eb15848cb..fec06e70c 100644
> --- a/config/arm/meson.build
> +++ b/config/arm/meson.build
> @@ -48,8 +48,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']}, @@ -98,8 +96,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'], @@ -149,8
> +145,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']}
>       }
>  }
> @@ -200,10 +196,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
> @@ -216,21 +211,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'])
> @@ -240,15 +238,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 972598835..6a883b030 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

Reply via email to