On 08/11/2023 12:48, Jason Gunthorpe wrote:
> On Wed, Nov 08, 2023 at 07:16:52AM +0000, Duan, Zhenzhong wrote:
> 
>>>> +    ret = iommufd_backend_alloc_hwpt(iommufd, vbasedev->devid,
>>>> +                                     container->ioas_id, &hwpt_id);
>>>> +
>>>> +    if (ret) {
>>>> +        error_setg_errno(errp, errno, "error alloc shadow hwpt");
>>>> +        return ret;
>>>> +    }
>>>
>>> The above alloc_hwpt fails for mdevs (at least, it fails for me attempting 
>>> to use
>>> iommufd backend with vfio-ccw and vfio-ap on s390).  The ioctl is failing 
>>> in the
>>> kernel because it can't find an IOMMUFD_OBJ_DEVICE.
>>>
>>> AFAIU that's because the mdevs are meant to instead use kernel access via
>>> vfio_iommufd_emulated_attach_ioas, not hwpt.  That's how mdevs behave when
>>> looking at the kernel vfio compat container.
>>>
>>> As a test, I was able to get vfio-ccw and vfio-ap working using the iommufd
>>> backend by just skipping this alloc_hwpt above and instead passing 
>>> container-
>>>> ioas_id into the iommufd_cdev_attach_hwpt below.  That triggers the
>>> vfio_iommufd_emulated_attach_ioas call in the kernel.
>>
>> Thanks for help test and investigation.
>> I was only focusing on real device and missed the mdev particularity, sorry.
>> You are right, there is no hwpt support for mdev, not even an emulated hwpt.
>> I'll digging into this and see how to distinguish mdev with real device in
>> this low level function.
> 
> I was expecting that hwpt manipulation would be done exclusively
> inside the device-specific vIOMMU userspace driver. Generic code paths
> that don't have that knowledge should use the IOAS for everything

I am probably late into noticing this given Zhenzhong v5; but arent' we
forgetting the enforcing of dirty tracking in HWPT is done /via/ ALLOC_HWPT ?

We decided sometime ago that the domain_alloc_user flow (and thus enforcement of
dirty tracking) would go via hwpt manip as opposed to the autodomains flow.

Otherwise if I need to ressurect the autodomains support we will need a
ATTACH_IOAS flag replicating this enforcement to pass into the HWPT auto 
allocation.

Or I can add the hwpt manip on the qemu dirty tracking support of iommufd.

        Joao

Reply via email to