On Thu, Nov 09, 2023 at 12:17:35PM +0000, Joao Martins wrote:
> 
> 
> 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 ?

The underlying viommu driver supporting mdev cannot support dirty
tracking via the hwpt flag, so it doesn't matter.

The entire point is that a mdev doesn't have a hwpt or any of the hwpt
linked features including dirty tracking.

Jason

Reply via email to