From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B4030A0548; Wed, 23 Jun 2021 01:50:43 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 699FA4003F; Wed, 23 Jun 2021 01:50:43 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam07on2081.outbound.protection.outlook.com [40.107.95.81]) by mails.dpdk.org (Postfix) with ESMTP id CEDA24003E for ; Wed, 23 Jun 2021 01:50:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Heo6Y0VeMssKSDUZleqTkWqU8lxy2Y0XdCwuajoMzAMlYIChjVrqNnM1ikeTSCYoql3YRgml+7kMFZnfYqxiQKgRHbkomcXALrilOjNbAqAUDpDyFWPoihCLDipaepip7eD5uFXkDXRgVdorWH+i73mcsG9jr/08dd+5aVbOwUul0eGCW9NUtYkcKC+ct68gwc9WRZKgo2dxSqm8NsBrvAua5kllg2YyTPpvrYEjXLdFoHGwJt1U2g0Xkq3qFNKjQkQS9xw1FmWsG6jaoPBdqAgOBTsr1sZzR3xCapqbz68670Bp3gmnXKeEOsy1KdhdOmTVPH8RFCWhAZIt/PTLqA== 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=AZtsfpAgnj884vSGf/RZ0NlGro8ay72jCLM2QhWAOz4=; b=UuBFpx2j8wqJ2LYjnTBgNGmWqgciZFuQNng2kAjaRvHpUgwD0d8OLmqe3JS4LCxuBpsXshXJcYvlL7J0cDRSpVNWEpR67r1m/yIEQozTkbvPEz/L9VWh6IC1N08LVrFcmxWQTocRFjb7an++4yOJPbcsoSTHAEXtZBToOxHcY6LLd3rKe/wTZL7NDntUHAQJPILA9VDFhM/pZRIBzolkxVMEAWzWyVZB01qC4bpeivDhwItCYlkvlnZjCARE/OzlK0mmahSvkK6yD5TY5TswbMO0Npn9HDu56qtmoR0IfsWfmwXR43a0pa0buf8u35z6YZSAhH07IVMbV8cgZl6Y6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AZtsfpAgnj884vSGf/RZ0NlGro8ay72jCLM2QhWAOz4=; b=FcLyhjvNGRteqXI8oWt3LjfpnSvVnJyZWRV7emBUSTQDXXDZrMOyVYFCAtuWKVaWN+7bvJjnTN+G0g1TQCcS1iHRoQUVJe0XuMimT7SKhvPF9oMZDTLBNTmlZNAvh55cPsZCES618RrW4zu7ucCs0NNYVoYMoG2ZwPsJ6ynshbnjxwwDngwhgrpGLd8m33W9Ey6YfuJSzdG/sB8iu5KzyALshMRrEdp7Su1sFKPCiGwtW9o45YVGzDzKxD5NOVu1j57DK5z9hnlRL7jy0NZapaS730rR//2oIu3rbt/rFEGRXLjT3A2/7VJ34fwCzDUfqZXBa0e3r5ol70B5Js/A+Q== Received: from DM4PR12MB5373.namprd12.prod.outlook.com (2603:10b6:5:39a::17) by DM4PR12MB5389.namprd12.prod.outlook.com (2603:10b6:5:39a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.23; Tue, 22 Jun 2021 23:50:40 +0000 Received: from DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::ac75:9b9a:a03f:1676]) by DM4PR12MB5373.namprd12.prod.outlook.com ([fe80::ac75:9b9a:a03f:1676%3]) with mapi id 15.20.4242.023; Tue, 22 Jun 2021 23:50:40 +0000 From: "Xueming(Steven) Li" To: NBU-Contact-Thomas Monjalon , Parav Pandit CC: "dev@dpdk.org" , Wang Haiyue , Kinsella Ray , "david.marchand@redhat.com" , "ferruh.yigit@intel.com" Thread-Topic: [dpdk-dev] [PATCH v4 2/2] bus/auxiliary: introduce auxiliary bus Thread-Index: AQHXYFPoPDXyKh+1HU2NeXbKFwGSdKser4eAgAFaAXA= Date: Tue, 22 Jun 2021 23:50:39 +0000 Message-ID: References: <20210510134732.2174-1-xuemingl@nvidia.com> <20210613125846.19852-2-xuemingl@nvidia.com> <2722998.9jiA4btz4K@thomas> In-Reply-To: <2722998.9jiA4btz4K@thomas> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: monjalon.net; dkim=none (message not signed) header.d=none;monjalon.net; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [115.236.163.138] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 17b6403e-0101-4b6b-2e71-08d935d88a95 x-ms-traffictypediagnostic: DM4PR12MB5389: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XqHSQvqIqk+mNkMg0tXun47odIqREkzy0vprcj+mahqAO+wtGXMG/pkd3NR8K0OzJQaHCk9l/YcILzxUK4uuFuIIAdH3uXnlQMZg5LAvzSPwOkxwglIVjzEwj1+ZecI3YAMdVHdubUYdVpTWSleBM7WdiU3iTPnfka21/Km+eoziqVZQXLUuFithaWr8R+mcHsSC+2w9e3kEdVUCpTPq7e9NEu5aCmQ7tUe/9QKi3ebkw2q06MYsepiuKOz/AI3Fw4Agr6HKzNNELvPC/V4nwV8NF4cQl5IR57s4Si8cUbhZxjnD56C/aatLGBc55mvAezDfzAx4aCggHFjNra27Jwfy7BNxGycnLZk6GG50n+yZP+iT0+wBtXF6jBa+IyacWiqW6RJaFRqy6883QMmrPoc0a9lvOg+dyg/ao6CA8meTYHnenZT5EQ91pUxFQOv8XMGY5KEF6wDt5BCPeJmUrim00L5nSm3eXmnTjxF0ksBK0wIEjAOi/I0uBU0FQCnhePIDoFC808RURPj2kFTXTw0OkEQQ2RhuqWSwSC2j5ZehOdznmh2eP3p9qixVOBQvIHRRe6n8S1SXv/jH5j9Xo2t7oUB4cvZcwmtkoDe92vU6pQkZZZzhgecO/xT9BTv97NofQWdFr/BEw0hJSjxasj7lYK5Q+Q67S+Y0XLQpIDWA5/F1pCU5BXrXUXdXqh6HmHjRQtSsbTVSn26mL5dCkPPpRpAbWLb3t29215fm1lA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR12MB5373.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(376002)(366004)(346002)(39860400002)(136003)(6636002)(8676002)(8936002)(316002)(83380400001)(122000001)(9686003)(53546011)(186003)(55016002)(33656002)(2906002)(26005)(966005)(38100700002)(478600001)(4326008)(54906003)(6506007)(86362001)(66446008)(64756008)(66556008)(7696005)(71200400001)(110136005)(66476007)(5660300002)(66946007)(76116006)(52536014)(30864003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Xls1FlZiGF1SPlE6NUPRI8Vtbt6ezTyUn2putnBmgKuGEQj4s1CrLm9uiOER?= =?us-ascii?Q?Xhq1n5CDkeiuKgOjklBf4woohsLW8LRuuo6EICabofbGzYyjsx8r/dSKncG6?= =?us-ascii?Q?cTK5OtSSm1BarOM52RVAlRYTC0PUlg6UudOTtNDCJTlu0uedR7s5fxFy/BaY?= =?us-ascii?Q?khVKsE12CSfFxSxlsDFe8a4HGyiOAilvGdQiJ4ei/X7/GXPbyMxpuUysg5Ja?= =?us-ascii?Q?gMtyOeDX5EWk9J+g/wvTj5Jn8/9jNFgAnfOByMKlAH7HjZ1kKI+l6VjYTG2i?= =?us-ascii?Q?ASWUQBtqK8gwZVdeAqmilsiI/Cl/QybIKGjYxhgnCFT8VM8p4O+PD51Zx7mq?= =?us-ascii?Q?Q+cekgg+cA0oJeMjI/SNHGq6dL76nnLmBy6bm4zsWbx91xPS9J/y4qlpK0cS?= =?us-ascii?Q?IKUkNSWODAJ757I1ahurXV2HvACYzPOaaKjKolsEk0GSrvZz7ilh6fNSHtRH?= =?us-ascii?Q?dRJyCqm8k4VfVHm2nOJUSyS8mMO5iY3cNFRO+coR1Ewv4KxaElMSa2TvH28A?= =?us-ascii?Q?266UJCokL0mc2U1Vk6iWmJPnWgwYODhZYBq9VXkEVThuUj0TIOfbLT9y94pT?= =?us-ascii?Q?atTnfxIx1LRdcYia35lJHgeVnLCHxnw+gtSrM42OmO+unFGIYhXBZi/sVHXU?= =?us-ascii?Q?lPKbvDPSgb1VJwPwTytOVV5IinIyz/IU7RFuZlV3rMKvp+nhdlmsW8H+nfV3?= =?us-ascii?Q?OXLN3smBEKvlRoxWqbhV8CqJW70GhbFqSXPM+si//H3N0oAmvUfxjYN0Xv1J?= =?us-ascii?Q?RouG9JAWYEQsARs/3qHEEVLy9QtHCoVPSHWms+OHm0CtXCTSOoOE+bPnhasE?= =?us-ascii?Q?Xn1HCH0FGIV9+YuxirpkvagVpH3Bs6RElcx2CwqvjeEmoIjpxnSvcPngk+k4?= =?us-ascii?Q?WH2hY6mV8LsKCdCpASX5NQAclnhi5YQxdbLWv62fdpnbDZba8xGMK2snYh3k?= =?us-ascii?Q?bHSakzJGI0Ylusteff1l8hTP1rTvAWV7OlkNXqICPzBIAtLVwfV7UmljeZc8?= =?us-ascii?Q?VwIt1nCHLPK+EWubjVF67+2wveP5xhdo9EYXpLNoSfM9RtuTtiH2SsBfTtL/?= =?us-ascii?Q?fzRwx2UPzO0WOTwVofsu5s/vD0AP3ijEzxOBU+2vc3eOqjoxK8zUU4guB9x9?= =?us-ascii?Q?1YU3UvZANb4GF3HBxaY+sPkR74ot9YAhE+uTOe/dNmlXJc2asNy/zFo1uoqh?= =?us-ascii?Q?upYRrM6IuMn6dLYQEWqzVt2lcQTsyBCxcJ3NyeNX9TpRwpJF8lX+U51huBI1?= =?us-ascii?Q?up3//OAqSiotaM0M8KP7Po6I83FUUvgDyKjYrc2NtTLWNSqGOVCGU7uB+SwP?= =?us-ascii?Q?UzAjjPGg9GhPGoXhlSCjQjFK?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5373.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17b6403e-0101-4b6b-2e71-08d935d88a95 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jun 2021 23:50:40.2811 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Ysg4p0DWqlI+Ze3fR5hokUCSE1fxElJSdcByxO8MCPdtFvdP5oMpLkA17cknpEoSsZ01xWW96/+8MZzyvq23Qg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5389 Subject: Re: [dpdk-dev] [PATCH v4 2/2] bus/auxiliary: introduce auxiliary bus X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" > -----Original Message----- > From: Thomas Monjalon > Sent: Tuesday, June 22, 2021 12:11 AM > To: Parav Pandit ; Xueming(Steven) Li > Cc: dev@dpdk.org; Wang Haiyue ; Kinsella Ray ; david.marchand@redhat.com; > ferruh.yigit@intel.com > Subject: Re: [dpdk-dev] [PATCH v4 2/2] bus/auxiliary: introduce auxiliary= bus >=20 > 13/06/2021 14:58, Xueming Li: > > Auxiliary bus [1] provides a way to split function into child-devices > > representing sub-domains of functionality. Each auxiliary device > > represents a part of its parent functionality. > > > > Auxiliary device is identified by unique device name, sysfs path: > > /sys/bus/auxiliary/devices/ > > > > Devargs syntax of auxiliary device: > > -a auxiliary:[,args...] >=20 > What about suggesting the new generic syntax? I'll list both. >=20 > > [1] kernel auxiliary bus document: > > https://www.kernel.org/doc/html/latest/driver-api/auxiliary_bus.html > > > > Signed-off-by: Xueming Li > [...] > > --- a/doc/guides/rel_notes/release_21_08.rst > > +++ b/doc/guides/rel_notes/release_21_08.rst > > @@ -55,6 +55,13 @@ 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 > > > > +* **Added auxiliary bus support.** > > + > > + * Auxiliary bus provides a way to split function into child-devices > > + representing sub-domains of functionality. Each auxiliary device > > + represents a part of its parent functionality. > > + * Devargs syntax of auxiliary device: -a auxiliary:[,args...] >=20 > I am not sure the release notes are the right place to provide a guide of= the syntax, and this syntax is not the new generice one with > "bus=3D" that we want to promote. > I would just remove this last line from the release notes >=20 > > --- /dev/null > > +++ b/drivers/bus/auxiliary/auxiliary_common.c > > @@ -0,0 +1,419 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright 2021 Mellanox Technologies, Ltd >=20 > I think we should use the NVIDIA copyright now. Good catch! >=20 > > +static struct rte_devargs * > > +auxiliary_devargs_lookup(const char *name) { > > + struct rte_devargs *devargs; > > + > > + RTE_EAL_DEVARGS_FOREACH(RTE_BUS_AXILIARY_NAME, devargs) { >=20 > Missing an "U" in RTE_BUS_AXILIARY_NAME >=20 > [...] > > +/* > > + * Scan the content of the auxiliary bus, and the devices in the > > +devices > > + * list >=20 > Simpler: Scan the devices in the auxiliary bus. >=20 > [...] > > +/** > > + * Update a device being scanned. >=20 > Not clear what is updated. > It seems to be just the devargs part? >=20 > > + * > > + * @param aux_dev > > + * AUXILIARY device. > > + */ >=20 > Should not be a doxygen comment. >=20 > > +void > > +auxiliary_on_scan(struct rte_auxiliary_device *aux_dev) { > > + aux_dev->device.devargs =3D auxiliary_devargs_lookup(aux_dev->name); > > +} >=20 > [...] > > +static int > > +rte_auxiliary_probe_one_driver(struct rte_auxiliary_driver *dr, > > + struct rte_auxiliary_device *dev) { > > + enum rte_iova_mode iova_mode; > > + int ret; > > + > > + if ((dr =3D=3D NULL) || (dev =3D=3D NULL)) > > + return -EINVAL; > > + > > + /* The device is not blocked; Check if driver supports it. */ >=20 > I don't understand why the comment about "not blocked" here. > The policy check is below. >=20 > > + if (!auxiliary_match(dr, dev)) > > + /* Match of device and driver failed */ > > + return 1; > > + > > + AUXILIARY_LOG(DEBUG, "Auxiliary device %s on NUMA socket %i\n", > > + dev->name, dev->device.numa_node); > > + > > + /* No initialization when marked as blocked, return without error. */ > > + if (dev->device.devargs !=3D NULL && > > + dev->device.devargs->policy =3D=3D RTE_DEV_BLOCKED) { > > + AUXILIARY_LOG(INFO, " Device is blocked, not initializing\n"); >=20 > Please no indent inside logs. > And no \n as it is already in the macro. >=20 > > + return -1; > > + } >=20 > [...] > > +static int > > +rte_auxiliary_driver_remove_dev(struct rte_auxiliary_device *dev) { > > + struct rte_auxiliary_driver *dr; >=20 > Not sure this variable is needed. > If you keep it, please "drv" is better. >=20 > > + int ret =3D 0; > > + > > + if (dev =3D=3D NULL) > > + return -EINVAL; > > + > > + dr =3D dev->driver; > > + > > + AUXILIARY_LOG(DEBUG, "Auxiliary device %s on NUMA socket %i\n", > > + dev->name, dev->device.numa_node); > > + > > + AUXILIARY_LOG(DEBUG, " remove driver: %s %s\n", > > + dev->name, dr->driver.name); > > + > > + if (dr->remove) { > > + ret =3D dr->remove(dev); > > + if (ret < 0) > > + return ret; > > + } >=20 > [...] > > +/* > > + * Scan the content of the auxiliary bus, and call the probe() > > +function for > > + * > > + * all registered drivers that have a matching entry in its id_table > > + * for discovered devices. >=20 > Please elaborate what is the id_table. Hmm, legacy code form pci bus, remove it. >=20 > [...] > > +static int > > +auxiliary_dma_map(struct rte_device *dev, void *addr, uint64_t iova, > > +size_t len) { > > + struct rte_auxiliary_device *aux_dev =3D RTE_DEV_TO_AUXILIARY(dev); > > + > > + if (dev =3D=3D NULL || !aux_dev->driver) { >=20 > For all pointers, please compare with NULL, they are not booleans. >=20 > > + rte_errno =3D EINVAL; > > + return -1; > > + } > > + if (aux_dev->driver->dma_map) > > + return aux_dev->driver->dma_map(aux_dev, addr, iova, len); > > + rte_errno =3D ENOTSUP; > > + return -1; >=20 > I would prever the reverse logic: error first and callback return at last= . >=20 > [...] > Some code is not reviewed here to not make this mail too long. > [...] >=20 > > --- /dev/null > > +++ b/drivers/bus/auxiliary/meson.build > > @@ -0,0 +1,11 @@ > > +# SPDX-License-Identifier: BSD-3-Clause # Copyright 2021 Mellanox > > +Technologies, Ltd > > + > > +headers =3D files('rte_bus_auxiliary.h') sources =3D > > +files('auxiliary_common.c', > > + 'auxiliary_params.c') >=20 > I think it should with a comma and the parenthesis on next line. > Please check style of other meson files which were re-styled recently. >=20 > > +if is_linux > > + sources +=3D files('linux/auxiliary.c') endif deps +=3D ['kvargs'] > > + >=20 > Empty line at EOF >=20 > > --- /dev/null > > +++ b/drivers/bus/auxiliary/private.h > > @@ -0,0 +1,112 @@ > > +/* SPDX-License-Identifier: BSD-3-Clause > > + * Copyright 2021 Mellanox Technologies, Ltd */ > > + > > +#ifndef _AUXILIARY_PRIVATE_H_ > > +#define _AUXILIARY_PRIVATE_H_ > > + > > +#include > > +#include >=20 > An empty line is missing here. >=20 > > +#include "rte_bus_auxiliary.h" > > + > > +extern struct rte_auxiliary_bus auxiliary_bus; extern int > > +auxiliary_bus_logtype; > > + > > +#define AUXILIARY_LOG(level, fmt, args...) \ > > + rte_log(RTE_LOG_ ## level, auxiliary_bus_logtype, "%s(): " fmt "\n", = \ > > + __func__, ##args) >=20 > I suggest this better (pedantic-compliant) format: > #define AUXILIARY_LOG(level, ...) \ > rte_log(RTE_LOG_ ## level, auxiliary_bus_logtype, RTE_FMT("auxiliary = bus: " \ > RTE_FMT_HEAD(__VA_ARGS__,) "\n", RTE_FMT_TAIL(__VA_ARGS__,))) >=20 > I think the __func__ should not be needed if log is well written. Thanks! >=20 > > + > > +/* Auxiliary bus iterators */ > > +#define FOREACH_DEVICE_ON_AUXILIARYBUS(p) \ > > + TAILQ_FOREACH(p, &(auxiliary_bus.device_list), next) > > + > > +#define FOREACH_DRIVER_ON_AUXILIARYBUS(p) \ > > + TAILQ_FOREACH(p, &(auxiliary_bus.driver_list), next) >=20 > An underscore is missing between AUXILIARY and BUS. >=20 > > + > > +bool auxiliary_dev_exists(const char *name); > > + > > +/** > > + * Scan the content of the auxiliary bus, and the devices in the > > +devices > > + * list > > + * > > + * @return > > + * 0 on success, negative on error > > + */ >=20 > You can make the comments shorter as it is private (no doxygen). >=20 > > +int auxiliary_scan(void); >=20 > [...] > > + * @return void >=20 > Especially this comment is useless :) >=20 > [...] > > --- /dev/null > > +++ b/drivers/bus/auxiliary/rte_bus_auxiliary.h > [...] > > +typedef bool(rte_auxiliary_match_t) (const char *name); >=20 > I think checkpatch will complain about the space between parens. >=20 > [...] > > +struct rte_auxiliary_device { > > + TAILQ_ENTRY(rte_auxiliary_device) next; /**< Next probed device. */ > > + char name[RTE_DEV_NAME_MAX_LEN + 1]; /**< ASCII device name */ > > + struct rte_device device; /**< Inherit core device */ >=20 > core device should be before the name. >=20 > > + struct rte_intr_handle intr_handle; /**< Interrupt handle */ > > + struct rte_auxiliary_driver *driver; /**< driver used in probing= */ >=20 > Why in probing? > I suggest "Device driver" A SF device could be probed by a class driver t then another class driver, = the driver field will be overridden by later probe. Will change to "last device driver" >=20 > > +}; > > + > > +/** List of auxiliary devices */ > > +TAILQ_HEAD(rte_auxiliary_device_list, rte_auxiliary_device); > > +/** List of auxiliary drivers */ > > +TAILQ_HEAD(rte_auxiliary_driver_list, rte_auxiliary_driver); > > + > > +/** > > + * Structure describing the auxiliary bus */ struct > > +rte_auxiliary_bus { > > + struct rte_bus bus; /**< Inherit the generic class *= / > > + struct rte_auxiliary_device_list device_list; /**< List of devices *= / > > + struct rte_auxiliary_driver_list driver_list; /**< List of drivers > > +*/ }; > > + > > +/** > > + * A structure describing an auxiliary driver. > > + */ > > +struct rte_auxiliary_driver { > > + TAILQ_ENTRY(rte_auxiliary_driver) next; /**< Next in list. */ > > + struct rte_driver driver; /**< Inherit core driver. */ > > + struct rte_auxiliary_bus *bus; /**< Auxiliary bus reference. */ > > + rte_auxiliary_match_t *match; /**< Device match function. */ > > + rte_auxiliary_probe_t *probe; /**< Device Probe function. */ > > + rte_auxiliary_remove_t *remove; /**< Device Remove function. */ > > + rte_auxiliary_dma_map_t *dma_map; /**< Device dma map function. *= / > > + rte_auxiliary_dma_unmap_t *dma_unmap; /**< Device dma unmap function.= */ > > + uint32_t drv_flags; /**< Flags RTE_auxiliary_DRV_*. = */ >=20 > Wrong search/replace missing capital letters. >=20 > [...] > > --- /dev/null > > +++ b/drivers/bus/auxiliary/version.map > > @@ -0,0 +1,7 @@ > > +EXPERIMENTAL { > > + global: > > + > > + # added in 21.08 > > + rte_auxiliary_register; > > + rte_auxiliary_unregister; > > +}; >=20 > After more thoughts, shouldn't it be an internal symbol? > It is used only by DPDK drivers. >=20 So users will not be able to compose their own driver and register with aux= iliary bus?z Agree with all other great comments, thanks!