get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/90955/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 90955,
    "url": "http://patches.dpdk.org/api/patches/90955/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1617957679-7751-3-git-send-email-juraj.linkes@pantheon.tech/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1617957679-7751-3-git-send-email-juraj.linkes@pantheon.tech>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1617957679-7751-3-git-send-email-juraj.linkes@pantheon.tech",
    "date": "2021-04-09T08:41:18",
    "name": "[v19,2/3] build: add 'platform' meson option and Arm SoC config",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "503988be8d31f54dec8f7bdfe606b47ce19e0020",
    "submitter": {
        "id": 1626,
        "url": "http://patches.dpdk.org/api/people/1626/?format=api",
        "name": "Juraj Linkeš",
        "email": "juraj.linkes@pantheon.tech"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1617957679-7751-3-git-send-email-juraj.linkes@pantheon.tech/mbox/",
    "series": [
        {
            "id": 16235,
            "url": "http://patches.dpdk.org/api/series/16235/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=16235",
            "date": "2021-04-09T08:41:16",
            "name": "Arm build options rework",
            "version": 19,
            "mbox": "http://patches.dpdk.org/series/16235/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/90955/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/90955/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id B7065A0579;\n\tFri,  9 Apr 2021 10:41:41 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9F555141411;\n\tFri,  9 Apr 2021 10:41:30 +0200 (CEST)",
            "from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20])\n by mails.dpdk.org (Postfix) with ESMTP id 3D459141408\n for <dev@dpdk.org>; Fri,  9 Apr 2021 10:41:28 +0200 (CEST)",
            "from localhost (localhost [127.0.0.1])\n by lb.pantheon.sk (Postfix) with ESMTP id 38322C4F1E;\n Fri,  9 Apr 2021 10:41:25 +0200 (CEST)",
            "from lb.pantheon.sk ([127.0.0.1])\n by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id eyeEbwxduzfE; Fri,  9 Apr 2021 10:41:24 +0200 (CEST)",
            "from service-node1.lab.pantheon.local (unknown [46.229.239.141])\n by lb.pantheon.sk (Postfix) with ESMTP id B6551C5641;\n Fri,  9 Apr 2021 10:41:21 +0200 (CEST)"
        ],
        "X-Virus-Scanned": "amavisd-new at siecit.sk",
        "From": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "To": "bruce.richardson@intel.com, Ruifeng.Wang@arm.com,\n Honnappa.Nagarahalli@arm.com, Phil.Yang@arm.com, vcchunga@amazon.com,\n Dharmik.Thakkar@arm.com, jerinjacobk@gmail.com, hemant.agrawal@nxp.com,\n ajit.khaparde@broadcom.com, ferruh.yigit@intel.com, aboyer@pensando.io",
        "Cc": "dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "Date": "Fri,  9 Apr 2021 10:41:18 +0200",
        "Message-Id": "<1617957679-7751-3-git-send-email-juraj.linkes@pantheon.tech>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1617957679-7751-1-git-send-email-juraj.linkes@pantheon.tech>",
        "References": "<1617950146-7307-1-git-send-email-juraj.linkes@pantheon.tech>\n <1617957679-7751-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 v19 2/3] build: add 'platform' meson option and\n Arm SoC config",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <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>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Add Arm SoC configuration sets to Arm meson.build and add an arch\nagnostic meson option, 'platform', to select from these SoC\nconfigurations for meson native builds. This is preferable to\nspecifying a cross file when doing aarch64 -> aarch64 builds, since the\ncross file specifies the toolchain as well.\n\nSigned-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>\nReviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>\nReviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>\nTested-by: Pavan Nikhilesh <pbhagavatula@marvell.com>\n---\n config/arm/arm64_armada_linux_gcc             |   6 +-\n config/arm/arm64_armv8_linux_clang_ubuntu1804 |   3 +-\n config/arm/arm64_armv8_linux_gcc              |   5 +-\n config/arm/arm64_bluefield_linux_gcc          |   6 +-\n config/arm/arm64_dpaa_linux_gcc               |   6 +-\n config/arm/arm64_emag_linux_gcc               |   5 +-\n config/arm/arm64_graviton2_linux_gcc          |   6 +-\n config/arm/arm64_n1sdp_linux_gcc              |   6 +-\n config/arm/arm64_n2_linux_gcc                 |   6 +-\n config/arm/arm64_octeontx2_linux_gcc          |   6 +-\n config/arm/arm64_stingray_linux_gcc           |   6 +-\n config/arm/arm64_thunderx2_linux_gcc          |   5 +-\n config/arm/arm64_thunderxt88_linux_gcc        |   5 +-\n config/arm/meson.build                        | 140 +++++++++++++++++-\n .../linux_gsg/cross_build_dpdk_for_arm64.rst  |  84 ++++-------\n meson_options.txt                             |   2 +\n 16 files changed, 179 insertions(+), 118 deletions(-)",
    "diff": "diff --git a/config/arm/arm64_armada_linux_gcc b/config/arm/arm64_armada_linux_gcc\nindex 9958db6692..301418949b 100644\n--- a/config/arm/arm64_armada_linux_gcc\n+++ b/config/arm/arm64_armada_linux_gcc\n@@ -14,8 +14,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x56'\n-part_number = '0xd08'\n-max_lcores = 16\n-max_numa_nodes = 1\n-numa = false\n+platform = 'armada'\ndiff --git a/config/arm/arm64_armv8_linux_clang_ubuntu1804 b/config/arm/arm64_armv8_linux_clang_ubuntu1804\nindex 57095c1304..db488d75f4 100644\n--- a/config/arm/arm64_armv8_linux_clang_ubuntu1804\n+++ b/config/arm/arm64_armv8_linux_clang_ubuntu1804\n@@ -14,7 +14,6 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = 'generic'\n-part_number = 'generic'\n+platform = 'generic'\n c_args = ['-target', 'aarch64-linux-gnu', '--sysroot', '/usr/aarch64-linux-gnu']\n c_link_args = ['-target', 'aarch64-linux-gnu', '-fuse-ld=lld', '--gcc-toolchain=/usr']\ndiff --git a/config/arm/arm64_armv8_linux_gcc b/config/arm/arm64_armv8_linux_gcc\nindex 5451a01da1..5391d35389 100644\n--- a/config/arm/arm64_armv8_linux_gcc\n+++ b/config/arm/arm64_armv8_linux_gcc\n@@ -14,7 +14,4 @@ endian = 'little'\n \n [properties]\n # Generate binaries that are portable across all Armv8 machines\n-implementer_id = 'generic'\n-part_number = 'generic'\n-max_lcores = 256\n-max_numa_nodes = 4\n+platform = 'generic'\ndiff --git a/config/arm/arm64_bluefield_linux_gcc b/config/arm/arm64_bluefield_linux_gcc\nindex 6bef87fbd4..248a9f031a 100644\n--- a/config/arm/arm64_bluefield_linux_gcc\n+++ b/config/arm/arm64_bluefield_linux_gcc\n@@ -13,8 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x41'\n-part_number = '0xd08'\n-max_lcores = 16\n-max_numa_nodes = 1\n-numa = false\n+platform = 'bluefield'\ndiff --git a/config/arm/arm64_dpaa_linux_gcc b/config/arm/arm64_dpaa_linux_gcc\nindex 37398c7628..e9d5fd31fc 100644\n--- a/config/arm/arm64_dpaa_linux_gcc\n+++ b/config/arm/arm64_dpaa_linux_gcc\n@@ -14,8 +14,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = 'dpaa'\n-part_number = '0xd08'\n-max_lcores = 16\n-max_numa_nodes = 1\n-numa = false\n+platform = 'dpaa'\ndiff --git a/config/arm/arm64_emag_linux_gcc b/config/arm/arm64_emag_linux_gcc\nindex 7cbb055106..9cdd931180 100644\n--- a/config/arm/arm64_emag_linux_gcc\n+++ b/config/arm/arm64_emag_linux_gcc\n@@ -13,7 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x50'\n-part_number = '0x0'\n-max_lcores = 32\n-max_numa_nodes = 1\n+platform = 'emag'\ndiff --git a/config/arm/arm64_graviton2_linux_gcc b/config/arm/arm64_graviton2_linux_gcc\nindex edacb79497..8016fd236c 100644\n--- a/config/arm/arm64_graviton2_linux_gcc\n+++ b/config/arm/arm64_graviton2_linux_gcc\n@@ -13,8 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x41'\n-part_number = '0xd0c'\n-max_lcores = 64\n-max_numa_nodes = 1\n-numa = false\n+platform = 'graviton2'\ndiff --git a/config/arm/arm64_n1sdp_linux_gcc b/config/arm/arm64_n1sdp_linux_gcc\nindex b00f2d1ef7..0df283e2f4 100644\n--- a/config/arm/arm64_n1sdp_linux_gcc\n+++ b/config/arm/arm64_n1sdp_linux_gcc\n@@ -13,8 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x41'\n-part_number = '0xd0c'\n-max_lcores = 4\n-max_numa_nodes = 1\n-numa = false\n+platform = 'n1sdp'\ndiff --git a/config/arm/arm64_n2_linux_gcc b/config/arm/arm64_n2_linux_gcc\nindex 817b8ee28e..036aee2b0a 100644\n--- a/config/arm/arm64_n2_linux_gcc\n+++ b/config/arm/arm64_n2_linux_gcc\n@@ -13,8 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x41'\n-part_number = '0xd49'\n-max_lcores = 64\n-max_numa_nodes = 1\n-numa = false\n+platform = 'n2'\ndiff --git a/config/arm/arm64_octeontx2_linux_gcc b/config/arm/arm64_octeontx2_linux_gcc\nindex 5937697098..9156ee5410 100644\n--- a/config/arm/arm64_octeontx2_linux_gcc\n+++ b/config/arm/arm64_octeontx2_linux_gcc\n@@ -13,8 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x43'\n-part_number = '0xb2'\n-max_lcores = 36\n-max_numa_nodes = 1\n-numa = false\n+platform = 'octeontx2'\ndiff --git a/config/arm/arm64_stingray_linux_gcc b/config/arm/arm64_stingray_linux_gcc\nindex 6bef87fbd4..319a4a151d 100644\n--- a/config/arm/arm64_stingray_linux_gcc\n+++ b/config/arm/arm64_stingray_linux_gcc\n@@ -13,8 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x41'\n-part_number = '0xd08'\n-max_lcores = 16\n-max_numa_nodes = 1\n-numa = false\n+platform = 'stingray'\ndiff --git a/config/arm/arm64_thunderx2_linux_gcc b/config/arm/arm64_thunderx2_linux_gcc\nindex c06dcdc2b3..69c71cbc82 100644\n--- a/config/arm/arm64_thunderx2_linux_gcc\n+++ b/config/arm/arm64_thunderx2_linux_gcc\n@@ -13,7 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x43'\n-part_number = '0xaf'\n-max_lcores = 256\n-max_numa_nodes = 2\n+platform = 'thunderx2'\ndiff --git a/config/arm/arm64_thunderxt88_linux_gcc b/config/arm/arm64_thunderxt88_linux_gcc\nindex 3ba1528e48..372097ba01 100644\n--- a/config/arm/arm64_thunderxt88_linux_gcc\n+++ b/config/arm/arm64_thunderxt88_linux_gcc\n@@ -13,7 +13,4 @@ cpu = 'armv8-a'\n endian = 'little'\n \n [properties]\n-implementer_id = '0x43'\n-part_number = '0xa1'\n-max_lcores = 96\n-max_numa_nodes = 1\n+platform = 'thunderxt88'\ndiff --git a/config/arm/meson.build b/config/arm/meson.build\nindex a241c45d13..6fcbbf2ebc 100644\n--- a/config/arm/meson.build\n+++ b/config/arm/meson.build\n@@ -25,7 +25,7 @@ flags_common = [\n ## Part numbers are specific to Arm implementers\n # implementer specific aarch64 flags have middle priority\n #     (will overwrite common flags)\n-# part number specific aarch64 flags have the highest priority\n+# part number specific aarch64 flags have higher priority\n #     (will overwrite both common and implementer specific flags)\n implementer_generic = {\n \t'description': 'Generic armv8',\n@@ -192,6 +192,106 @@ implementers = {\n \t'dpaa': implementer_dpaa\n }\n \n+# soc specific aarch64 flags have the highest priority\n+#     (will overwrite all other flags)\n+soc_generic = {\n+\t'description': 'Generic un-optimized build for all aarch64 machines',\n+\t'implementer': 'generic',\n+\t'part_number': 'generic'\n+}\n+\n+soc_armada = {\n+\t'description': 'Marvell ARMADA',\n+\t'implementer': '0x56',\n+\t'part_number': '0xd08',\n+\t'numa': false\n+}\n+\n+soc_bluefield = {\n+\t'description': 'NVIDIA BlueField',\n+\t'implementer': '0x41',\n+\t'part_number': '0xd08',\n+\t'numa': false\n+}\n+\n+soc_dpaa = {\n+\t'description': 'NXP DPAA',\n+\t'implementer': 'dpaa',\n+\t'part_number': '0xd08',\n+\t'numa': false\n+}\n+\n+soc_emag = {\n+\t'description': 'Ampere eMAG',\n+\t'implementer': '0x50',\n+\t'part_number': '0x0'\n+}\n+\n+soc_graviton2 = {\n+\t'description': 'AWS Graviton2',\n+\t'implementer': '0x41',\n+\t'part_number': '0xd0c',\n+\t'numa': false\n+}\n+\n+soc_n1sdp = {\n+\t'description': 'Arm Neoverse N1SDP',\n+\t'implementer': '0x41',\n+\t'part_number': '0xd0c',\n+\t'flags': [\n+\t\t['RTE_MAX_LCORE', 4]\n+\t],\n+\t'numa': false\n+}\n+\n+soc_n2 = {\n+\t'description': 'Arm Neoverse N2',\n+\t'implementer': '0x41',\n+\t'part_number': '0xd49',\n+\t'numa': false\n+}\n+\n+soc_octeontx2 = {\n+\t'description': 'Marvell OCTEON TX2',\n+\t'implementer': '0x43',\n+\t'part_number': '0xb2',\n+\t'numa': false\n+}\n+\n+soc_stingray = {\n+\t'description': 'Broadcom Stingray',\n+\t'implementer': '0x41',\n+\t'part_number': '0xd08',\n+\t'numa': false\n+}\n+\n+soc_thunderx2 = {\n+\t'description': 'Marvell ThunderX2 T99',\n+\t'implementer': '0x43',\n+\t'part_number': '0xaf'\n+}\n+\n+soc_thunderxt88 = {\n+\t'description': 'Marvell ThunderX T88',\n+\t'implementer': '0x43',\n+\t'part_number': '0xa1'\n+}\n+\n+socs = {\n+\t'generic': soc_generic,\n+\t'armada': soc_armada,\n+\t'bluefield': soc_bluefield,\n+\t'dpaa': soc_dpaa,\n+\t'emag': soc_emag,\n+\t'graviton2': soc_graviton2,\n+\t'n1sdp': soc_n1sdp,\n+\t'n2': soc_n2,\n+\t'octeontx2': soc_octeontx2,\n+\t'stingray': soc_stingray,\n+\t'thunderx2': soc_thunderx2,\n+\t'thunderxt88': soc_thunderxt88\n+}\n+\n dpdk_conf.set('RTE_ARCH_ARM', 1)\n dpdk_conf.set('RTE_FORCE_INTRINSICS', 1)\n \n@@ -203,11 +303,19 @@ if dpdk_conf.get('RTE_ARCH_32')\n \tmachine_args += '-mfpu=neon'\n else\n \t# aarch64 build\n+\tsoc = get_option('platform')\n+\tsoc_config = {}\n \tif not meson.is_cross_build()\n \t\tif machine == 'default'\n \t\t\t# default build\n+\t\t\tif soc != ''\n+\t\t\t\terror('Building for a particular platform is ' +\n+\t\t\t\t      'unsupported with default build.')\n+\t\t\tendif\n \t\t\timplementer_id = 'generic'\n \t\t\tpart_number = 'generic'\n+\t\telif soc != ''\n+\t\t\tsoc_config = socs.get(soc, {'not_supported': true})\n \t\telse\n \t\t\t# native build\n \t\t\t# The script returns ['Implementer', 'Variant', 'Architecture',\n@@ -225,8 +333,30 @@ else\n \t\tendif\n \telse\n \t\t# cross build\n-\t\timplementer_id = meson.get_cross_property('implementer_id')\n-\t\tpart_number = meson.get_cross_property('part_number')\n+\t\tsoc = meson.get_cross_property('platform', '')\n+\t\tif soc == ''\n+\t\t\terror('Arm SoC must be specified in the cross file.')\n+\t\tendif\n+\t\tsoc_config = socs.get(soc, {'not_supported': true})\n+\tendif\n+\n+\tsoc_flags = []\n+\tif soc_config.has_key('not_supported')\n+\t\terror('SoC @0@ not supported.'.format(soc))\n+\telif soc_config != {}\n+\t\timplementer_id = soc_config['implementer']\n+\t\timplementer_config = implementers[implementer_id]\n+\t\tpart_number = soc_config['part_number']\n+\t\tsoc_flags = soc_config.get('flags', [])\n+\t\tif not soc_config.get('numa', true)\n+\t\t\thas_libnuma = 0\n+\t\tendif\n+\t\tif soc_config.has_key('disabled_drivers')\n+\t\t\tdisabled_drivers += soc_config['disabled_drivers']\n+\t\tendif\n+\t\tif soc_config.has_key('enabled_drivers')\n+\t\t\tenabled_drivers += soc_config['enabled_drivers']\n+\t\tendif\n \tendif\n \n \tif implementers.has_key(implementer_id)\n@@ -252,8 +382,8 @@ else\n \t\t      '(-Dmachine=generic) build.')\n \tendif\n \n-\t# use default flags with implementer flags\n-\tdpdk_flags = flags_common + implementer_config['flags'] + part_number_config.get('flags', [])\n+\t# add/overwrite flags in the proper order\n+\tdpdk_flags = flags_common + implementer_config['flags'] + part_number_config.get('flags', []) + soc_flags\n \n \t# apply supported machine args\n \tmachine_args = [] # Clear previous machine args\ndiff --git a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst\nindex 1504dbfef0..fb01f3020c 100644\n--- a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst\n+++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst\n@@ -187,58 +187,32 @@ Use the following command to cross-compile DPDK for the target machine::\n    meson aarch64-build-clang --cross-file config/arm/arm64_armv8_linux_clang_ubuntu1804\n    ninja -C aarch64-build-clang\n \n-Supported cross-compilation targets\n------------------------------------\n-\n-If you wish to build for a target which is not among the current cross-files,\n-you may use various combinations of implementer/part number::\n-\n-   Supported implementers:\n-      'generic': Generic armv8\n-      '0x41':    Arm\n-      '0x43':    Cavium\n-      '0x50':    Ampere Computing\n-      '0x56':    Marvell ARMADA\n-      'dpaa':    NXP DPAA\n-\n-   Supported part_numbers for generic:\n-      'generic': valid for all armv8-a architectures (unoptimized portable build)\n-\n-   Supported part_numbers for 0x41, 0x56, dpaa:\n-      '0xd03':   cortex-a53\n-      '0xd04':   cortex-a35\n-      '0xd09':   cortex-a73\n-      '0xd0a':   cortex-a75\n-      '0xd0b':   cortex-a76\n-      '0xd0c':   neoverse-n1\n-\n-   Supported part_numbers for 0x43:\n-      '0xa1':    thunderxt88\n-      '0xa2':    thunderxt81\n-      '0xa3':    thunderxt83\n-      '0xaf':    thunderx2t99\n-      '0xb2':    octeontx2\n-\n-   Supported part_numbers for 0x50:\n-      '0x0':     emag\n-\n-Other cross file options\n-------------------------\n-\n-There are other options you may specify in a cross file to tailor the build::\n-\n-   Supported extra configuration\n-      max_numa_nodes = n  # will set RTE_MAX_NUMA_NODES\n-      max_lcores = n      # will set RTE_MAX_LCORE\n-\n-      numa = false        # set to false to force building for a non-NUMA system\n-         # if not set or set to true, the build system will build for a NUMA\n-         # system only if libnuma is installed\n-\n-      disabled_drivers = ['bus/dpaa', 'crypto/*']  # add disabled drivers\n-         # valid values are dir/subdirs in the drivers directory\n-         # wildcards are allowed\n-\n-      enabled_drivers = ['common/*', 'bus/*']  # build only these drivers\n-         # valid values are dir/subdirs in the drivers directory\n-         # wildcards are allowed\n+Building for an aarch64 SoC on an aarch64 build machine\n+-------------------------------------------------------\n+\n+If you wish to build on an aarch64 build machine for a different aarch64 SoC,\n+you don't need a separate cross toolchain, just a different set of\n+configuration options. To build for an aarch64 SoC, use the -Dplatform meson\n+option::\n+\n+   meson soc_build -Dplatform=<target_soc>\n+\n+Substitute <target_soc> with one of the supported SoCs::\n+\n+   generic:     Generic un-optimized build for all aarch64 machines.\n+   armada:      Marvell ARMADA\n+   bluefield:   NVIDIA BlueField\n+   dpaa:        NXP DPAA\n+   emag:        Ampere eMAG\n+   graviton2:   AWS Graviton2\n+   n1sdp:       Arm Neoverse N1SDP\n+   octeontx2:   Marvell OCTEON TX2\n+   stingray:    Broadcom Stingray\n+   thunderx2:   Marvell ThunderX2 T99\n+   thunderxt88: Marvell ThunderX T88\n+\n+These SoCs are also used in cross files, e.g.::\n+\n+   [properties]\n+   # Generate binaries that are portable across all Armv8 machines\n+   platform = 'generic'\ndiff --git a/meson_options.txt b/meson_options.txt\nindex d2d24a1424..d3d9e1ee51 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -32,6 +32,8 @@ option('max_lcores', type: 'integer', value: 128,\n \tdescription: 'maximum number of cores/threads supported by EAL')\n option('max_numa_nodes', type: 'integer', value: 32,\n \tdescription: 'maximum number of NUMA nodes supported by EAL')\n+option('platform', type: 'string', value: '',\n+\tdescription: 'Use configuration for a particular platform (such as an Arm SoC).')\n option('enable_trace_fp', type: 'boolean', value: false,\n \tdescription: 'enable fast path trace points.')\n option('tests', type: 'boolean', value: true,\n",
    "prefixes": [
        "v19",
        "2/3"
    ]
}