From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3E3D6A0532; Wed, 22 Jan 2020 17:51:51 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 266902BBD; Wed, 22 Jan 2020 17:51:50 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id C72882BB9 for ; Wed, 22 Jan 2020 17:51:48 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00MGiPG3014669; Wed, 22 Jan 2020 08:51:47 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=HR4qcrT6Ts7BqtI7owcZHagIKpTKCh46kyci/poxW78=; b=B6MUTEBIziTVjJUL6xsxBRLM83TN4ZHlwGxDzmDLwbVSy2dN0V9mh2RlDMjENKuhI/af RGA3uvRywjgVSFQPL9jcTtezfi0OpdpNFG7akxJUeHtJ1gm1QRW1TYj52lq1H1tSwH6g XDMCd+E+jBNNsvDl4NPydvUvA6NB3jTOUlKrrs++ipPqx8obidY1NNBVDx33dSzQtLn6 Pk3DhSuBoKxZ1Qt0k2pFNU+AcyCgGcYciSI0f2po3M3w+QT8UAa6jO1qsPq6Bo2c81IN 3KdVnsfYu3DLY3lq0IZzgNoQpzth+1+nGZ9JuKCp1e8ALfii/bNULaN8Y2MKtn836svV +A== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 2xpm901h6j-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 22 Jan 2020 08:51:47 -0800 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 22 Jan 2020 08:51:46 -0800 Received: from NAM04-CO1-obe.outbound.protection.outlook.com (104.47.45.54) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 22 Jan 2020 08:51:46 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MAPnATH6gS7n0tkZsK0/HMVec/Oepbn6/RprEsu9ClcVfdyREqDiMzgtd4+qRnDre65jaQBs2uZGQxZFUn/zvn7EiPN7cISqqZVFu8c4Q3tlUNleyTUhbDpq1MQynH9S3/tlR/ShTw0sdbBxAdx8XLxDycEkqqHAe6mSnwFzdioizzebmG3OlXVWGgdNyNbU3py9LKyVF00qqe/G/LvtZRb8CW40QhBf+2Ygzk4cVbwEcswX3BJZcFh/Z0zCRfEFRJRKoj46VVVZR9vFeeHCMGf04uEOML4sdRzS8Kc+x09dn/3Wo6VjlawD5albziKfu9v+zSZqhMs50bFDfCljvw== 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=HR4qcrT6Ts7BqtI7owcZHagIKpTKCh46kyci/poxW78=; b=oFIZZVajz5QyAN01qK8rPz8RZBMW8DAcRuDmTKSbmSWwRxa0FCzMm56TNFqdo+Fd3+uxqGa6bqYXfDVatjg2h2E3LSrf7Ax0cz7fjDjKXYavWWuC14D/BbCiWFYSKGRYypgXvSuhcNd0v9q5qqPZm3LoZmTgSNfFKSv2k9tL2lgoJ/di1+n+6T94KKH0dkTpOoMYZ1Msthd3VfFtBQMw0x5qMTVWtVUok4HTl1Ey1O9LfAOF0ZAHGG+9baH31scx7xDTu1x/uR08wip7yUNgLQQ0HdaQ+L6b755CO1KKlC2m1pJ7bP1fj2L1TevWJfTmD+J5tU1i+6bpGVlBdmYH/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HR4qcrT6Ts7BqtI7owcZHagIKpTKCh46kyci/poxW78=; b=B0id3020LtmwNqJCugsARSi5YvmOoUthYW/4zq0AQmIsFHeiDhMitIkYUODriZ3fGDyhZY7xrJhrX3jB+wBffuaSOz/4OXGL876cEXk0tG58I8dZN/HGvRZcF7BUJ6m5jJeDGjt+3meHHc/WWCaosbTCb6UiRbUVoSu9rSwcBNM= Received: from CY4PR1801MB1863.namprd18.prod.outlook.com (10.171.255.160) by CY4PR1801MB1941.namprd18.prod.outlook.com (10.171.254.159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2644.25; Wed, 22 Jan 2020 16:51:45 +0000 Received: from CY4PR1801MB1863.namprd18.prod.outlook.com ([fe80::edb0:c18d:7455:f60b]) by CY4PR1801MB1863.namprd18.prod.outlook.com ([fe80::edb0:c18d:7455:f60b%4]) with mapi id 15.20.2644.027; Wed, 22 Jan 2020 16:51:44 +0000 From: Pavan Nikhilesh Bhagavatula To: "dev@dpdk.org" , "grive@u256.net" CC: Vamsi Krishna Attunuru , David Marchand , Jerin Jacob Kollanukkaran Thread-Topic: [dpdk-dev] [PATCH v5] eal: add manual probing option Thread-Index: AQHVi0tyw2R+O3x3k0CIohCVjcXlh6f3cToA Date: Wed, 22 Jan 2020 16:51:44 +0000 Message-ID: References: <84075ad163f2eddf752690fc78f1d9bd9f7b0636.1572014017.git.gaetan.rivet@6wind.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [223.226.91.107] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9d79f5ff-bc55-4206-3677-08d79f5b5d26 x-ms-traffictypediagnostic: CY4PR1801MB1941: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:121; x-forefront-prvs: 029097202E x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(376002)(39850400004)(396003)(136003)(189003)(199004)(30864003)(52536014)(5660300002)(66946007)(186003)(76116006)(66476007)(86362001)(64756008)(6506007)(55236004)(71200400001)(66446008)(66556008)(26005)(107886003)(966005)(2906002)(4326008)(81166006)(33656002)(81156014)(316002)(478600001)(7696005)(8676002)(9686003)(8936002)(110136005)(54906003)(55016002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1801MB1941; H:CY4PR1801MB1863.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 16yspwP0W7oZXbdnbzY7WR8GLdxqkFNTdZ1UmyWSActaEXzxZbid0F6xpswqKU7fxVGhuHCup82vessWJ5o+1pas/qH3Ps2vOsFgmX+k9jozvw9/DQJhqh55l8yu7oEDGnDZu6gnMyphIPZCOYre2PpILK36UqcqhsQj0OXaxaAqbDAP99OvUDZuZvK2hDk631CZExFllV43RhzKmODzJtVsQn9M0FPSv5qyxXBTH1HYo5zwHRnWAJwFGlYqBmM5rUbhfnkprbe3QCTfc5xh8E37G9brJ47xErizAK07qUQmhp0zjM2UzVUOXdewC1lYEejTlYhFR+m10UEOVQW/kuvqqDW+ltpH6z922dHqHH2wVLRzVyRRjdTYx5AJ38ulXoyykN9s3o2gifDvohbA8JnaKUbzQXiC8HqttbGP4GIL7RaKJ0c1tOgMWZi8IuNzoZrv423MAgIwYeIIIxtB9DKtTsV931S3tlCdSTBeYBBB85A1tqmoAMwe7+oys+AIksP/QXbgQ3k/8Qefi2Z1pwqCWmb2KJQSEGHVq4fiS4Q= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 9d79f5ff-bc55-4206-3677-08d79f5b5d26 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2020 16:51:44.7491 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /rC52hB4ZtxIz25i/3xqpJyK6/MWpsnK2kAP71jwe9wpMFAiq0wD04xv9H2bye938+PFRJ6UFKl2WAx3GE/9gnVLZvs6X5/K5yeOQEtnmjI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1801MB1941 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-01-17_05:2020-01-16, 2020-01-17 signatures=0 Subject: Re: [dpdk-dev] [PATCH v5] eal: add manual probing option X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Ping @grive@u256.net Since, you weren't reachable on regular email I rebased the patch on ToT an= d sent a v6 http://patches.dpdk.org/patch/64235/ >-----Original Message----- >From: dev On Behalf Of Gaetan Rivet >Sent: Friday, October 25, 2019 9:17 PM >To: dev@dpdk.org >Cc: Gaetan Rivet ; Vamsi Krishna Attunuru >; David Marchand >; Jerin Jacob Kollanukkaran > >Subject: [dpdk-dev] [PATCH v5] eal: add manual probing option > >Add a new EAL option enabling manual probing in the EAL. >This command line option will configure the EAL so that buses >will not trigger their probe step on their own. > >Applications are then expected to hotplug devices as they see fit. > >Devices declared on the command line by the user (using -w and -- >vdev), >will be probed using the hotplug API, in the order they are declared. > >This has the effect of offering a way for users to control probe order >of their devices, for drivers requiring it. > >Signed-off-by: Gaetan Rivet >--- > >I haven't heard many opinions on the matter, please shout if you see an >issue >with this approach. > >@Slava: I have tested rather quickly that it does not break anything, > and that it works as intended for basic cases. > Can you test it further for your use-case and tell me if it works = fine? > >Beyond the obvious difference between both probe mode, something >to keep in mind: >while using -w on invalid devices would not block (PCI) bus probing, it >will stop manual >probing in its track. All devices need to exist and be valid device IDs. > >v2: fixed a few typos, map file (and used Travis to validate). > > Slava, are you able to test this patch? > >v3: properly fixed the map file (inherited 19.08 instead of 19.05). > > Added a function to set the probe manual from the application, > without having the user do it from the command line. > > Stopped spamming Slava about it, Vamsi was actually the one >interested in it! > >Standing issue worth chiming in: > > Currently manual-probe will cut off probing from all buses. > It could be interesting to be able to only cut buses supporting hotplug, > given that they are the one able to probe devices afterward. > > No real use-case for this right now, so leaving as-is. Might be worth > considering in the future. > >v4: Rebased on master, > Moved implementation in common EAL, > Used public API within the EAL to set the option, > Made the API experimental > >v5: added note in the Getting Started Guide. > > doc/guides/linux_gsg/eal_args.include.rst | 13 +++++++ > doc/guides/rel_notes/release_19_11.rst | 9 +++++ > lib/librte_eal/common/eal_common_bus.c | 6 ++++ > lib/librte_eal/common/eal_common_dev.c | 54 >++++++++++++++++++++++++++++++ > lib/librte_eal/common/eal_common_options.c | 8 +++++ > lib/librte_eal/common/eal_internal_cfg.h | 1 + > lib/librte_eal/common/eal_options.h | 2 ++ > lib/librte_eal/common/eal_private.h | 9 +++++ > lib/librte_eal/common/include/rte_eal.h | 36 >++++++++++++++++++++ > lib/librte_eal/rte_eal_version.map | 4 +++ > 10 files changed, 142 insertions(+) > >diff --git a/doc/guides/linux_gsg/eal_args.include.rst >b/doc/guides/linux_gsg/eal_args.include.rst >index ed8b0e35b..d0717d4a0 100644 >--- a/doc/guides/linux_gsg/eal_args.include.rst >+++ b/doc/guides/linux_gsg/eal_args.include.rst >@@ -69,6 +69,19 @@ Device-related options > > --vdev 'net_pcap0,rx_pcap=3Dinput.pcap,tx_pcap=3Doutput.pcap' > >+* ``--manual-probe`` >+ >+ Switch the ``EAL`` probe mode to manual. The main bus probe step >+ is disabled and applications are expected to manually probe >+ devices using ``rte_dev_probe()``. >+ >+ Devices declared on the command-line using ``-w`` and ``-vdev`` >+ are interpreted as hotplug commands. They are thus probed in the >+ order they are declared. >+ >+ This makes this option useful to enforce a specific device probe >+ order, instead of relying on each bus scan implementation details. >+ > * ``-d `` > > Load external drivers. An argument can be a single shared object file= , >or a >diff --git a/doc/guides/rel_notes/release_19_11.rst >b/doc/guides/rel_notes/release_19_11.rst >index e77d226b5..7251a17b2 100644 >--- a/doc/guides/rel_notes/release_19_11.rst >+++ b/doc/guides/rel_notes/release_19_11.rst >@@ -56,6 +56,15 @@ New Features > Also, make sure to start the actual text at the margin. > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D >=3D=3D=3D > >+* **EAL will now allow probing devices manually.** >+ >+ Previously, a user could not force an order when probing declared >devices. >+ This could cause issues for drivers depending on another device being >present. >+ A new option ``--manual-probe`` is now available to do just that. >+ This new option relies on the device bus supporting hotplug. It can >+ also be used to disable automatic probing from the ``PCI`` bus without >+ having to disable the whole bus. >+ > * **FreeBSD now supports `--base-virtaddr` EAL option.** > > FreeBSD version now also supports setting base virtual address for >mapping >diff --git a/lib/librte_eal/common/eal_common_bus.c >b/lib/librte_eal/common/eal_common_bus.c >index baa5b532a..145a96812 100644 >--- a/lib/librte_eal/common/eal_common_bus.c >+++ b/lib/librte_eal/common/eal_common_bus.c >@@ -6,6 +6,7 @@ > #include > #include > >+#include > #include > #include > #include >@@ -63,6 +64,11 @@ rte_bus_probe(void) > int ret; > struct rte_bus *bus, *vbus =3D NULL; > >+ if (rte_eal_manual_probe()) { >+ RTE_LOG(DEBUG, EAL, "Manual probing enabled.\n"); >+ return rte_dev_probe_devargs_list(); >+ } >+ > TAILQ_FOREACH(bus, &rte_bus_list, next) { > if (!strcmp(bus->name, "vdev")) { > vbus =3D bus; >diff --git a/lib/librte_eal/common/eal_common_dev.c >b/lib/librte_eal/common/eal_common_dev.c >index 9e4f09d83..368afa273 100644 >--- a/lib/librte_eal/common/eal_common_dev.c >+++ b/lib/librte_eal/common/eal_common_dev.c >@@ -21,6 +21,7 @@ > #include > #include > >+#include "eal_internal_cfg.h" > #include "eal_private.h" > #include "hotplug_mp.h" > >@@ -83,6 +84,59 @@ rte_dev_is_probed(const struct rte_device *dev) > return dev->driver !=3D NULL; > } > >+int >+rte_eal_manual_probe(void) >+{ >+ return internal_config.manual_probe; >+} >+ >+void >+rte_eal_manual_probe_set(int enabled) >+{ >+ internal_config.manual_probe =3D !!enabled; >+} >+ >+int >+rte_dev_probe_devargs_list(void) >+{ >+ struct rte_device *dev; >+ struct rte_devargs *da; >+ int ret; >+ >+ RTE_EAL_DEVARGS_FOREACH(NULL, da) { >+ dev =3D da->bus->find_device(NULL, cmp_dev_name, >da->name); >+ if (dev =3D=3D NULL) { >+ RTE_LOG(ERR, EAL, "Unable to find device %s >on bus %s\n", >+ da->name, da->bus->name); >+ continue; >+ } >+ >+ if (rte_dev_is_probed(dev)) >+ continue; >+ >+ if (dev->bus->plug =3D=3D NULL) { >+ RTE_LOG(ERR, EAL, "Manual probing (hotplug) >not supported by bus %s, " >+ "required by device %s\n", >+ dev->bus->name, dev->name); >+ continue; >+ } >+ >+ ret =3D dev->bus->plug(dev); >+ /* Ignore positive return values, they are possibly >+ * triggered by blacklisted devices on the PCI bus. >Probing >+ * should then continue. >+ */ >+ if (ret < 0) { >+ RTE_LOG(ERR, EAL, "Driver cannot attach device >%s\n", >+ dev->name); >+ /* Fail on first real probe error. */ >+ return ret; >+ } >+ } >+ >+ return 0; >+} >+ > /* helper function to build devargs, caller should free the memory */ > static int > build_devargs(const char *busname, const char *devname, >diff --git a/lib/librte_eal/common/eal_common_options.c >b/lib/librte_eal/common/eal_common_options.c >index a7f9c5f9b..de73970fe 100644 >--- a/lib/librte_eal/common/eal_common_options.c >+++ b/lib/librte_eal/common/eal_common_options.c >@@ -82,6 +82,7 @@ eal_long_options[] =3D { > {OPT_LEGACY_MEM, 0, NULL, OPT_LEGACY_MEM_NUM >}, > {OPT_SINGLE_FILE_SEGMENTS, 0, NULL, >OPT_SINGLE_FILE_SEGMENTS_NUM}, > {OPT_MATCH_ALLOCATIONS, 0, NULL, >OPT_MATCH_ALLOCATIONS_NUM}, >+ {OPT_MANUAL_PROBE, 0, NULL, >OPT_MANUAL_PROBE_NUM }, > {0, 0, NULL, 0 } > }; > >@@ -1446,6 +1447,9 @@ eal_parse_common_option(int opt, const >char *optarg, > return -1; > } > break; >+ case OPT_MANUAL_PROBE_NUM: >+ rte_eal_manual_probe_set(1); >+ break; > > /* don't know what to do, leave this to caller */ > default: >@@ -1672,6 +1676,10 @@ eal_common_usage(void) > " --"OPT_VDEV" Add a virtual device.\n" > " The argument format is >[,key=3Dval,...]\n" > " (ex: --vdev=3Dnet_pcap0,iface=3Deth2).\n" >+ " --"OPT_MANUAL_PROBE" Enable manual probing.\n" >+ " Disable probe step for all buses.\n" >+ " Devices will need to be probed using the h= otplug >API.\n" >+ " PCI and vdev declarations will be treated = in >order as hotplug commands.\n" > " --"OPT_IOVA_MODE" Set IOVA mode. 'pa' for >IOVA_PA\n" > " 'va' for IOVA_VA\n" > " -d LIB.so|DIR Add a driver or driver directory\n" >diff --git a/lib/librte_eal/common/eal_internal_cfg.h >b/lib/librte_eal/common/eal_internal_cfg.h >index a42f34923..0006f903f 100644 >--- a/lib/librte_eal/common/eal_internal_cfg.h >+++ b/lib/librte_eal/common/eal_internal_cfg.h >@@ -44,6 +44,7 @@ struct internal_config { > unsigned hugepage_unlink; /**< true to unlink backing files >*/ > volatile unsigned no_pci; /**< true to disable PCI */ > volatile unsigned no_hpet; /**< true to disable HPET */ >+ volatile unsigned manual_probe; /**< true to enable manual >device probing. */ > volatile unsigned vmware_tsc_map; /**< true to use VMware >TSC mapping > > * instead of native TSC */ > volatile unsigned no_shconf; /**< true if there is no shared >config */ >diff --git a/lib/librte_eal/common/eal_options.h >b/lib/librte_eal/common/eal_options.h >index 9855429e5..588fa32a6 100644 >--- a/lib/librte_eal/common/eal_options.h >+++ b/lib/librte_eal/common/eal_options.h >@@ -69,6 +69,8 @@ enum { > OPT_IOVA_MODE_NUM, > #define OPT_MATCH_ALLOCATIONS "match-allocations" > OPT_MATCH_ALLOCATIONS_NUM, >+#define OPT_MANUAL_PROBE "manual-probe" >+ OPT_MANUAL_PROBE_NUM, > OPT_LONG_MAX_NUM > }; > >diff --git a/lib/librte_eal/common/eal_private.h >b/lib/librte_eal/common/eal_private.h >index 798ede553..fd7ac8e37 100644 >--- a/lib/librte_eal/common/eal_private.h >+++ b/lib/librte_eal/common/eal_private.h >@@ -381,4 +381,13 @@ rte_option_init(void); > void > rte_option_usage(void); > >+/** >+ * Go through the devargs list and probe everything in order. >+ * >+ * @return >+ * 0 on success, negative on error. >+ */ >+int >+rte_dev_probe_devargs_list(void); >+ > #endif /* _EAL_PRIVATE_H_ */ >diff --git a/lib/librte_eal/common/include/rte_eal.h >b/lib/librte_eal/common/include/rte_eal.h >index b7cf91214..71d9b4ca6 100644 >--- a/lib/librte_eal/common/include/rte_eal.h >+++ b/lib/librte_eal/common/include/rte_eal.h >@@ -465,6 +465,42 @@ int rte_eal_has_hugepages(void); > int rte_eal_has_pci(void); > > /** >+ * Whether EAL probe is manual. >+ * Enabled by the --manual-probe option or by >+ * using rte_eal_manual_probe_set(). >+ * >+ * When manual probing is enabled, batched bus probe of >+ * their devices is disabled. All devices need to be probed >+ * using the proper rte_dev API. >+ * >+ * In this mode, devices declared on the command line will >+ * be probed using the bus hotplug API. It is used to enforce >+ * a specific probe order. >+ * >+ * @return >+ * Nonzero if manual device probing is enabled. >+ * >+ * @see rte_eal_manual_probe_set >+ */ >+__rte_experimental >+int rte_eal_manual_probe(void); >+ >+/** >+ * Configure EAL probe mode -- manual or automatic. >+ * >+ * Enable or disable manual probe mode in EAL. >+ * This function can be called at any time, but must be used >+ * before calling rte_eal_init() to have any effect. >+ * >+ * @param enabled >+ * zero to disable manual probe, non-zero to enable it. >+ * >+ * @see rte_eal_manual_probe >+ */ >+__rte_experimental >+void rte_eal_manual_probe_set(int enabled); >+ >+/** > * Whether the EAL was asked to create UIO device. > * > * @return >diff --git a/lib/librte_eal/rte_eal_version.map >b/lib/librte_eal/rte_eal_version.map >index 7cbf82d37..7d7ff6531 100644 >--- a/lib/librte_eal/rte_eal_version.map >+++ b/lib/librte_eal/rte_eal_version.map >@@ -419,4 +419,8 @@ EXPERIMENTAL { > rte_mcfg_timer_lock; > rte_mcfg_timer_unlock; > rte_rand_max; >+ >+ # added in 19.11 >+ rte_eal_manual_probe; >+ rte_eal_manual_probe_set; > }; >-- >2.11.0