Commit 3aa204fb authored by Darek Stojaczyk's avatar Darek Stojaczyk Committed by Changpeng Liu
Browse files

ioat: don't rely on phys_addr retrieved from spdk_malloc()



The phys_addr param in spdk_*malloc() is about to be
deprecated, so use a separate spdk_vtophys() call to
retrieve physical addresses.

This patch also adds error checks against SPDK_VTOPHYS_ERROR.
The error handling paths are already there to account for
spdk_*malloc() failures themselves, so reuse them in case
of vtophys failures.

Change-Id: Ic1d9194a9a2052a46fc6f7990f53aa91b4a8bbc3
Signed-off-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/416994


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent a86029b9
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -414,11 +414,17 @@ ioat_channel_start(struct spdk_ioat_chan *ioat)
	}

	ioat->comp_update = spdk_dma_zmalloc(sizeof(*ioat->comp_update), SPDK_IOAT_CHANCMP_ALIGN,
					     &comp_update_bus_addr);
					     NULL);
	if (ioat->comp_update == NULL) {
		return -1;
	}

	comp_update_bus_addr = spdk_vtophys((void *)ioat->comp_update, NULL);
	if (comp_update_bus_addr == SPDK_VTOPHYS_ERROR) {
		spdk_dma_free((void *)ioat->comp_update);
		return -1;
	}

	ioat->ring_size_order = IOAT_DEFAULT_ORDER;

	num_descriptors = 1 << ioat->ring_size_order;