Message ID | 20220628144643.1213026-1-david.marchand@redhat.com (mailing list archive) |
---|---|
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]) by inbox.dpdk.org (Postfix) with ESMTP id 59820A056B; Tue, 28 Jun 2022 16:46:54 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0D024400D7; Tue, 28 Jun 2022 16:46:54 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 0ABA840042 for <dev@dpdk.org>; Tue, 28 Jun 2022 16:46:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1656427612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pga1LF60LcJExiMMgf8WtLg6/yKDJ2fT7zY6BKiqVxI=; b=ABr/GCVaq6UFzcX1yAQGskz4ruFo/EdKbATeAwNZbhHFl28JMsiKxKlILQzoSw5+92jN2F BgDjPmnVR4fMi155WahSq42rXEmYvOSPa+7twXayGZPsUnI9u85SLSQff94GZESkg77EcS 92NM3cAYAWRgEyIjDtHNhBmPs+PoAjg= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-407-vstAlrRfOSeD1Gia9Rsviw-1; Tue, 28 Jun 2022 10:46:51 -0400 X-MC-Unique: vstAlrRfOSeD1Gia9Rsviw-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D5CD7811E7A; Tue, 28 Jun 2022 14:46:50 +0000 (UTC) Received: from fchome.redhat.com (unknown [10.40.194.174]) by smtp.corp.redhat.com (Postfix) with ESMTP id CC62E2166B26; Tue, 28 Jun 2022 14:46:49 +0000 (UTC) From: David Marchand <david.marchand@redhat.com> To: dev@dpdk.org Cc: thomas@monjalon.net, bruce.richardson@intel.com, kevin.laatz@intel.com Subject: [RFC PATCH 00/11] Bus cleanup for 22.11 Date: Tue, 28 Jun 2022 16:46:32 +0200 Message-Id: <20220628144643.1213026-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true 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>, <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 |
Series |
Bus cleanup for 22.11
|
|
Message
David Marchand
June 28, 2022, 2:46 p.m. UTC
This is a PoC for hiding the rte_bus object and mark associated API as internal. A good amount of the patches are preparation work on rte_bus.h, rte_dev.h, rte_devargs.h and rte_eal.h headers, removing dependencies between them. This is something I had in store for some time, maybe I should have dropped it from the PoC, but I think those cleanups are worth it in any case. The last two patches do the actual job: add accessors and make the rte_bus object opaque to non internal users. Disclaimer: this series is a bit rushed (I brute forced compilation tests in GHA so that it passes between patches, but there still may be something broken...). Not surprisingly, the ABI check in the CI is expected to fail. Comments welcome. I also hope we can do the same work on other generic objects (rte_driver, rte_device), but this is another story.
Comments
The rte_bus, rte_driver and rte_device objects are part of the public ABI and this has proved to be a problem when needing to extend them. This series hides them, and mark associated driver only API as internal. A good amount of the patches are preparation work on rte_bus.h, rte_dev.h, rte_devargs.h and rte_eal.h headers, removing dependencies between them. PCI bus specific handling are removed from testpmd, unit tests and examples. After this series, driver-only API headers for registering to buses are not exported anymore, unless the enable_driver_sdk meson option is selected. New accessors for rte_bus, rte_driver and rte_device have been added, marked with an experimental tag first when introducing them, and later in the series marked as stable since external users will want to use those drop-in replacements right away. A check is added to ensure we won't pollute app/ and examples/ again, though some unit tests are left intentionnally untouched as they test some internals of DPDK. Changes since v4: - (hopefully, because I can't test) fixed Windows build, - dropped unneeded change in vdev unit test, Changes since RFC v3: - marked the series as non-RFC, - rebased on v22.11-rc0, - marked RTE_FUNC_PTR_* macros as deprecated, - split the bus specific patch in two patches, Changes since RFC v2: - added check for additions of include .*_(driver|pmd)\.h in apps and examples, - dropped legacy/debug testpmd commands to read PCI BAR0 registers, - dropped patches on bbdev, ethdev, rawdev driver headers for now, - reordered patches and separated changes per bus type to ease review, - added more accessor for device, - introduced rte_dev_bus_info to provide a Bus specific description of a device, a first use is for providing a PCI device vendor / device identifiers that are otherwise unavailable through a generic existing API, Changes since RFC v1: - added two more cleanups (new patch 3 and 4) for unit test and examples relying on PCI specific info, - went on with masking rte_driver and rte_device too,