summaryrefslogtreecommitdiff
path: root/drivers/vfio/platform/vfio_platform_private.h
diff options
context:
space:
mode:
authorAntonios Motakis <a.motakis@virtualopensystems.com>2015-03-16 20:08:46 (GMT)
committerAlex Williamson <alex.williamson@redhat.com>2015-03-16 20:08:46 (GMT)
commite8909e67cac3ad3868dc86cc6b1445f39c71bf63 (patch)
tree41dc63c1092d66dc8c2e4581d2783bd5f61769b1 /drivers/vfio/platform/vfio_platform_private.h
parent2e8567bbb536cfc7336f8f105ef43adc98b9c156 (diff)
downloadlinux-e8909e67cac3ad3868dc86cc6b1445f39c71bf63.tar.xz
vfio/platform: return info for device memory mapped IO regions
This patch enables the IOCTLs VFIO_DEVICE_GET_REGION_INFO ioctl call, which allows the user to learn about the available MMIO resources of a device. Signed-off-by: Antonios Motakis <a.motakis@virtualopensystems.com> Signed-off-by: Baptiste Reynal <b.reynal@virtualopensystems.com> Reviewed-by: Eric Auger <eric.auger@linaro.org> Tested-by: Eric Auger <eric.auger@linaro.org> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'drivers/vfio/platform/vfio_platform_private.h')
-rw-r--r--drivers/vfio/platform/vfio_platform_private.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/vfio/platform/vfio_platform_private.h b/drivers/vfio/platform/vfio_platform_private.h
index c046988..3551f6d 100644
--- a/drivers/vfio/platform/vfio_platform_private.h
+++ b/drivers/vfio/platform/vfio_platform_private.h
@@ -18,7 +18,29 @@
#include <linux/types.h>
#include <linux/interrupt.h>
+#define VFIO_PLATFORM_OFFSET_SHIFT 40
+#define VFIO_PLATFORM_OFFSET_MASK (((u64)(1) << VFIO_PLATFORM_OFFSET_SHIFT) - 1)
+
+#define VFIO_PLATFORM_OFFSET_TO_INDEX(off) \
+ (off >> VFIO_PLATFORM_OFFSET_SHIFT)
+
+#define VFIO_PLATFORM_INDEX_TO_OFFSET(index) \
+ ((u64)(index) << VFIO_PLATFORM_OFFSET_SHIFT)
+
+struct vfio_platform_region {
+ u64 addr;
+ resource_size_t size;
+ u32 flags;
+ u32 type;
+#define VFIO_PLATFORM_REGION_TYPE_MMIO 1
+#define VFIO_PLATFORM_REGION_TYPE_PIO 2
+};
+
struct vfio_platform_device {
+ struct vfio_platform_region *regions;
+ u32 num_regions;
+ int refcnt;
+
/*
* These fields should be filled by the bus specific binder
*/