env: introduce SPDK_MEMZONE_NO_IOVA_CONTIG
Future DPDK versions may drop physical memory contiguity guarantee for common memzones. DPDK 18.05 introduces an RTE_MEMZONE_IOVA_CONTIG (0x00100000) flag, which is documented as follows: > RTE_MEMZONE_IOVA_CONTIG - Ensure reserved memzone is IOVA-contiguous. > This option should be used when allocating > memory intended for hardware rings etc. To preserve backward compatibility, SPDK introduces an opposite flag, SPDK_MEMZONE_NO_IOVA_CONTIG. Change-Id: I9ea79b096fdb094051f13c9a802740b0e4ccc98e Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/416977 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
5dcd6f6318
commit
2044690e6a
@ -58,6 +58,11 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
#define SPDK_MALLOC_SHARE 0x02
|
#define SPDK_MALLOC_SHARE 0x02
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Memzone flags
|
||||||
|
*/
|
||||||
|
#define SPDK_MEMZONE_NO_IOVA_CONTIG 0x00100000 /**< no iova contiguity */
|
||||||
|
|
||||||
struct spdk_pci_device;
|
struct spdk_pci_device;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -138,6 +138,15 @@ spdk_memzone_reserve(const char *name, size_t len, int socket_id, unsigned flags
|
|||||||
const struct rte_memzone *mz;
|
const struct rte_memzone *mz;
|
||||||
unsigned dpdk_flags = 0;
|
unsigned dpdk_flags = 0;
|
||||||
|
|
||||||
|
#if RTE_VERSION >= RTE_VERSION_NUM(18, 05, 0, 0)
|
||||||
|
/* Older DPDKs do not offer such flag since their
|
||||||
|
* memzones are iova-contiguous by default.
|
||||||
|
*/
|
||||||
|
if ((flags & SPDK_MEMZONE_NO_IOVA_CONTIG) == 0) {
|
||||||
|
dpdk_flags |= RTE_MEMZONE_IOVA_CONTIG;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (socket_id == SPDK_ENV_SOCKET_ID_ANY) {
|
if (socket_id == SPDK_ENV_SOCKET_ID_ANY) {
|
||||||
socket_id = SOCKET_ID_ANY;
|
socket_id = SOCKET_ID_ANY;
|
||||||
}
|
}
|
||||||
|
@ -305,7 +305,8 @@ nvme_driver_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
g_spdk_nvme_driver = spdk_memzone_reserve(SPDK_NVME_DRIVER_NAME,
|
g_spdk_nvme_driver = spdk_memzone_reserve(SPDK_NVME_DRIVER_NAME,
|
||||||
sizeof(struct nvme_driver), socket_id, 0);
|
sizeof(struct nvme_driver), socket_id,
|
||||||
|
SPDK_MEMZONE_NO_IOVA_CONTIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_spdk_nvme_driver == NULL) {
|
if (g_spdk_nvme_driver == NULL) {
|
||||||
|
Loading…
Reference in New Issue
Block a user