Message ID | 20200826143651.7915-3-eperezma@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | memory: Delete assertion in memory_region_unregister_iommu_notifier | expand |
On Wed, Aug 26, 2020 at 04:36:40PM +0200, Eugenio Pérez wrote: > 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 <eperezma@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; Can we directly use IOMMUNotifierFlag as the type rather than introducing a similar enumeration? Thanks,
On Wed, Aug 26, 2020 at 5:42 PM Peter Xu <peterx@redhat.com> wrote: > > On Wed, Aug 26, 2020 at 04:36:40PM +0200, Eugenio Pérez wrote: > > 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 <eperezma@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; > > Can we directly use IOMMUNotifierFlag as the type rather than introducing a > similar enumeration? Thanks, > Right, I think it's simpler your way. Thanks! > -- > Peter Xu >
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 */ }; /*
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 <eperezma@redhat.com> --- include/exec/memory.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)