From: Joao Martins <joao.m.martins@oracle.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: Alex Williamson <alex.williamson@redhat.com>,
iommu@lists.linux.dev, Kevin Tian <kevin.tian@intel.com>,
Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>,
Lu Baolu <baolu.lu@linux.intel.com>, Yi Liu <yi.l.liu@intel.com>,
Yi Y Sun <yi.y.sun@intel.com>, Nicolin Chen <nicolinc@nvidia.com>,
Joerg Roedel <joro@8bytes.org>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>,
kvm@vger.kernel.org
Subject: Re: [PATCH v3 02/19] vfio: Move iova_bitmap into iommu core
Date: Mon, 16 Oct 2023 18:52:50 +0100 [thread overview]
Message-ID: <8a13a2e5-9bc1-4aeb-ad39-657ee95d5a21@oracle.com> (raw)
In-Reply-To: <20231016163457.GV3952@nvidia.com>
On 16/10/2023 17:34, Jason Gunthorpe wrote:
> On Mon, Oct 16, 2023 at 05:25:16PM +0100, Joao Martins wrote:
>>>> I think Jason is describing this would eventually be in a built-in
>>>> portion of IOMMUFD, but I think currently that built-in portion is
>>>> IOMMU. So until we have this IOMMUFD_DRIVER that enables that built-in
>>>> portion, it seems unnecessarily disruptive to make VFIO select IOMMUFD
>>>> to get this iova bitmap support. Thanks,
>>>
>>> Right, I'm saying Joao may as well make IOMMUFD_DRIVER right now for
>>> this
>>
>> So far I have this snip at the end.
>>
>> Though given that there are struct iommu_domain changes that set a dirty_ops
>> (which require iova-bitmap).
>
> Drivers which set those ops need to select IOMMUFD_DRIVER..
>
My problem is more of the generic/vfio side (headers and structures of iommu
core) not really IOMMU driver nor IOMMUFD.
> Perhaps (at least for ARM) they should even be coded
>
> select IOMMUFD_DRIVER if IOMMUFD
>
> And then #ifdef out the dirty tracking bits so embedded systems don't
> get the bloat with !IOMMUFD
>
Right
>> diff --git a/drivers/iommu/iommufd/Kconfig b/drivers/iommu/iommufd/Kconfig
>> index 99d4b075df49..96ec013d1192 100644
>> --- a/drivers/iommu/iommufd/Kconfig
>> +++ b/drivers/iommu/iommufd/Kconfig
>> @@ -11,6 +11,13 @@ config IOMMUFD
>>
>> If you don't know what to do here, say N.
>>
>> +config IOMMUFD_DRIVER
>> + bool "IOMMUFD provides iommu drivers supporting functions"
>> + default IOMMU_API
>> + help
>> + IOMMUFD will provides supporting data structures and helpers to IOMMU
>> + drivers.
>
> It is not a 'user selectable' kconfig, just make it
>
> config IOMMUFD_DRIVER
> tristate
> default n
>
tristate? More like a bool as IOMMU drivers aren't modloadable
> ie the only way to get it is to build a driver that will consume it.
>
>> diff --git a/drivers/iommu/iommufd/Makefile b/drivers/iommu/iommufd/Makefile
>> index 8aeba81800c5..34b446146961 100644
>> --- a/drivers/iommu/iommufd/Makefile
>> +++ b/drivers/iommu/iommufd/Makefile
>> @@ -11,3 +11,4 @@ iommufd-y := \
>> iommufd-$(CONFIG_IOMMUFD_TEST) += selftest.o
>>
>> obj-$(CONFIG_IOMMUFD) += iommufd.o
>> +obj-$(CONFIG_IOMMUFD_DRIVER) += iova_bitmap.o
>
> Right..
>
>> diff --git a/drivers/vfio/iova_bitmap.c b/drivers/iommu/iommufd/iova_bitmap.c
>> similarity index 100%
>> rename from drivers/vfio/iova_bitmap.c
>> rename to drivers/iommu/iommufd/iova_bitmap.c
>> diff --git a/drivers/vfio/Kconfig b/drivers/vfio/Kconfig
>> index 6bda6dbb4878..1db519cce815 100644
>> --- a/drivers/vfio/Kconfig
>> +++ b/drivers/vfio/Kconfig
>> @@ -7,6 +7,7 @@ menuconfig VFIO
>> select VFIO_GROUP if SPAPR_TCE_IOMMU || IOMMUFD=n
>> select VFIO_DEVICE_CDEV if !VFIO_GROUP
>> select VFIO_CONTAINER if IOMMUFD=n
>> + select IOMMUFD_DRIVER
>
> As discussed use a if (IS_ENABLED) here and just disable the
> bitmap code if something else didn't enable it.
>
I'm adding this to vfio_main:
if (!IS_ENABLED(CONFIG_IOMMUFD_DRIVER))
return -EOPNOTSUPP;
> VFIO isn't a consumer of it
>
(...) The select IOMMUFD_DRIVER was there because of VFIO PCI vendor drivers not
VFIO core. for the 'disable bitmap code' I can add ifdef-ry in iova_bitmap.h to
add scalfold definitions to error-out/nop if CONFIG_IOMMUFD_DRIVER=n when moving
to iommufd/
> The question you are asking is on the driver side implementing it, and
> it should be conditional if IOMMUFD is turned on.
For the IOMMU driver side sure IOMMUFD should be required as it's the sole entry
point of this
But as discussed earlier IOMMUFD=m|y dependency really only matters for IOMMU
dirty tracking, but not for VFIO device dirty tracking.
For your suggested scheme to work VFIO PCI drivers still need to select
IOMMUFD_DRIVER as they require it
next prev parent reply other threads:[~2023-10-16 17:53 UTC|newest]
Thread overview: 140+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-23 1:24 [PATCH v3 00/19] IOMMUFD Dirty Tracking Joao Martins
2023-09-23 1:24 ` [PATCH v3 01/19] vfio/iova_bitmap: Export more API symbols Joao Martins
2023-10-13 15:43 ` Jason Gunthorpe
2023-10-13 15:57 ` Joao Martins
2023-10-13 16:03 ` Jason Gunthorpe
2023-10-13 16:22 ` Joao Martins
2023-09-23 1:24 ` [PATCH v3 02/19] vfio: Move iova_bitmap into iommu core Joao Martins
2023-10-13 15:48 ` Jason Gunthorpe
2023-10-13 16:00 ` Joao Martins
2023-10-13 16:04 ` Jason Gunthorpe
2023-10-13 16:23 ` Joao Martins
2023-10-13 17:10 ` Joao Martins
2023-10-13 17:16 ` Jason Gunthorpe
2023-10-13 17:23 ` Joao Martins
2023-10-13 17:28 ` Jason Gunthorpe
2023-10-13 17:32 ` Joao Martins
2023-10-13 20:41 ` Alex Williamson
2023-10-13 21:20 ` Joao Martins
2023-10-13 21:51 ` Alex Williamson
2023-10-14 0:02 ` Jason Gunthorpe
2023-10-16 16:25 ` Joao Martins
2023-10-16 16:34 ` Jason Gunthorpe
2023-10-16 17:52 ` Joao Martins [this message]
2023-10-16 18:05 ` Jason Gunthorpe
2023-10-16 18:15 ` Joao Martins
2023-10-16 18:20 ` Jason Gunthorpe
2023-10-16 18:37 ` Joao Martins
2023-10-16 18:50 ` Joao Martins
2023-10-17 12:58 ` Jason Gunthorpe
2023-10-17 15:20 ` Joao Martins
2023-10-17 15:23 ` Jason Gunthorpe
2023-10-17 15:44 ` Joao Martins
2023-10-18 10:19 ` Joao Martins
2023-10-18 12:03 ` Jason Gunthorpe
2023-10-18 12:48 ` Joao Martins
2023-10-18 14:23 ` Jason Gunthorpe
2023-10-18 15:34 ` Joao Martins
2023-10-18 15:43 ` Jason Gunthorpe
2023-09-23 1:24 ` [PATCH v3 03/19] iommu: Add iommu_domain ops for dirty tracking Joao Martins
2023-10-13 16:05 ` Jason Gunthorpe
2023-10-13 16:27 ` Joao Martins
2023-09-23 1:24 ` [PATCH v3 04/19] iommufd: Add a flag to enforce dirty tracking on attach Joao Martins
2023-10-13 15:52 ` Jason Gunthorpe
2023-10-13 16:14 ` Joao Martins
2023-10-13 16:16 ` Jason Gunthorpe
2023-10-13 16:29 ` Joao Martins
2023-09-23 1:24 ` [PATCH v3 05/19] iommufd/selftest: Expand mock_domain with dev_flags Joao Martins
2023-10-13 16:02 ` Jason Gunthorpe
2023-10-13 16:21 ` Joao Martins
2023-09-23 1:24 ` [PATCH v3 06/19] iommufd/selftest: Test IOMMU_HWPT_ALLOC_ENFORCE_DIRTY Joao Martins
2023-09-23 1:24 ` [PATCH v3 07/19] iommufd: Dirty tracking data support Joao Martins
2023-09-23 1:40 ` Joao Martins
2023-10-17 12:06 ` Joao Martins
2023-10-17 15:29 ` Jason Gunthorpe
2023-10-17 15:51 ` Joao Martins
2023-10-17 16:01 ` Jason Gunthorpe
2023-10-17 16:51 ` Joao Martins
2023-10-17 17:13 ` Jason Gunthorpe
2023-10-17 17:30 ` Joao Martins
2023-10-17 18:14 ` Joao Martins
2023-09-23 1:25 ` [PATCH v3 08/19] iommufd: Add IOMMU_HWPT_SET_DIRTY Joao Martins
2023-10-13 16:13 ` Jason Gunthorpe
2023-09-23 1:25 ` [PATCH v3 09/19] iommufd/selftest: Test IOMMU_HWPT_SET_DIRTY Joao Martins
2023-09-23 1:25 ` [PATCH v3 10/19] iommufd: Add IOMMU_HWPT_GET_DIRTY_IOVA Joao Martins
2023-10-13 16:22 ` Jason Gunthorpe
2023-10-13 16:58 ` Joao Martins
2023-10-13 17:03 ` Jason Gunthorpe
2023-09-23 1:25 ` [PATCH v3 11/19] iommufd/selftest: Test IOMMU_HWPT_GET_DIRTY_IOVA Joao Martins
2023-09-23 1:25 ` [PATCH v3 12/19] iommufd: Add capabilities to IOMMU_GET_HW_INFO Joao Martins
2023-09-23 1:25 ` [PATCH v3 13/19] iommufd/selftest: Test out_capabilities in IOMMU_GET_HW_INFO Joao Martins
2023-09-23 1:25 ` [PATCH v3 14/19] iommufd: Add a flag to skip clearing of IOPTE dirty Joao Martins
2023-09-23 1:25 ` [PATCH v3 15/19] iommufd/selftest: Test IOMMU_GET_DIRTY_IOVA_NO_CLEAR flag Joao Martins
2023-09-23 1:25 ` [PATCH v3 16/19] iommu/amd: Add domain_alloc_user based domain allocation Joao Martins
2023-10-17 2:00 ` Suthikulpanit, Suravee
2023-10-17 9:07 ` Joao Martins
2023-10-17 13:10 ` Jason Gunthorpe
2023-10-17 14:14 ` Joao Martins
2023-10-17 14:37 ` Joao Martins
2023-10-17 15:32 ` Jason Gunthorpe
2023-10-18 8:29 ` Vasant Hegde
2023-09-23 1:25 ` [PATCH v3 17/19] iommu/amd: Access/Dirty bit support in IOPTEs Joao Martins
2023-10-04 17:01 ` Joao Martins
2023-10-17 8:18 ` Suthikulpanit, Suravee
2023-10-17 9:54 ` Joao Martins
2023-10-17 18:32 ` Joao Martins
2023-10-17 18:49 ` Jason Gunthorpe
2023-10-17 19:03 ` Joao Martins
2023-10-17 22:04 ` Joao Martins
2023-10-18 11:47 ` Suthikulpanit, Suravee
2023-10-18 20:40 ` Joao Martins
2023-10-18 11:46 ` Suthikulpanit, Suravee
2023-10-18 13:04 ` Suthikulpanit, Suravee
2023-10-18 13:17 ` Joao Martins
2023-10-18 13:31 ` Joao Martins
2023-10-18 15:50 ` Jason Gunthorpe
2023-09-23 1:25 ` [PATCH v3 18/19] iommu/amd: Print access/dirty bits if supported Joao Martins
2023-10-17 3:48 ` Suthikulpanit, Suravee
2023-10-17 9:07 ` Joao Martins
2023-10-18 8:32 ` Vasant Hegde
2023-10-18 8:53 ` Joao Martins
2023-10-18 9:03 ` Vasant Hegde
2023-10-18 9:05 ` Joao Martins
2023-10-18 15:52 ` Jason Gunthorpe
2023-10-18 15:55 ` Joao Martins
2023-09-23 1:25 ` [PATCH v3 19/19] iommu/intel: Access/Dirty bit support for SL domains Joao Martins
2023-09-25 7:01 ` Baolu Lu
2023-09-25 9:08 ` Joao Martins
2023-10-16 2:26 ` Baolu Lu
2023-10-16 0:51 ` Baolu Lu
2023-10-16 10:42 ` Joao Martins
2023-10-16 12:41 ` Baolu Lu
2023-10-16 1:37 ` Baolu Lu
2023-10-16 10:57 ` Joao Martins
2023-10-16 11:42 ` Jason Gunthorpe
2023-10-16 12:58 ` Baolu Lu
2023-10-16 12:59 ` Jason Gunthorpe
2023-10-16 13:01 ` Baolu Lu
2023-10-17 10:51 ` Joao Martins
2023-10-17 12:41 ` Baolu Lu
2023-10-17 14:16 ` Joao Martins
2023-10-17 14:25 ` Joao Martins
2023-10-18 2:06 ` Baolu Lu
2023-10-16 2:07 ` Baolu Lu
2023-10-16 11:26 ` Joao Martins
2023-10-16 16:00 ` Joao Martins
2023-10-17 2:08 ` Baolu Lu
2023-10-17 11:22 ` Joao Martins
2023-10-17 12:49 ` Baolu Lu
2023-10-17 14:19 ` Joao Martins
2023-10-17 13:10 ` Jason Gunthorpe
2023-10-17 14:11 ` Joao Martins
2023-10-17 15:31 ` Jason Gunthorpe
2023-10-17 15:54 ` Joao Martins
2023-10-16 2:21 ` Baolu Lu
2023-10-16 11:39 ` Joao Martins
2023-10-16 13:06 ` Baolu Lu
2023-09-26 8:58 ` [PATCH v3 00/19] IOMMUFD Dirty Tracking Shameerali Kolothum Thodi
2023-10-13 16:29 ` Jason Gunthorpe
2023-10-13 18:11 ` Joao Martins
2023-10-14 7:53 ` Baolu Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8a13a2e5-9bc1-4aeb-ad39-657ee95d5a21@oracle.com \
--to=joao.m.martins@oracle.com \
--cc=alex.williamson@redhat.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=nicolinc@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=will@kernel.org \
--cc=yi.l.liu@intel.com \
--cc=yi.y.sun@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).