aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux
diff options
context:
space:
mode:
authorJason Gunthorpe <jgg@nvidia.com>2022-11-07 22:27:34 -0400
committerDmitry Vyukov <dvyukov@google.com>2022-11-10 12:26:55 -0800
commit84ea6a79e2dfbbc3787b0230e69d922964aa422f (patch)
tree9a778b3d770e1247be845912a9e8b7e3fe1f61e7 /sys/linux
parent273a7069113183fac62a3dd2a91dba7dc69c46c2 (diff)
sys/linux: fix VFIO map/unmap
unmap has its own set of flags that trigger interesting behavior. map needs to take in a user_va or it will not succeed in many cases.
Diffstat (limited to 'sys/linux')
-rw-r--r--sys/linux/dev_vfio.txt9
-rw-r--r--sys/linux/dev_vfio.txt.const3
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/linux/dev_vfio.txt b/sys/linux/dev_vfio.txt
index b4e2525cd..db7fc6ddb 100644
--- a/sys/linux/dev_vfio.txt
+++ b/sys/linux/dev_vfio.txt
@@ -35,15 +35,15 @@ vfio_iommu_type1_info {
vfio_iommu_type1_dma_map {
argsz len[parent, int32]
- flags flags[vfio_dma_flags, int32]
- vaddr int64
+ flags flags[vfio_map_flags, int32]
+ user_va ptr64[in, array[int8]]
iova int64
size int64
}
vfio_iommu_type1_dma_unmap {
argsz len[parent, int32]
- flags flags[vfio_dma_flags, int32]
+ flags flags[vfio_unmap_flags, int32]
iova int64
size int64
data array[int8]
@@ -73,4 +73,5 @@ vfio_iommu_type1_info_dma_avail {
}
iommu_flags = VFIO_TYPE1_IOMMU, VFIO_SPAPR_TCE_IOMMU, VFIO_TYPE1v2_IOMMU, VFIO_DMA_CC_IOMMU, VFIO_EEH, VFIO_TYPE1_NESTING_IOMMU, VFIO_SPAPR_TCE_v2_IOMMU, VFIO_NOIOMMU_IOMMU
-vfio_dma_flags = VFIO_DMA_MAP_FLAG_READ, VFIO_DMA_MAP_FLAG_WRITE
+vfio_map_flags = VFIO_DMA_MAP_FLAG_READ, VFIO_DMA_MAP_FLAG_WRITE
+vfio_unmap_flags = VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP, VFIO_DMA_UNMAP_FLAG_ALL, VFIO_DMA_UNMAP_FLAG_VADDR
diff --git a/sys/linux/dev_vfio.txt.const b/sys/linux/dev_vfio.txt.const
index fee9d6bc8..349359bc8 100644
--- a/sys/linux/dev_vfio.txt.const
+++ b/sys/linux/dev_vfio.txt.const
@@ -5,6 +5,9 @@ VFIO_CHECK_EXTENSION = 15205, mips64le:ppc64le:536886117
VFIO_DMA_CC_IOMMU = 4
VFIO_DMA_MAP_FLAG_READ = 1
VFIO_DMA_MAP_FLAG_WRITE = 2
+VFIO_DMA_UNMAP_FLAG_ALL = 2
+VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP = 1
+VFIO_DMA_UNMAP_FLAG_VADDR = 4
VFIO_EEH = 5
VFIO_GET_API_VERSION = 15204, mips64le:ppc64le:536886116
VFIO_IOMMU_GET_INFO = 15216, mips64le:ppc64le:536886128