Commit 6231a197 authored by Darek Stojaczyk's avatar Darek Stojaczyk Committed by Tomasz Zawadzki
Browse files

vhost: simplify memory registration functions



Make them accept a struct rte_vhost_memory * param
instead of a full spdk session object.

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


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>
Reviewed-by: default avatarJohn Kariuki <John.K.Kariuki@intel.com>
parent 30998f9b
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -530,15 +530,15 @@ vhost_session_find_by_vid(int vid)
#define CEIL_2MB(x)	((((uintptr_t)x) + SIZE_2MB - 1) / SIZE_2MB) << SHIFT_2MB

static void
vhost_session_mem_register(struct spdk_vhost_session *vsession)
vhost_session_mem_register(struct rte_vhost_memory *mem)
{
	struct rte_vhost_mem_region *region;
	uint32_t i;
	uint64_t previous_start = UINT64_MAX;

	for (i = 0; i < vsession->mem->nregions; i++) {
	for (i = 0; i < mem->nregions; i++) {
		uint64_t start, end, len;
		region = &vsession->mem->regions[i];
		region = &mem->regions[i];
		start = FLOOR_2MB(region->mmap_addr);
		end = CEIL_2MB(region->mmap_addr + region->mmap_size);
		if (start == previous_start) {
@@ -558,15 +558,15 @@ vhost_session_mem_register(struct spdk_vhost_session *vsession)
}

static void
vhost_session_mem_unregister(struct spdk_vhost_session *vsession)
vhost_session_mem_unregister(struct rte_vhost_memory *mem)
{
	struct rte_vhost_mem_region *region;
	uint32_t i;
	uint64_t previous_start = UINT64_MAX;

	for (i = 0; i < vsession->mem->nregions; i++) {
	for (i = 0; i < mem->nregions; i++) {
		uint64_t start, end, len;
		region = &vsession->mem->regions[i];
		region = &mem->regions[i];
		start = FLOOR_2MB(region->mmap_addr);
		end = CEIL_2MB(region->mmap_addr + region->mmap_size);
		if (start == previous_start) {
@@ -1055,7 +1055,7 @@ _stop_session(struct spdk_vhost_session *vsession)
		rte_vhost_set_vring_base(vsession->vid, i, q->last_avail_idx, q->last_used_idx);
	}

	vhost_session_mem_unregister(vsession);
	vhost_session_mem_unregister(vsession->mem);
	free(vsession->mem);

	return 0;
@@ -1163,11 +1163,11 @@ vhost_start_device_cb(int vid)
	}

	vhost_session_set_coalescing(vdev, vsession, NULL);
	vhost_session_mem_register(vsession);
	vhost_session_mem_register(vsession->mem);
	vsession->initialized = true;
	rc = vdev->backend->start_session(vsession);
	if (rc != 0) {
		vhost_session_mem_unregister(vsession);
		vhost_session_mem_unregister(vsession->mem);
		free(vsession->mem);
		goto out;
	}