[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v14 3/4] vhost-vdpa: Add check for full 64-bit in region dele
From: |
Jason Wang |
Subject: |
Re: [PATCH v14 3/4] vhost-vdpa: Add check for full 64-bit in region delete |
Date: |
Tue, 21 Mar 2023 11:14:06 +0800 |
On Tue, Mar 21, 2023 at 12:20 AM Cindy Lu <lulu@redhat.com> wrote:
>
> The unmap ioctl doesn't accept a full 64-bit span. So need to
> add check for the section's size in vhost_vdpa_listener_region_del().
>
> Signed-off-by: Cindy Lu <lulu@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Thanks
> ---
> hw/virtio/vhost-vdpa.c | 20 +++++++++++++++++++-
> 1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
> index 92c2413c76..0c8c37e786 100644
> --- a/hw/virtio/vhost-vdpa.c
> +++ b/hw/virtio/vhost-vdpa.c
> @@ -316,10 +316,28 @@ static void
> vhost_vdpa_listener_region_del(MemoryListener *listener,
> vhost_iova_tree_remove(v->iova_tree, *result);
> }
> vhost_vdpa_iotlb_batch_begin_once(v);
> + /*
> + * The unmap ioctl doesn't accept a full 64-bit. need to check it
> + */
> + if (int128_eq(llsize, int128_2_64())) {
> + llsize = int128_rshift(llsize, 1);
> + ret = vhost_vdpa_dma_unmap(v, VHOST_VDPA_GUEST_PA_ASID, iova,
> + int128_get64(llsize));
> +
> + if (ret) {
> + error_report("vhost_vdpa_dma_unmap(%p, 0x%" HWADDR_PRIx ", "
> + "0x%" HWADDR_PRIx ") = %d (%m)",
> + v, iova, int128_get64(llsize), ret);
> + }
> + iova += int128_get64(llsize);
> + }
> ret = vhost_vdpa_dma_unmap(v, VHOST_VDPA_GUEST_PA_ASID, iova,
> int128_get64(llsize));
> +
> if (ret) {
> - error_report("vhost_vdpa dma unmap error!");
> + error_report("vhost_vdpa_dma_unmap(%p, 0x%" HWADDR_PRIx ", "
> + "0x%" HWADDR_PRIx ") = %d (%m)",
> + v, iova, int128_get64(llsize), ret);
> }
>
> memory_region_unref(section->mr);
> --
> 2.34.3
>