eal: add bus pointer in device structure
When a device is added with a devargs (hotplug or whitelist), the bus pointer can be retrieved via its devargs. But there is no such devargs.bus in case of standard scan. A pointer to the rte_bus handle is added to rte_device. When a device is allocated (during a scan), the pointer to its bus is assigned. It will make possible to remove a rte_device, using the function pointer from its bus. The function rte_bus_find_by_device() becomes useless, and may be removed later. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
2effa126fb
commit
6844d146ff
@ -197,6 +197,10 @@ ABI Changes
|
||||
- structure ``rte_eal_memconfig`` has been extended to contain next
|
||||
socket ID for externally allocated segments
|
||||
|
||||
* eal: The structure ``rte_device`` got a new field to reference a ``rte_bus``.
|
||||
It is changing the size of the ``struct rte_device`` and the inherited
|
||||
device structures of all buses.
|
||||
|
||||
|
||||
Removed Items
|
||||
-------------
|
||||
@ -232,11 +236,12 @@ The libraries prepended with a plus sign were incremented in this version.
|
||||
librte_bbdev.so.1
|
||||
librte_bitratestats.so.2
|
||||
librte_bpf.so.1
|
||||
librte_bus_dpaa.so.1
|
||||
librte_bus_fslmc.so.1
|
||||
librte_bus_pci.so.1
|
||||
librte_bus_vdev.so.1
|
||||
+ librte_bus_vmbus.so.1
|
||||
+ librte_bus_dpaa.so.2
|
||||
+ librte_bus_fslmc.so.2
|
||||
+ librte_bus_ifpga.so.2
|
||||
+ librte_bus_pci.so.2
|
||||
+ librte_bus_vdev.so.2
|
||||
+ librte_bus_vmbus.so.2
|
||||
librte_cfgfile.so.2
|
||||
librte_cmdline.so.2
|
||||
librte_common_octeontx.so.1
|
||||
|
@ -24,7 +24,7 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include
|
||||
# versioning export map
|
||||
EXPORT_MAP := rte_bus_dpaa_version.map
|
||||
|
||||
LIBABIVER := 1
|
||||
LIBABIVER := 2
|
||||
|
||||
# all source are stored in SRCS-y
|
||||
#
|
||||
|
@ -165,6 +165,8 @@ dpaa_create_device_list(void)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
dev->device.bus = &rte_dpaa_bus.bus;
|
||||
|
||||
cfg = &dpaa_netcfg->port_cfg[i];
|
||||
fman_intf = cfg->fman_if;
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright 2018 NXP
|
||||
|
||||
version = 2
|
||||
|
||||
if host_machine.system() != 'linux'
|
||||
build = false
|
||||
endif
|
||||
|
@ -24,7 +24,7 @@ LDLIBS += -lrte_ethdev
|
||||
EXPORT_MAP := rte_bus_fslmc_version.map
|
||||
|
||||
# library version
|
||||
LIBABIVER := 1
|
||||
LIBABIVER := 2
|
||||
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += \
|
||||
qbman/qbman_portal.c \
|
||||
|
@ -161,6 +161,8 @@ scan_one_fslmc_device(char *dev_name)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
dev->device.bus = &rte_fslmc_bus.bus;
|
||||
|
||||
/* Parse the device name and ID */
|
||||
t_ptr = strtok(dup_dev_name, ".");
|
||||
if (!t_ptr) {
|
||||
|
@ -1,6 +1,8 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright 2018 NXP
|
||||
|
||||
version = 2
|
||||
|
||||
if host_machine.system() != 'linux'
|
||||
build = false
|
||||
endif
|
||||
|
@ -19,7 +19,7 @@ LDLIBS += -lrte_kvargs
|
||||
EXPORT_MAP := rte_bus_ifpga_version.map
|
||||
|
||||
# library version
|
||||
LIBABIVER := 1
|
||||
LIBABIVER := 2
|
||||
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += ifpga_bus.c
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += ifpga_common.c
|
||||
|
@ -142,6 +142,7 @@ ifpga_scan_one(struct rte_rawdev *rawdev,
|
||||
if (!afu_dev)
|
||||
goto end;
|
||||
|
||||
afu_dev->device.bus = &rte_ifpga_bus;
|
||||
afu_dev->device.devargs = devargs;
|
||||
afu_dev->device.numa_node = SOCKET_ID_ANY;
|
||||
afu_dev->device.name = devargs->name;
|
||||
|
@ -1,6 +1,8 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2010-2018 Intel Corporation
|
||||
|
||||
version = 2
|
||||
|
||||
deps += ['pci', 'kvargs', 'rawdev']
|
||||
install_headers('rte_bus_ifpga.h')
|
||||
sources = files('ifpga_common.c', 'ifpga_bus.c')
|
||||
|
@ -4,7 +4,7 @@
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
LIB = librte_bus_pci.a
|
||||
LIBABIVER := 1
|
||||
LIBABIVER := 2
|
||||
EXPORT_MAP := rte_bus_pci_version.map
|
||||
|
||||
CFLAGS := -I$(SRCDIR) $(CFLAGS)
|
||||
|
@ -223,6 +223,8 @@ pci_scan_one(int dev_pci_fd, struct pci_conf *conf)
|
||||
}
|
||||
|
||||
memset(dev, 0, sizeof(*dev));
|
||||
dev->device.bus = &rte_pci_bus.bus;
|
||||
|
||||
dev->addr.domain = conf->pc_sel.pc_domain;
|
||||
dev->addr.bus = conf->pc_sel.pc_bus;
|
||||
dev->addr.devid = conf->pc_sel.pc_dev;
|
||||
|
@ -228,6 +228,7 @@ pci_scan_one(const char *dirname, const struct rte_pci_addr *addr)
|
||||
return -1;
|
||||
|
||||
memset(dev, 0, sizeof(*dev));
|
||||
dev->device.bus = &rte_pci_bus.bus;
|
||||
dev->addr = *addr;
|
||||
|
||||
/* get vendor id */
|
||||
|
@ -1,6 +1,8 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
version = 2
|
||||
|
||||
deps += ['pci']
|
||||
install_headers('rte_bus_pci.h')
|
||||
sources = files('pci_common.c',
|
||||
|
@ -15,6 +15,8 @@ extern struct rte_pci_bus rte_pci_bus;
|
||||
struct rte_pci_driver;
|
||||
struct rte_pci_device;
|
||||
|
||||
extern struct rte_pci_bus rte_pci_bus;
|
||||
|
||||
/**
|
||||
* Probe the PCI bus
|
||||
*
|
||||
|
@ -16,7 +16,7 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
EXPORT_MAP := rte_bus_vdev_version.map
|
||||
|
||||
# library version
|
||||
LIBABIVER := 1
|
||||
LIBABIVER := 2
|
||||
|
||||
SRCS-y += vdev.c
|
||||
SRCS-y += vdev_params.c
|
||||
|
@ -1,6 +1,8 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
version = 2
|
||||
|
||||
sources = files('vdev.c',
|
||||
'vdev_params.c')
|
||||
install_headers('rte_bus_vdev.h')
|
||||
|
@ -456,6 +456,7 @@ vdev_scan(void)
|
||||
continue;
|
||||
}
|
||||
|
||||
dev->device.bus = &rte_vdev_bus;
|
||||
dev->device.devargs = devargs;
|
||||
dev->device.numa_node = SOCKET_ID_ANY;
|
||||
dev->device.name = devargs->name;
|
||||
|
@ -3,7 +3,7 @@
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
LIB = librte_bus_vmbus.a
|
||||
LIBABIVER := 1
|
||||
LIBABIVER := 2
|
||||
EXPORT_MAP := rte_bus_vmbus_version.map
|
||||
|
||||
CFLAGS += -I$(SRCDIR)
|
||||
|
@ -229,6 +229,7 @@ vmbus_scan_one(const char *name)
|
||||
if (dev == NULL)
|
||||
return -1;
|
||||
|
||||
dev->device.bus = &rte_vmbus_bus.bus;
|
||||
dev->device.name = strdup(name);
|
||||
if (!dev->device.name)
|
||||
goto error;
|
||||
|
@ -1,5 +1,7 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
version = 2
|
||||
|
||||
allow_experimental_apis = true
|
||||
|
||||
install_headers('rte_bus_vmbus.h','rte_vmbus_reg.h')
|
||||
|
@ -10,11 +10,14 @@
|
||||
#include <sys/uio.h>
|
||||
#include <rte_log.h>
|
||||
#include <rte_vmbus_reg.h>
|
||||
#include <rte_bus_vmbus.h>
|
||||
|
||||
#ifndef PAGE_SIZE
|
||||
#define PAGE_SIZE 4096
|
||||
#endif
|
||||
|
||||
extern struct rte_vmbus_bus rte_vmbus_bus;
|
||||
|
||||
extern int vmbus_logtype_bus;
|
||||
#define VMBUS_LOG(level, fmt, args...) \
|
||||
rte_log(RTE_LOG_ ## level, vmbus_logtype_bus, "%s(): " fmt "\n", \
|
||||
|
@ -157,6 +157,7 @@ struct rte_device {
|
||||
TAILQ_ENTRY(rte_device) next; /**< Next device */
|
||||
const char *name; /**< Device name */
|
||||
const struct rte_driver *driver;/**< Associated driver */
|
||||
const struct rte_bus *bus; /**< Bus handle assigned on scan */
|
||||
int numa_node; /**< NUMA node connection */
|
||||
struct rte_devargs *devargs; /**< Device user arguments */
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user