Devices behind a VMD aren't visible directly on the PCI bus. In order to support them, we'll need an additional VMD driver that's going to enumerate the devices behind it and hook those into the SPDK PCI layer. We want those devices to be accessible with the same APIs that are used to access physical PCI devices. The physical devices are still created and managed by DPDK, but additional devices can be now hooked externally. The hook API slightly departs from how env layer worked so far. Instead of keeping the generic hook functions internal-only and adding per-driver (NVMe, I/OAT, Virtio) public functions, this patch makes the generic hook API public from the start. It accepts the device driver as a parameter, which needs to be exposed now. That's why spdk_pci_nvme_get_driver() is introduced. It's only the NVMe driver that's exposed so far, but other drivers and their attach APIs should eventually follow the same path. The previous model really didn't scale well and there's no need to stretch it further. Change-Id: Iade018a43b1e23527bd2914be42b403551e73bb6 Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/435802 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> |
||
---|---|---|
.. | ||
env_internal.h | ||
env.c | ||
env.mk | ||
init.c | ||
Makefile | ||
memory.c | ||
pci_ioat.c | ||
pci_nvme.c | ||
pci_virtio.c | ||
pci.c | ||
threads.c | ||
vtophys.c |