aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlias Apalodimas <ilias.apalodimas@linaro.org>2017-10-21 22:50:20 +0300
committerIlias Apalodimas <ilias.apalodimas@linaro.org>2017-10-21 22:50:20 +0300
commit00bb641d2b30764cef2764e382c8a8bd2a4c63b6 (patch)
tree68fedc2e3726b67c6568130157843b964f2e3a0b
parentce4bb9515e08e4d1298be8d00270551ffe1629ce (diff)
POC for sparse mapping. Still not working fully, just parses and prints sparsevfio-sparse-mmap
regions Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
-rw-r--r--api/vfio_api.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/api/vfio_api.c b/api/vfio_api.c
index e4f6989..3528463 100644
--- a/api/vfio_api.c
+++ b/api/vfio_api.c
@@ -203,11 +203,11 @@ static struct vfio_info_cap_header *vfio_get_region_info_cap(struct vfio_region_
return NULL;
}
-static int vfio_get_region_sparse_mmaps(int device, struct vfio_region_info *region_info)
+static int vfio_get_region_sparse_mmaps(int device, struct vfio_region_info *region_info,
+ struct vfio_region_info_cap_sparse_mmap *sparse)
{
struct vfio_region_info *info;
struct vfio_info_cap_header *caps = NULL;
- struct vfio_region_info_cap_sparse_mmap *sparse;
int ret = 0, i;
if (region_info->flags & VFIO_REGION_INFO_FLAG_CAPS &&
@@ -275,6 +275,7 @@ int vfio_get_region(int device, struct vfio_region_info *region_info,
__u32 region)
{
int ret;
+ struct vfio_region_info_cap_sparse_mmap *sparse = NULL;
region_info->index = region;
ret = ioctl(device, VFIO_DEVICE_GET_REGION_INFO, region_info);
@@ -291,10 +292,10 @@ int vfio_get_region(int device, struct vfio_region_info *region_info,
/* FIXME call proper fucntion */
/* Try to find type capabilities */
if (1)
- ret = vfio_get_region_cap_type(device, region_info);
+ ret = vfio_get_region_sparse_mmaps(device, region_info, sparse);
/* Try to find sparse mmap info */
else
- ret = vfio_get_region_sparse_mmaps(device, region_info);
+ ret = vfio_get_region_cap_type(device, region_info);
return ret;
}