From cdffd2258152d505b8a99bd6c838f78d2da74745 Mon Sep 17 00:00:00 2001 From: Darek Stojaczyk Date: Fri, 3 Jul 2020 00:44:42 +0200 Subject: [PATCH] env_dpdk: move NVMe PCI driver definition to the nvme lib Now that drivers can be registered from upper layers there's no need to keep them centralized inside env. (check_format.sh complains that spdk_pci_nvme_get_driver() shouldn't start with the spdk_ prefix - to workaround that we move the function declaration from one place in env.h to another - that's enough to convince check_format it really is a public function) Change-Id: If86aebd6c997349569c71430ec815b413eb44ef8 Signed-off-by: Darek Stojaczyk Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3187 Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Paul Luse Reviewed-by: Jacek Kalwas Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins --- include/spdk/env.h | 14 +++++----- lib/env_dpdk/Makefile | 2 +- lib/env_dpdk/pci.c | 6 ++++ lib/env_dpdk/pci_nvme.c | 56 -------------------------------------- lib/nvme/nvme_pcie.c | 14 ++++++++++ test/common/lib/test_env.c | 2 ++ 6 files changed, 30 insertions(+), 64 deletions(-) delete mode 100644 lib/env_dpdk/pci_nvme.c diff --git a/include/spdk/env.h b/include/spdk/env.h index 70b05a783..9c168aefa 100644 --- a/include/spdk/env.h +++ b/include/spdk/env.h @@ -719,13 +719,6 @@ __attribute__((constructor)) static void pci_drv ## _register(void) \ spdk_pci_driver_register(name, id_table, flags); \ } -/** - * Get the NVMe PCI driver object. - * - * \return PCI driver. - */ -struct spdk_pci_driver *spdk_pci_nvme_get_driver(void); - /** * Get the VMD PCI driver object. * @@ -759,6 +752,13 @@ struct spdk_pci_driver *spdk_pci_virtio_get_driver(void); */ struct spdk_pci_driver *spdk_pci_get_driver(const char *name); +/** + * Get the NVMe PCI driver object. + * + * \return PCI driver. + */ +struct spdk_pci_driver *spdk_pci_nvme_get_driver(void); + /** * Enumerate all PCI devices supported by the provided driver and try to * attach those that weren't attached yet. The provided callback will be diff --git a/lib/env_dpdk/Makefile b/lib/env_dpdk/Makefile index fccdfdf4c..11433fe86 100644 --- a/lib/env_dpdk/Makefile +++ b/lib/env_dpdk/Makefile @@ -39,7 +39,7 @@ SO_MINOR := 0 CFLAGS += $(ENV_CFLAGS) C_SRCS = env.c memory.c pci.c init.c threads.c -C_SRCS += pci_nvme.c pci_ioat.c pci_virtio.c pci_vmd.c pci_idxd.c +C_SRCS += pci_ioat.c pci_virtio.c pci_vmd.c pci_idxd.c LIBNAME = env_dpdk SPDK_MAP_FILE = $(abspath $(CURDIR)/spdk_env_dpdk.map) diff --git a/lib/env_dpdk/pci.c b/lib/env_dpdk/pci.c index 9cc8209f4..5fd1b4abd 100644 --- a/lib/env_dpdk/pci.c +++ b/lib/env_dpdk/pci.c @@ -188,6 +188,12 @@ spdk_pci_driver_register(const char *name, struct spdk_pci_id *id_table, uint32_ TAILQ_INSERT_TAIL(&g_pci_drivers, driver, tailq); } +struct spdk_pci_driver * +spdk_pci_nvme_get_driver(void) +{ + return spdk_pci_get_driver("nvme"); +} + struct spdk_pci_driver * spdk_pci_get_driver(const char *name) { diff --git a/lib/env_dpdk/pci_nvme.c b/lib/env_dpdk/pci_nvme.c deleted file mode 100644 index 6c45ac0a8..000000000 --- a/lib/env_dpdk/pci_nvme.c +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright (c) Intel Corporation. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "env_internal.h" - -#include "spdk/pci_ids.h" - -static struct spdk_pci_id nvme_pci_driver_id[] = { - { - .class_id = SPDK_PCI_CLASS_NVME, - .vendor_id = SPDK_PCI_ANY_ID, - .device_id = SPDK_PCI_ANY_ID, - .subvendor_id = SPDK_PCI_ANY_ID, - .subdevice_id = SPDK_PCI_ANY_ID, - }, - { .vendor_id = 0, /* sentinel */ }, -}; - -struct spdk_pci_driver * -spdk_pci_nvme_get_driver(void) -{ - return spdk_pci_get_driver("nvme"); -} - -SPDK_PCI_DRIVER_REGISTER("nvme", nvme_pci_driver_id, - SPDK_PCI_DRIVER_NEED_MAPPING | SPDK_PCI_DRIVER_WC_ACTIVATE); diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index f2bbc5f52..132e34cdc 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -2546,6 +2546,20 @@ nvme_pcie_poll_group_destroy(struct spdk_nvme_transport_poll_group *tgroup) return 0; } +static struct spdk_pci_id nvme_pci_driver_id[] = { + { + .class_id = SPDK_PCI_CLASS_NVME, + .vendor_id = SPDK_PCI_ANY_ID, + .device_id = SPDK_PCI_ANY_ID, + .subvendor_id = SPDK_PCI_ANY_ID, + .subdevice_id = SPDK_PCI_ANY_ID, + }, + { .vendor_id = 0, /* sentinel */ }, +}; + +SPDK_PCI_DRIVER_REGISTER("nvme", nvme_pci_driver_id, + SPDK_PCI_DRIVER_NEED_MAPPING | SPDK_PCI_DRIVER_WC_ACTIVATE); + const struct spdk_nvme_transport_ops pcie_ops = { .name = "PCIE", .type = SPDK_NVME_TRANSPORT_PCIE, diff --git a/test/common/lib/test_env.c b/test/common/lib/test_env.c index 49d874dfe..5e2912b5c 100644 --- a/test/common/lib/test_env.c +++ b/test/common/lib/test_env.c @@ -47,6 +47,8 @@ void free_cores(void); DEFINE_STUB(spdk_process_is_primary, bool, (void), true) DEFINE_STUB(spdk_memzone_lookup, void *, (const char *name), NULL) +DEFINE_STUB_V(spdk_pci_driver_register, (const char *name, struct spdk_pci_id *id_table, + uint32_t flags)); DEFINE_STUB(spdk_pci_nvme_get_driver, struct spdk_pci_driver *, (void), NULL) DEFINE_STUB(spdk_pci_ioat_get_driver, struct spdk_pci_driver *, (void), NULL) DEFINE_STUB(spdk_pci_virtio_get_driver, struct spdk_pci_driver *, (void), NULL)