env/dpdk: remove the fake rte_bus
This practically reverts commit 2fe7aa5e4
[1].
The extra rte_bus was supposed to allow running SPDK
as a non-priviledged user by enabling RTE_IOVA_VA mode.
DPDK uses RTE_IOVA_PA by default - which means there are
physical addresses used as memseg IOVAs and hence the
root access is required to retrieve those physical
addresses. This patch was supposed to be paired with
a different DPDK patch of mine, but DPDK rejected that
one. Instead, in DPDK 18.11+ the user can force iova mode
by specifying --iova-mode=<mode> command line option,
where <mode> is either pa or va.
Either way, apparently there are cases where physical
address contiguity is required even without UIO (#707)
so let's revert this patch and consistently stick with
RTE_IOVA_PA.
SPDK requires some more effort to support running as
a non-priviledged user anyway.
Fixes #707
[1] env_dpdk/vtophys: register a fake rte_bus supporting RTE_IOVA_VA
Change-Id: I90bf097fd6a7f129444229dc7cf07a462d4f2d09
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/448121
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
ac2dd4b2c2
commit
07042bdeb1
@ -1345,49 +1345,3 @@ spdk_vtophys(void *buf, uint64_t *size)
|
||||
return paddr_2mb + (vaddr & MASK_2MB);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_bus_scan(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
spdk_bus_probe(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct rte_device *
|
||||
spdk_bus_find_device(const struct rte_device *start,
|
||||
rte_dev_cmp_t cmp, const void *data)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 3)
|
||||
static enum rte_iova_mode
|
||||
spdk_bus_get_iommu_class(void) {
|
||||
/* Since we register our PCI drivers after EAL init, we have no chance
|
||||
* of switching into RTE_IOVA_VA (virtual addresses as iova) iommu
|
||||
* class. DPDK uses RTE_IOVA_PA by default because for some platforms
|
||||
* it's the only supported mode, but then SPDK does not support those
|
||||
* platforms and doesn't mind defaulting to RTE_IOVA_VA. The rte_pci bus
|
||||
* will force RTE_IOVA_PA if RTE_IOVA_VA simply can not be used
|
||||
* (i.e. at least one device on the system is bound to uio_pci_generic),
|
||||
* so we simply return RTE_IOVA_VA here.
|
||||
*/
|
||||
return RTE_IOVA_VA;
|
||||
}
|
||||
#endif
|
||||
|
||||
struct rte_bus spdk_bus = {
|
||||
.scan = spdk_bus_scan,
|
||||
.probe = spdk_bus_probe,
|
||||
.find_device = spdk_bus_find_device,
|
||||
#if RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 3)
|
||||
.get_iommu_class = spdk_bus_get_iommu_class,
|
||||
#endif
|
||||
};
|
||||
|
||||
RTE_REGISTER_BUS(spdk, spdk_bus);
|
||||
|
Loading…
Reference in New Issue
Block a user