>-----Original Message----- >From: Joao Martins <joao.m.mart...@oracle.com> >Sent: Friday, November 10, 2023 9:09 PM >Subject: Re: [PATCH v4 28/41] vfio/iommufd: Implement the iommufd backend > >On 10/11/2023 03:15, Duan, Zhenzhong wrote: >> Hi Jason, Joao, >> >>> -----Original Message----- >>> From: Jason Gunthorpe <j...@nvidia.com> >>> Sent: Thursday, November 9, 2023 10:35 PM >>> Subject: Re: [PATCH v4 28/41] vfio/iommufd: Implement the iommufd >backend >>> >>> On Thu, Nov 09, 2023 at 01:21:59PM +0000, Joao Martins wrote: >>>> On 09/11/2023 13:09, Jason Gunthorpe wrote: >>>>> On Thu, Nov 09, 2023 at 01:03:02PM +0000, Joao Martins wrote: >>>>> >>>>>>> I am not talking about mdevs; but rather the regular (non mdev) case not >>> being >>>>>>> able to use dirty tracking with autodomains hwpt allocation. >>>>>> >>>>>> ... without any vIOMMU. >>>>> >>>>> Ah, well, that is troublesome isn't it.. >>>>> >>>>> So do we teach autodomains to be more featured in the kernel or do we >>>>> teach the generic qemu code to effectively implement autodomains in >>>>> userspace? >>>> >>>> The latter is actually what we have been doing. Well I wouldn't call >>> autodomains >>>> in qemu, but rather just allocate a hwpt, instead of attaching the IOAS >>>> directly. But well mdevs don't have domains and we overlooked that. I would >>> turn >>>> the exception into an exception rather than making the norm, doesn't look >>>> to >>> be >>>> much complexity added? >>> >>> Autodomains are complex because of things like mdev and iommu >>> non-uniformity's. Qemu can't just allocate a single HWPT, it needs to >>> be annoyingly managed. >>> >>>> What I last re-collect is that autodomains represents the 'simple users' >>>> that >>>> don't care much beyond the basics of IOMMU features (I recall the example >>> was >>>> DPDK apps and the like). You could say that for current needs IOMMU >>> autodomains >>>> suffices for qemu. >>> >>> Yes, that was my intention. Aside from that it primarily exists to >>> support vfio compatibility >>> >>>> Connecting autodomains to this enforcing on the hwpt is relatively simple >btw, >>>> it just needs to connect the dirty tracking flag with same semantic of >>>> hwpt-alloc equivalent and pass the hwpt flags into the domain allocation. >>> >>> Yes >>> >>>> It's more of what of a question should be the expectations to the user when >>>> using ATTACH_HWPT with an IOAS_ID versus direct manipulation of HWPT. I >am >>>> wondering if dirty tracking is alone here or whether there's more features >that >>>> start to mud the simplicity of autodomains that would approximate of hwpt- >>> alloc. >>> >>> This is why I had been thinking of a pure HWPT based scheme >>> >>> So it seems we cannot have a simple model where the generic qmeu layer >>> just works in IOAS :( It might as well always work in HWPT and >>> understand all the auto domains complexity itself. >> >> Let me know if there is anything I can do in this series to facilitate >> future qemu dirty tracking support of iommufd. Not clear if I should >> restore to the manual HWPT_ALLOC method in v4. > >If we want to have the closest support as type1-iommu, from what we have been >discussing... it sounds like IOAS is the easiest first step to get barebones >iommufd support. Which sort of makes sense since this is the introduction of >iommufd and it already requires a lot of churn & refactoring to get there. Agree.
> >For the new iommufd-only features (nesting/dirty-tracking) we will need the >auto >domains done by Qemu IIUC -- unless nesting is meant to coexist with >autodomains >with its own hwpts somehow (?) We have a draft nesting implementation which has its own hwpts and coexist with autodomains. See https://github.com/yiliu1765/qemu/tree/zhenzhong/iommufd_cdev_v5_nesting if you are interested. > >Right now I don't have the autodomains QEMU equivalent structure in mind to >suggest a path in alternative to v5; Looking at the kernel autodomains path, >aside from mdev I am not sure yet what annoyances the autodomains path in >qemu >is going to generate: more worringly whether we have enough information to >tackle the non-uniformity e.g. if we are talking about features or whether >different devices are behind different IOMMUs. OK, looks more thinking and discuss needed except mdev. I'd like to keep this series as a basic iommufd support with IOAS attaching. QEMU autodomain may be another series addressing new iommufd-only features. Thanks Zhenzhong