[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC v8 5/5] memory: Skip bad range assertion if notifier is DEVIOTL
From: |
Auger Eric |
Subject: |
Re: [RFC v8 5/5] memory: Skip bad range assertion if notifier is DEVIOTLB type |
Date: |
Wed, 2 Sep 2020 16:24:50 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 |
Hi Eugenio,
On 9/1/20 4:26 PM, Eugenio Pérez wrote:
> Signed-off-by: Eugenio Pérez <eperezma@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
- [RFC v8 3/5] memory: Add IOMMU_DEVIOTLB_UNMAP IOMMUTLBNotificationType, (continued)
[RFC v8 5/5] memory: Skip bad range assertion if notifier is DEVIOTLB type, Eugenio Pérez, 2020/09/01
Re: [RFC v8 0/5] memory: Delete assertion in memory_region_unregister_iommu_notifier, Peter Xu, 2020/09/01