Hi Eugenio, On 9/1/20 4:26 PM, Eugenio Pérez wrote: > Signed-off-by: Eugenio Pérez <epere...@redhat.com> Please could you explain in the commit message why you need to remove the assert()? I know you described the assert() in the cover letter but the commit msg is the one that remains. > --- > softmmu/memory.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/softmmu/memory.c b/softmmu/memory.c > index 09b3443eac..3ee99b4dc0 100644 > --- a/softmmu/memory.c > +++ b/softmmu/memory.c > @@ -1895,6 +1895,7 @@ void memory_region_notify_iommu_one(IOMMUNotifier > *notifier, > { > IOMMUTLBEntry *entry = &event->entry; > hwaddr entry_end = entry->iova + entry->addr_mask; > + IOMMUTLBEntry tmp = *entry; > > /* > * Skip the notification if the notification does not overlap > @@ -1904,10 +1905,18 @@ void memory_region_notify_iommu_one(IOMMUNotifier > *notifier, > return; > } > > - assert(entry->iova >= notifier->start && entry_end <= notifier->end); > + if (notifier->notifier_flags & IOMMU_NOTIFIER_DEVIOTLB) { > + /* Crop (iova, addr_mask) to range */ > + tmp.iova = MAX(tmp.iova, notifier->start); > + tmp.addr_mask = MIN(entry_end, notifier->end) - tmp.iova; > + /* Confirm no underflow */ > + assert(MIN(entry_end, notifier->end) >= tmp.iova); > + } else { > + assert(entry->iova >= notifier->start && entry_end <= notifier->end); > + } > > if (event->type & notifier->notifier_flags) { > - notifier->notify(notifier, entry); > + notifier->notify(notifier, &tmp); > } > } > > Thanks
Eric