This way we can tell between MAPs and UNMAP, and potentially avoid to send them to a notifier that does not require them.
Signed-off-by: Eugenio Pérez <epere...@redhat.com> --- include/exec/memory.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 22c5f564d1..f6d91c54aa 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -59,6 +59,12 @@ struct ReservedRegion { typedef struct IOMMUTLBEntry IOMMUTLBEntry; +typedef enum { + IOMMU_IOTLB_NONE = 0, + IOMMU_IOTLB_UNMAP = 1, + IOMMU_IOTLB_MAP = 2, +} IOMMUTLBNotificationType; + /* See address_space_translate: bit 0 is read, bit 1 is write. */ typedef enum { IOMMU_NONE = 0, @@ -70,11 +76,12 @@ typedef enum { #define IOMMU_ACCESS_FLAG(r, w) (((r) ? IOMMU_RO : 0) | ((w) ? IOMMU_WO : 0)) struct IOMMUTLBEntry { - AddressSpace *target_as; - hwaddr iova; - hwaddr translated_addr; - hwaddr addr_mask; /* 0xfff = 4k translation */ - IOMMUAccessFlags perm; + AddressSpace *target_as; + hwaddr iova; + hwaddr translated_addr; + hwaddr addr_mask; /* 0xfff = 4k translation */ + IOMMUAccessFlags perm; + IOMMUTLBNotificationType type; /* Only valid if it is a notification */ }; /* -- 2.18.1