aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorThanos Makatos <thanos.makatos@nutanix.com>2021-02-10 13:40:05 +0000
committerGitHub <noreply@github.com>2021-02-10 13:40:05 +0000
commite6d6e0078a111c8a5bef5d0ed80f59b2efc3263f (patch)
treeaa314237272e8c4d448320eb32990ceea62bcec2 /test
parent365ca96a97740332d3633090d850222d10bc9d70 (diff)
downloadlibvfio-user-e6d6e0078a111c8a5bef5d0ed80f59b2efc3263f.zip
libvfio-user-e6d6e0078a111c8a5bef5d0ed80f59b2efc3263f.tar.gz
libvfio-user-e6d6e0078a111c8a5bef5d0ed80f59b2efc3263f.tar.bz2
set VFIO_REGION_INFO_FLAG_CAPS for migration region (#319)
Signed-off-by: Thanos Makatos <thanos.makatos@nutanix.com> Reviewed-by: John Levon <john.levon@nutanix.com>
Diffstat (limited to 'test')
-rw-r--r--test/unit-tests.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/test/unit-tests.c b/test/unit-tests.c
index e3ad86e..8638c10 100644
--- a/test/unit-tests.c
+++ b/test/unit-tests.c
@@ -472,7 +472,7 @@ static void
test_get_region_info(UNUSED void **state)
{
struct iovec iov = { .iov_base = (void*)0x8badf00, .iov_len = 0x0d15ea5e };
- vfu_reg_info_t reg_info[] = {
+ vfu_reg_info_t reg_info[VFU_PCI_DEV_NUM_REGIONS] = {
{
.size = 0xcadebabe
},
@@ -480,12 +480,18 @@ test_get_region_info(UNUSED void **state)
.flags = VFU_REGION_FLAG_RW,
.size = 0xdeadbeef,
.fd = 0x12345
+ },
+ [VFU_PCI_DEV_MIGR_REGION_IDX] = {
+ .flags = VFU_REGION_FLAG_RW,
+ .size = 0x1000,
+ .fd = -1
}
};
vfu_ctx_t vfu_ctx = {
.client_max_fds = 1,
- .nr_regions = 2,
- .reg_info = reg_info
+ .nr_regions = ARRAY_SIZE(reg_info),
+ .reg_info = reg_info,
+ .migr_reg = &reg_info[VFU_PCI_DEV_MIGR_REGION_IDX]
};
uint32_t index = 0;
uint32_t argsz = 0;
@@ -553,7 +559,26 @@ test_get_region_info(UNUSED void **state)
free(vfio_reg);
free(fds);
- /* FIXME add check for migration region and for multiple sparse areas */
+ /* migration cap */
+ fds = NULL;
+ vfu_ctx.reg_info[1].mmap_areas = NULL;
+ vfu_ctx.reg_info[1].nr_mmap_areas = 0;
+ argsz = sizeof(struct vfio_region_info) + sizeof(struct vfio_region_info_cap_type);
+ assert_int_equal(0,
+ dev_get_reginfo(&vfu_ctx, VFU_PCI_DEV_MIGR_REGION_IDX,
+ argsz, &vfio_reg, &fds, &nr_fds));
+ assert_int_equal(VFIO_REGION_INFO_FLAG_READ | VFIO_REGION_INFO_FLAG_WRITE |
+ VFIO_REGION_INFO_FLAG_CAPS,
+ vfio_reg->flags);
+ struct vfio_region_info_cap_type *type = (struct vfio_region_info_cap_type*)(vfio_reg + 1);
+ assert_int_equal(VFIO_REGION_INFO_CAP_TYPE, type->header.id);
+ assert_int_equal(VFIO_REGION_TYPE_MIGRATION , type->type);
+ assert_int_equal(VFIO_REGION_SUBTYPE_MIGRATION, type->subtype);
+ assert_null(fds);
+ assert_int_equal(0, nr_fds);
+ free(vfio_reg);
+
+ /* FIXME add check for multiple sparse areas */
}
/*