From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id F0DADA04DD;
	Fri, 20 Nov 2020 13:10:40 +0100 (CET)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id B491BC93A;
	Fri, 20 Nov 2020 13:08:52 +0100 (CET)
Received: from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20])
 by dpdk.org (Postfix) with ESMTP id 319E0C908
 for <dev@dpdk.org>; Fri, 20 Nov 2020 13:08:37 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by lb.pantheon.sk (Postfix) with ESMTP id 6476EBA24E;
 Fri, 20 Nov 2020 13:08:34 +0100 (CET)
X-Virus-Scanned: amavisd-new at siecit.sk
Received: from lb.pantheon.sk ([127.0.0.1])
 by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id L_xt3YXSojqF; Fri, 20 Nov 2020 13:08:33 +0100 (CET)
Received: from service-node1.lab.pantheon.local (unknown [46.229.239.141])
 by lb.pantheon.sk (Postfix) with ESMTP id 395D2B9B55;
 Fri, 20 Nov 2020 13:08:30 +0100 (CET)
From: =?UTF-8?q?Juraj=20Linke=C5=A1?= <juraj.linkes@pantheon.tech>
To: bruce.richardson@intel.com, Ruifeng.Wang@arm.com,
 Honnappa.Nagarahalli@arm.com, Phil.Yang@arm.com, vcchunga@amazon.com,
 Dharmik.Thakkar@arm.com, jerinjacobk@gmail.com, hemant.agrawal@nxp.com,
 ajit.khaparde@broadcom.com, ferruh.yigit@intel.com
Cc: dev@dpdk.org, =?UTF-8?q?Juraj=20Linke=C5=A1?= <juraj.linkes@pantheon.tech>
Date: Fri, 20 Nov 2020 13:08:15 +0100
Message-Id: <1605874101-30893-7-git-send-email-juraj.linkes@pantheon.tech>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1605874101-30893-1-git-send-email-juraj.linkes@pantheon.tech>
References: <1605277875-13625-1-git-send-email-juraj.linkes@pantheon.tech>
 <1605874101-30893-1-git-send-email-juraj.linkes@pantheon.tech>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Subject: [dpdk-dev] [PATCH v13 06/12] build: isolate configuration for Arm
	generic build
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

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.linkes@pantheon.tech>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
 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 52c5f4476..143a3c9f8 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 573ae7e42..c3c8a1ef6 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 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 b449b10c3..403e1a02f 100644
--- a/config/arm/meson.build
+++ b/config/arm/meson.build
@@ -47,8 +47,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']},
@@ -97,8 +95,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'],
@@ -148,8 +144,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']}
 	}
 }
@@ -199,10 +195,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
@@ -215,21 +210,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'])
@@ -239,15 +237,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