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 DA943A04C5;
	Fri,  4 Sep 2020 07:30:39 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id AF7361C0CF;
	Fri,  4 Sep 2020 07:30:39 +0200 (CEST)
Received: from EUR01-VE1-obe.outbound.protection.outlook.com
 (mail-eopbgr140049.outbound.protection.outlook.com [40.107.14.49])
 by dpdk.org (Postfix) with ESMTP id 33AF31C0CE
 for <dev@dpdk.org>; Fri,  4 Sep 2020 07:30:38 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5VnZ2Cnmq1v7drseavKaSOabRQY5NRzl1ESqbIW2P+U=;
 b=PRZWKZW2P7OrnzTW0C5326nQ7eZvnLk7vk+q4+X+I2ZG80KJFgRBBlZBcBnfs4T3y7K4QSp0aTkWyTU2s9mPffk61bEGgf3pjBtvctr5WJl4X4UAnTQptcYdcvd5v5g3gn4z2N82KdQ1HPZDlmXvU4sY3+Bzoqa2htEL4v3UeVo=
Received: from AM6PR01CA0061.eurprd01.prod.exchangelabs.com
 (2603:10a6:20b:e0::38) by AM6PR08MB4358.eurprd08.prod.outlook.com
 (2603:10a6:20b:b6::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.25; Fri, 4 Sep
 2020 05:30:36 +0000
Received: from AM5EUR03FT018.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:20b:e0:cafe::e0) by AM6PR01CA0061.outlook.office365.com
 (2603:10a6:20b:e0::38) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.16 via Frontend
 Transport; Fri, 4 Sep 2020 05:30:36 +0000
X-MS-Exchange-Authentication-Results: spf=temperror (sender IP is
 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was
 verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=none action=none
 header.from=arm.com;
Received-SPF: TempError (protection.outlook.com: error in processing during
 lookup of arm.com: DNS Timeout)
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM5EUR03FT018.mail.protection.outlook.com (10.152.16.114) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.3348.16 via Frontend Transport; Fri, 4 Sep 2020 05:30:35 +0000
Received: ("Tessian outbound e8cdb8c6f386:v64");
 Fri, 04 Sep 2020 05:30:35 +0000
X-CR-MTA-TID: 64aa7808
Received: from e586cc172b45.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 89BC94B4-4E2B-45A8-BC35-52D85736D172.1; 
 Fri, 04 Sep 2020 05:30:29 +0000
Received: from EUR03-DB5-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e586cc172b45.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Fri, 04 Sep 2020 05:30:29 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=iu0myHeIVMTlbr+3JEqF/9WZvBFwXrd5W6rGlfHYSTWix/MeEmJfFHHREWjbz6vf+Er5VV7jLxEcVxHclikyVdTwtE6ywS3pp8lpu8E+AAmBlRdSSW5O3XHLEcI8jGEbfkuOWLX9h/xsJXzSGbHvoxCnT4qtNjiilgPlQQ32XJ7wJrcWztTqjWGBTmqVz3ndp4equMldrwcdjFOd+MKH4LnbcWKDG+L8oIl0WMDcF9UYbjo5rFGuIj9zA8YwzLM3/8gxk0c9g+UavK1Y8bTgMydzSpqDpR03H+fCqGa5zHbOXQW7T3uU+6BHGRtfTi2w+wuM7HFX2tDa6SZzx9wPjA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5VnZ2Cnmq1v7drseavKaSOabRQY5NRzl1ESqbIW2P+U=;
 b=Rl4/ZB6gG1D9G71qW01Ij2Qi/S8nmnW6MI/LQV8wpxZ0VMw6ecQ6zp+ZX6MTbtJkIFdQSV+LWBToOEu9rEBovWqSj15If7Um2tabs6IZmbIyRg/uaQDz++zLtaUaiz3PQtLYRLGmKKBzObfYiHLb+W+bgQyYTplsNimVvkmdxv1TUE1NdYlkjX9UdcM6+Cus4np29XFGj3bQ0YKTgIEab/p0+o1qnJJqM1mc8Qu5Upf6R2vNKTrRTUdWj3K2Ur03dXwizjGpRotMhQv52sBofUmNa+w6plKdcF9m85L2Dsc9oxYGsduhO4juDEgoDHLM37BBpyZPAIPZV1uQI5eaBg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5VnZ2Cnmq1v7drseavKaSOabRQY5NRzl1ESqbIW2P+U=;
 b=PRZWKZW2P7OrnzTW0C5326nQ7eZvnLk7vk+q4+X+I2ZG80KJFgRBBlZBcBnfs4T3y7K4QSp0aTkWyTU2s9mPffk61bEGgf3pjBtvctr5WJl4X4UAnTQptcYdcvd5v5g3gn4z2N82KdQ1HPZDlmXvU4sY3+Bzoqa2htEL4v3UeVo=
Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6)
 by DBBPR08MB4443.eurprd08.prod.outlook.com (2603:10a6:10:c8::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.15; Fri, 4 Sep
 2020 05:30:28 +0000
Received: from DBAPR08MB5814.eurprd08.prod.outlook.com
 ([fe80::408a:40fb:7402:c805]) by DBAPR08MB5814.eurprd08.prod.outlook.com
 ([fe80::408a:40fb:7402:c805%6]) with mapi id 15.20.3348.016; Fri, 4 Sep 2020
 05:30:28 +0000
From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
To: Ciara Power <ciara.power@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: Ray Kinsella <mdr@ashroe.eu>, Neil Horman <nhorman@tuxdriver.com>, nd
 <nd@arm.com>, Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>, nd
 <nd@arm.com>
Thread-Topic: [dpdk-dev] [PATCH v2 01/17] eal: add max SIMD bitwidth
Thread-Index: AQHWfI0N3JVhPFghv0mjPjcIL9NesqlX/R4Q
Date: Fri, 4 Sep 2020 05:30:28 +0000
Message-ID: <DBAPR08MB5814F8ADBAAB9BC3C728F4CA982D0@DBAPR08MB5814.eurprd08.prod.outlook.com>
References: <20200807155859.63888-1-ciara.power@intel.com>
 <20200827161304.32300-1-ciara.power@intel.com>
 <20200827161304.32300-2-ciara.power@intel.com>
In-Reply-To: <20200827161304.32300-2-ciara.power@intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: EEC29DF8D6A60942B17FE3A664286605.0
x-checkrecipientchecked: true
Authentication-Results-Original: intel.com; dkim=none (message not signed)
 header.d=none;intel.com; dmarc=none action=none header.from=arm.com;
x-originating-ip: [217.140.110.7]
x-ms-publictraffictype: Email
X-MS-Office365-Filtering-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: 364718f2-68d7-424f-e8df-08d85093a63d
x-ms-traffictypediagnostic: DBBPR08MB4443:|AM6PR08MB4358:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <AM6PR08MB43586BADA7B0D758EDE933C9982D0@AM6PR08MB4358.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:6790;OLM:6790;
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: NI+07KOykrBDap2if8eIQJIIUmTOTVg48GmuQyYSC+gKiFREE2rmCB8UuO2cvhNFmf/Cv84mVmqnqAYze1UtL0o/Jv4+VIufhvYVJA8rUPIUuReLj2gUQNK+9IsEVTWmxVfQFtohsou1q0BywJHT1kaEePs+gAkHG+4moe+vJbnffvRpzhUETyzLJs8EZpBXeruUqYp+BY4dMhraAZCsPl0LkxRH6GB9ryLjTBNtE0+EnBae5OyJWXiZnVPySHPGEqY3hb4ClzY3IMYC9B3k9xu08g7clXZRQgUl0f8A+W1HTuoERTJieT7n9jaf9SZ6dNNddZkUrQYyxWUgP1rjmA==
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE;
 SFS:(4636009)(366004)(39860400002)(396003)(136003)(346002)(376002)(5660300002)(4326008)(83380400001)(110136005)(52536014)(54906003)(66476007)(64756008)(76116006)(66446008)(7696005)(9686003)(66946007)(71200400001)(8676002)(8936002)(66556008)(2906002)(33656002)(86362001)(316002)(26005)(186003)(478600001)(55016002)(6506007);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata: OPCa382JWiW/9dotqnkYEhx4jx9pqa2NqNiB5cSFqh6pWRzGbFc8CN1inU3bPpr23xicq8h7YrrjUyKlo80wEM5WVeOIXKXa8F4ulPHZPllQsk9tUVEv04tdz9WvEboB2S73NgzFzksziB0w4yE7V1SF7f10hQPKHmBL8aRFjkV/pR1ccefBqfZAC0Q9ZFtXNZm98z1nV0owo1y+xyqk/kHfN3mKqYs8EQpTQjS44ddgZCICnMUdbW621fQiRS6QNOrAYjsZAGctFq/6yPbtC7ryvqsA5gTi7faIMQ4znZie/+tUldv/Gvi675hN26NoanD42AGZusG5tZ0YoymxkqxsNSKoZzIKka8/4jHL8G89j2RocfLuzicGJ5k3S7Umiyj7WR7Z5ndpX9AYCfIZBR5oyMZ2lo+GOSc42GthPH7zxzer1a8GsLBsEUwqFUzKb2CmrC7EC60N40qQU4FbNRHSU5K1NmuOm7Kelz59wIIbfLKTLuXweQdJz8sze1akmmnkIGlPuUwLMxntVIo3lllfThyH8kE1a/NGiA+GhcBKYJpd01cPlhwtNLMp/MFtYVXu2YMLwjJv0u3DR7N6TWmOv0q7hXloDgKa5fTyZ8c8sv1Gi5KYNhUExSrQBdl0BnKy0yY90Q7KXdwtPXy/2A==
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4443
Original-Authentication-Results: intel.com; dkim=none (message not signed)
 header.d=none;intel.com; dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT018.eop-EUR03.prod.protection.outlook.com
X-MS-Office365-Filtering-Correlation-Id-Prvs: cef34e1e-5d87-40ff-5ab4-08d85093a277
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: RBq/oI5TuPmu0RJ4/dnSKd3FGZNF1l4QSpDK+d3YN1eFehmgWv85jLvoQlep68wbKkAmQt7GbnXEIvnLtn5DuOVwq6HegVhrnVlBtP7p0ipi7dvCi1loLnIXqyhhTxVJM5NLINE2DbK2iLpVweEzN9yVFdXK2HayRssmhB3WENBtm/T1OPxOLmAkchP7czk6ir2Zidno+0U9CDMnlZScI5Xe8GFc2udjZ+y4e9vWj36OPbCi35MP0fXJ1QJCvgKulVEkBO7nEO9PPtUaDTANRgdm2s2h6NEzfRzkZL6JyESUvOXqKqoayRyQqGU0923oNQvdB0MveIcGAJE+cEeM1Lx4pHvPHQFmnRE9NIDsJMX3nI5P7xvkdzzVkfa04fpHkkrRyGRtYPpi9N7iPReeiA==
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE;
 SFS:(4636009)(136003)(346002)(39860400002)(376002)(396003)(46966005)(26005)(70586007)(83380400001)(110136005)(5660300002)(7696005)(81166007)(478600001)(33656002)(2906002)(4326008)(70206006)(82310400003)(54906003)(356005)(316002)(86362001)(55016002)(82740400003)(36906005)(8936002)(52536014)(63350400001)(8676002)(9686003)(336012)(6506007)(186003)(47076004);
 DIR:OUT; SFP:1101; 
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2020 05:30:35.1885 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 364718f2-68d7-424f-e8df-08d85093a63d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT018.eop-EUR03.prod.protection.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4358
Subject: Re: [dpdk-dev] [PATCH v2 01/17] eal: add max SIMD bitwidth
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>

<snip>

>=20
> This patch adds a max SIMD bitwidth EAL configuration. The API allows for=
 an
> app to set this value. It can also be set using EAL argument --force-max-=
simd-
> bitwidth, which will lock the value and override any modifications made b=
y
> the app.
>=20
> Signed-off-by: Ciara Power <ciara.power@intel.com>
>=20
> ---
> v2: Added to Doxygen comment for API.
> ---
>  lib/librte_eal/common/eal_common_options.c | 60
> ++++++++++++++++++++++
>  lib/librte_eal/common/eal_internal_cfg.h   |  8 +++
>  lib/librte_eal/common/eal_options.h        |  2 +
>  lib/librte_eal/include/rte_eal.h           | 32 ++++++++++++
>  lib/librte_eal/rte_eal_version.map         |  4 ++
>  5 files changed, 106 insertions(+)
>=20
> diff --git a/lib/librte_eal/common/eal_common_options.c
> b/lib/librte_eal/common/eal_common_options.c
> index a5426e1234..90f4e8f5c3 100644
> --- a/lib/librte_eal/common/eal_common_options.c
> +++ b/lib/librte_eal/common/eal_common_options.c
> @@ -102,6 +102,7 @@ eal_long_options[] =3D {
>  	{OPT_MATCH_ALLOCATIONS, 0, NULL,
> OPT_MATCH_ALLOCATIONS_NUM},
>  	{OPT_TELEMETRY,         0, NULL, OPT_TELEMETRY_NUM        },
>  	{OPT_NO_TELEMETRY,      0, NULL, OPT_NO_TELEMETRY_NUM     },
> +	{OPT_FORCE_MAX_SIMD_BITWIDTH, 1, NULL,
> +OPT_FORCE_MAX_SIMD_BITWIDTH_NUM},
>  	{0,                     0, NULL, 0                        }
>  };
>=20
> @@ -1309,6 +1310,32 @@ eal_parse_iova_mode(const char *name)
>  	return 0;
>  }
>=20
> +static int
> +eal_parse_simd_bitwidth(const char *arg, bool locked) {
> +	char *end;
> +	uint16_t bitwidth;
> +	int ret;
> +	struct internal_config *internal_conf =3D
> +		eal_get_internal_configuration();
> +
> +	if (arg =3D=3D NULL || arg[0] =3D=3D '\0')
> +		return -1;
> +
> +	errno =3D 0;
> +	bitwidth =3D strtoul(arg, &end, 0);
> +
> +	/* check for errors */
> +	if ((errno !=3D 0) || end =3D=3D NULL || (*end !=3D '\0'))
> +		return -1;
> +
> +	ret =3D rte_set_max_simd_bitwidth(bitwidth);
> +	if (ret < 0)
> +		return -1;
> +	internal_conf->max_simd_bitwidth.locked =3D locked;
> +	return 0;
> +}
> +
>  static int
>  eal_parse_base_virtaddr(const char *arg)  { @@ -1707,6 +1734,13 @@
> eal_parse_common_option(int opt, const char *optarg,
>  	case OPT_NO_TELEMETRY_NUM:
>  		conf->no_telemetry =3D 1;
>  		break;
> +	case OPT_FORCE_MAX_SIMD_BITWIDTH_NUM:
> +		if (eal_parse_simd_bitwidth(optarg, 1) < 0) {
> +			RTE_LOG(ERR, EAL, "invalid parameter for --"
> +					OPT_FORCE_MAX_SIMD_BITWIDTH
> "\n");
> +			return -1;
> +		}
> +		break;
>=20
>  	/* don't know what to do, leave this to caller */
>  	default:
> @@ -1903,6 +1937,31 @@ eal_check_common_options(struct
> internal_config *internal_cfg)
>  	return 0;
>  }
>=20
> +uint16_t
> +rte_get_max_simd_bitwidth(void)
> +{
> +	const struct internal_config *internal_conf =3D
> +		eal_get_internal_configuration();
> +	return internal_conf->max_simd_bitwidth.bitwidth;
> +}
> +
> +int
> +rte_set_max_simd_bitwidth(uint16_t bitwidth) {
> +	struct internal_config *internal_conf =3D
> +		eal_get_internal_configuration();
> +	if (internal_conf->max_simd_bitwidth.locked) {
> +		RTE_LOG(NOTICE, EAL, "Cannot set max SIMD bitwidth - user
> runtime override enabled");
> +		return -EPERM;
> +	}
> +	if (bitwidth < RTE_NO_SIMD || !rte_is_power_of_2(bitwidth)) {
> +		RTE_LOG(ERR, EAL, "Invalid bitwidth value!\n");
> +		return -EINVAL;
> +	}
> +	internal_conf->max_simd_bitwidth.bitwidth =3D bitwidth;
> +	return 0;
> +}
> +
>  void
>  eal_common_usage(void)
>  {
> @@ -1981,6 +2040,7 @@ eal_common_usage(void)
>  	       "  --"OPT_BASE_VIRTADDR"     Base virtual address\n"
>  	       "  --"OPT_TELEMETRY"   Enable telemetry support (on by
> default)\n"
>  	       "  --"OPT_NO_TELEMETRY"   Disable telemetry support\n"
> +	       "  --"OPT_FORCE_MAX_SIMD_BITWIDTH" Force the max SIMD
> bitwidth\n"
>  	       "\nEAL options for DEBUG use only:\n"
>  	       "  --"OPT_HUGE_UNLINK"       Unlink hugepage files after init\n"
>  	       "  --"OPT_NO_HUGE"           Use malloc instead of hugetlbfs\n"
> diff --git a/lib/librte_eal/common/eal_internal_cfg.h
> b/lib/librte_eal/common/eal_internal_cfg.h
> index 13f93388a7..367e0cc19e 100644
> --- a/lib/librte_eal/common/eal_internal_cfg.h
> +++ b/lib/librte_eal/common/eal_internal_cfg.h
> @@ -33,6 +33,12 @@ struct hugepage_info {
>  	int lock_descriptor;    /**< file descriptor for hugepage dir */
>  };
>=20
> +struct simd_bitwidth {
> +	/**< flag indicating if bitwidth is locked from further modification */
> +	bool locked;
> +	uint16_t bitwidth; /**< bitwidth value */ };
> +
>  /**
>   * internal configuration
>   */
> @@ -85,6 +91,8 @@ struct internal_config {
>  	volatile unsigned int init_complete;
>  	/**< indicates whether EAL has completed initialization */
>  	unsigned int no_telemetry; /**< true to disable Telemetry */
> +	/** max simd bitwidth path to use */
> +	struct simd_bitwidth max_simd_bitwidth;
>  };
>=20
>  void eal_reset_internal_config(struct internal_config *internal_cfg); di=
ff --git
> a/lib/librte_eal/common/eal_options.h
> b/lib/librte_eal/common/eal_options.h
> index 89769d48b4..ef33979664 100644
> --- a/lib/librte_eal/common/eal_options.h
> +++ b/lib/librte_eal/common/eal_options.h
> @@ -85,6 +85,8 @@ enum {
>  	OPT_TELEMETRY_NUM,
>  #define OPT_NO_TELEMETRY      "no-telemetry"
>  	OPT_NO_TELEMETRY_NUM,
> +#define OPT_FORCE_MAX_SIMD_BITWIDTH  "force-max-simd-bitwidth"
> +	OPT_FORCE_MAX_SIMD_BITWIDTH_NUM,
>  	OPT_LONG_MAX_NUM
>  };
>=20
> diff --git a/lib/librte_eal/include/rte_eal.h b/lib/librte_eal/include/rt=
e_eal.h
> index ddcf6a2e7a..8148f650f2 100644
> --- a/lib/librte_eal/include/rte_eal.h
> +++ b/lib/librte_eal/include/rte_eal.h
> @@ -43,6 +43,13 @@ enum rte_proc_type_t {
>  	RTE_PROC_INVALID
>  };
>=20
> +enum rte_max_simd_t {
We could add a RTE_MAX_SIMD =3D 0. Arm platforms can use this to choose SVE=
.

> +	RTE_NO_SIMD =3D 64,
> +	RTE_MAX_128_SIMD =3D 128,
> +	RTE_MAX_256_SIMD =3D 256,
> +	RTE_MAX_512_SIMD =3D 512
> +};
> +
>  /**
>   * Get the process type in a multi-process setup
>   *
> @@ -51,6 +58,31 @@ enum rte_proc_type_t {
>   */
>  enum rte_proc_type_t rte_eal_process_type(void);
>=20
> +/**
> + * Get the supported SIMD bitwidth.
> + *
> + * @return
> + *   uint16_t bitwidth.
> + */
> +__rte_experimental
> +uint16_t rte_get_max_simd_bitwidth(void);
> +
> +/**
> + * Set the supported SIMD bitwidth.
> + * This API should only be called once at initialization, before EAL ini=
t.
> + *
> + * @param bitwidth
> + *   uint16_t bitwidth.
> + * @return
> + *   0 on success.
> + * @return
> + *   -EINVAL on invalid bitwidth parameter.
> + * @return
> + *   -EPERM if bitwidth is locked.
> + */
> +__rte_experimental
> +int rte_set_max_simd_bitwidth(uint16_t bitwidth);
> +
>  /**
>   * Request iopl privilege for all RPL.
>   *
> diff --git a/lib/librte_eal/rte_eal_version.map
> b/lib/librte_eal/rte_eal_version.map
> index bf0c17c233..8059ea76b6 100644
> --- a/lib/librte_eal/rte_eal_version.map
> +++ b/lib/librte_eal/rte_eal_version.map
> @@ -403,6 +403,10 @@ EXPERIMENTAL {
>  	rte_mp_disable;
>  	rte_thread_register;
>  	rte_thread_unregister;
> +
> +	# added in 20.11
> +	rte_get_max_simd_bitwidth;
> +	rte_set_max_simd_bitwidth;
>  };
>=20
>  INTERNAL {
> --
> 2.17.1