[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH v4 30/41] vfio/iommufd: Add support for iova_ranges
|
From: |
Duan, Zhenzhong |
|
Subject: |
RE: [PATCH v4 30/41] vfio/iommufd: Add support for iova_ranges |
|
Date: |
Tue, 7 Nov 2023 03:07:58 +0000 |
>-----Original Message-----
>From: Cédric Le Goater <clg@redhat.com>
>Sent: Tuesday, November 7, 2023 1:19 AM
>Subject: Re: [PATCH v4 30/41] vfio/iommufd: Add support for iova_ranges
>
>On 11/2/23 08:12, Zhenzhong Duan wrote:
>> Some vIOMMU such as virtio-iommu use iova ranges from host side to
>> setup reserved ranges for passthrough device, so that guest will not
>> use an iova range beyond host support.
>>
>> Use an uAPI of IOMMUFD to get iova ranges of host side and pass to
>> vIOMMU just like the legacy backend.
>>
>> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
>> ---
>> v4: fix build error in 32bit fedora
>>
>> hw/vfio/iommufd.c | 47
>+++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 47 insertions(+)
>>
>> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
>> index 1bb55ca2c4..22f02f92a9 100644
>> --- a/hw/vfio/iommufd.c
>> +++ b/hw/vfio/iommufd.c
>> @@ -341,6 +341,52 @@ static int iommufd_ram_block_discard_disable(bool
>state)
>> return ram_block_uncoordinated_discard_disable(state);
>> }
>>
>> +static int vfio_get_info_iova_range(VFIOIOMMUFDContainer *container,
>> + uint32_t ioas_id)
>> +{
>> + VFIOContainerBase *bcontainer = &container->bcontainer;
>> + struct iommu_ioas_iova_ranges *info;
>> + struct iommu_iova_range *iova_ranges;
>> + int ret, sz, fd = container->be->fd;
>> +
>> + info = g_malloc0(sizeof(*info));
>> + info->size = sizeof(*info);
>> + info->ioas_id = ioas_id;
>> +
>> + ret = ioctl(fd, IOMMU_IOAS_IOVA_RANGES, info);
>> + if (ret && errno != EMSGSIZE) {
>> + goto error;
>> + }
>> +
>> + sz = info->num_iovas * sizeof(struct iommu_iova_range);
>> + info = g_realloc(info, sizeof(*info) + sz);
>> + info->allowed_iovas = (uintptr_t)(info + 1);
>> +
>> + ret = ioctl(fd, IOMMU_IOAS_IOVA_RANGES, info);
>> + if (ret) {
>> + goto error;
>> + }
>> +
>> + iova_ranges = (struct iommu_iova_range *)info->allowed_iovas;
>
>iova_ranges = (struct iommu_iova_range *)(uintptr_t)info->allowed_iovas;
Will fix, thanks for point out.
BRs.
Zhenzhong
- RE: [PATCH v4 28/41] vfio/iommufd: Implement the iommufd backend, (continued)
[PATCH v4 31/41] vfio/pci: Extract out a helper vfio_pci_get_pci_hot_reset_info, Zhenzhong Duan, 2023/11/02
[PATCH v4 32/41] vfio/pci: Introduce a vfio pci hot reset interface, Zhenzhong Duan, 2023/11/02
[PATCH v4 30/41] vfio/iommufd: Add support for iova_ranges, Zhenzhong Duan, 2023/11/02
[PATCH v4 29/41] vfio/iommufd: Relax assert check for iommufd backend, Zhenzhong Duan, 2023/11/02
[PATCH v4 33/41] vfio/iommufd: Enable pci hot reset through iommufd cdev interface, Zhenzhong Duan, 2023/11/02
[PATCH v4 34/41] vfio/pci: Allow the selection of a given iommu backend, Zhenzhong Duan, 2023/11/02
[PATCH v4 35/41] vfio/pci: Make vfio cdev pre-openable by passing a file handle, Zhenzhong Duan, 2023/11/02
[PATCH v4 37/41] vfio/platform: Make vfio cdev pre-openable by passing a file handle, Zhenzhong Duan, 2023/11/02
[PATCH v4 36/41] vfio: Allow the selection of a given iommu backend for platform ap and ccw, Zhenzhong Duan, 2023/11/02
[PATCH v4 38/41] vfio/ap: Make vfio cdev pre-openable by passing a file handle, Zhenzhong Duan, 2023/11/02
[PATCH v4 39/41] vfio/ccw: Make vfio cdev pre-openable by passing a file handle, Zhenzhong Duan, 2023/11/02