>-----Original Message-----
>From: Cédric Le Goater <[email protected]>
>Subject: Re: [PATCH 1/2] vfio/container: Support unmap all in one ioctl()
>
>On 9/24/25 09:02, Zhenzhong Duan wrote:
>> VFIO type1 kernel uAPI supports unmapping whole address space in one call
>> since commit c19650995374 ("vfio/type1: implement unmap all"). use the
>> unmap_all variant whenever it's supported in kernel.
>>
>> Signed-off-by: Zhenzhong Duan <[email protected]>
>> ---
>>   hw/vfio/container.c | 33 ++++++++++++++++++++-------------
>>   1 file changed, 20 insertions(+), 13 deletions(-)
>>
>> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
>> index 030c6d3f89..2e13f04803 100644
>> --- a/hw/vfio/container.c
>> +++ b/hw/vfio/container.c
>> @@ -122,12 +122,12 @@ unmap_exit:
>>
>>   static int vfio_legacy_dma_unmap_one(const VFIOContainerBase
>*bcontainer,
>
>Side note for rebase :
>
>I would prefer internal routines of file hw/vfio/container.c,
>which was renamed recently to hw/vfio/container-legacy.c, to
>take a 'VFIOLegacyContainer *container' parameter.
>
>The 'VFIOContainer *bcontainer' parameter should be kept for
>high-level routines that wrap the IOMMU backend implementation.

Sure, will do

>
>>                                        hwaddr iova, ram_addr_t
>size,
>> -                                     IOMMUTLBEntry *iotlb)
>> +                                     uint32_t flags,
>IOMMUTLBEntry *iotlb)
>>   {
>>       const VFIOContainer *container =
>VFIO_IOMMU_LEGACY(bcontainer);
>>       struct vfio_iommu_type1_dma_unmap unmap = {
>>           .argsz = sizeof(unmap),
>> -        .flags = 0,
>> +        .flags = flags,
>>           .iova = iova,>           .size = size,
>>       };
>> @@ -187,25 +187,32 @@ static int vfio_legacy_dma_unmap(const
>VFIOContainerBase *bcontainer,
>>                                    hwaddr iova, ram_addr_t size,
>>                                    IOMMUTLBEntry *iotlb, bool
>unmap_all)
>>   {
>> +    uint32_t flags = 0;
>>       int ret;
>>
>>       if (unmap_all) {
>> -        /* The unmap ioctl doesn't accept a full 64-bit span. */
>> -        Int128 llsize = int128_rshift(int128_2_64(), 1);
>> +        const VFIOContainer *container =
>VFIO_IOMMU_LEGACY(bcontainer);
>>
>> -        ret = vfio_legacy_dma_unmap_one(bcontainer, 0,
>int128_get64(llsize),
>> -                                        iotlb);
>> +        assert(!iova && !size);
>
>The assert deserves an explanation and so probably a new patch.

Sure, will do.
I'd like to move it into core code vfio_listener_region_del().

Thanks
Zhenzhong

Reply via email to