From: Nicolin Chen <nicolinc@nvidia.com>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: "Liu, Yi L" <yi.l.liu@intel.com>,
"jgg@nvidia.com" <jgg@nvidia.com>,
"will@kernel.org" <will@kernel.org>,
"joro@8bytes.org" <joro@8bytes.org>,
"suravee.suthikulpanit@amd.com" <suravee.suthikulpanit@amd.com>,
"robin.murphy@arm.com" <robin.murphy@arm.com>,
"dwmw2@infradead.org" <dwmw2@infradead.org>,
"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>,
"shuah@kernel.org" <shuah@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kselftest@vger.kernel.org"
<linux-kselftest@vger.kernel.org>,
"eric.auger@redhat.com" <eric.auger@redhat.com>,
"jean-philippe@linaro.org" <jean-philippe@linaro.org>,
"mdf@kernel.org" <mdf@kernel.org>,
"mshavit@google.com" <mshavit@google.com>,
"shameerali.kolothum.thodi@huawei.com"
<shameerali.kolothum.thodi@huawei.com>,
"smostafa@google.com" <smostafa@google.com>
Subject: Re: [PATCH v2 04/19] iommufd: Allow pt_id to carry viommu_id for IOMMU_HWPT_ALLOC
Date: Thu, 26 Sep 2024 18:25:43 -0700 [thread overview]
Message-ID: <ZvYJl1AQWXWX0BQL@Asurada-Nvidia> (raw)
In-Reply-To: <BN9PR11MB52763F8856FE20ACACDDCCE68C6B2@BN9PR11MB5276.namprd11.prod.outlook.com>
On Fri, Sep 27, 2024 at 12:43:16AM +0000, Tian, Kevin wrote:
> > From: Nicolin Chen <nicolinc@nvidia.com>
> > Sent: Friday, September 27, 2024 4:11 AM
> >
> > On Thu, Sep 26, 2024 at 04:50:46PM +0800, Yi Liu wrote:
> > > On 2024/8/28 00:59, Nicolin Chen wrote:
> > > > Now a VIOMMU can wrap a shareable nested parent HWPT. So, it can act
> > like
> > > > a nested parent HWPT to allocate a nested HWPT.
> > > >
> > > > Support that in the IOMMU_HWPT_ALLOC ioctl handler, and update its
> > kdoc.
> > > >
> > > > Also, associate a viommu to an allocating nested HWPT.
> > >
> > > it still not quite clear to me what vIOMMU obj stands for. Here, it is a
> > > wrapper of s2 hpwt IIUC. But in the cover letter, vIOMMU obj can instanced
> > > per the vIOMMU units in VM.
> >
> > Yea, the implementation in this version is merely a wrapper. I
> > had a general introduction of vIOMMU in the other reply. And I
> > will put something similar in the next version of the series,
> > so the idea would be bigger than a wrapper.
> >
> > > Does it mean each vIOMMU of VM can only have
> > > one s2 HWPT?
> >
> > Giving some examples here:
> > - If a VM has 1 vIOMMU, there will be 1 vIOMMU object in the
> > kernel holding one S2 HWPT.
> > - If a VM has 2 vIOMMUs, there will be 2 vIOMMU objects in the
> > kernel that can hold two different S2 HWPTs, or share one S2
> > HWPT (saving memory).
> >
>
> this is not consistent with previous discussion.
>
> even for 1 vIOMMU per VM there could be multiple vIOMMU objects
> created in the kernel in case the devices connected to the VM-visible
> vIOMMU locate behind different physical SMMUs.
>
> we don't expect one vIOMMU object to span multiple physical ones.
I think it's consistent, yet we had different perspectives for a
virtual IOMMU instance in the VM: Jason's suggested design for a
VM is to have 1-to-1 mapping between virtual IOMMU instances and
physical IOMMU instances. So, one vIOMMU is backed by one pIOMMU
only, i.e. one vIOMMU object in the kernel.
Your case seems to be the model where a VM has one giant virtual
IOMMU instance backed by multiple physical IOMMUs, in which case
all the passthrough devices, regardless their associated pIOMMUs,
are connected to this shared virtual IOMMU. And yes, this shared
virtual IOMMU can have multiple vIOMMU objects.
Regarding these two models, I had listed their pros/cons at (2):
https://lore.kernel.org/qemu-devel/cover.1719361174.git.nicolinc@nvidia.com/
(Not 100% sure) VT-d might not have something like vCMDQ, so it
can stay in the shared model to simplify certain things, though
I feel it may face some similar situation like mapping multiple
physical MMIO regions to a single virtual region (undoable!) if
some day intel has some similar HW-accelerated feature?
Thanks
Nic
next prev parent reply other threads:[~2024-09-27 1:26 UTC|newest]
Thread overview: 149+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-27 16:59 [PATCH v2 00/19] iommufd: Add VIOMMU infrastructure (Part-1) Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 01/19] iommufd: Reorder struct forward declarations Nicolin Chen
2024-09-05 15:44 ` Jason Gunthorpe
2024-08-27 16:59 ` [PATCH v2 02/19] iommufd/viommu: Add IOMMUFD_OBJ_VIOMMU and IOMMU_VIOMMU_ALLOC ioctl Nicolin Chen
2024-09-01 2:39 ` Baolu Lu
2024-09-02 5:27 ` Nicolin Chen
2024-09-04 16:26 ` Jason Gunthorpe
2024-09-04 17:29 ` Nicolin Chen
2024-09-04 23:37 ` Jason Gunthorpe
2024-09-05 3:07 ` Nicolin Chen
2024-09-12 3:39 ` Nicolin Chen
2024-09-15 21:10 ` Jason Gunthorpe
2024-09-05 15:53 ` Jason Gunthorpe
2024-09-05 17:10 ` Nicolin Chen
2024-09-05 17:41 ` Jason Gunthorpe
2024-09-05 18:04 ` Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 03/19] iommu: Pass in a viommu pointer to domain_alloc_user op Nicolin Chen
2024-09-05 15:54 ` Jason Gunthorpe
2024-09-05 17:19 ` Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 04/19] iommufd: Allow pt_id to carry viommu_id for IOMMU_HWPT_ALLOC Nicolin Chen
2024-09-05 15:56 ` Jason Gunthorpe
2024-09-26 8:50 ` Yi Liu
2024-09-26 20:10 ` Nicolin Chen
2024-09-27 0:43 ` Tian, Kevin
2024-09-27 1:25 ` Nicolin Chen [this message]
2024-09-27 2:23 ` Tian, Kevin
2024-09-27 2:57 ` Nicolin Chen
2024-09-27 5:38 ` Yi Liu
2024-09-27 6:02 ` Nicolin Chen
2024-09-27 11:59 ` Jason Gunthorpe
2024-09-27 19:52 ` Nicolin Chen
2024-09-27 12:12 ` Yi Liu
2024-09-27 20:29 ` Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 05/19] iommufd/selftest: Add IOMMU_VIOMMU_ALLOC test coverage Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 06/19] iommufd/viommu: Add IOMMU_VIOMMU_SET/UNSET_VDEV_ID ioctl Nicolin Chen
2024-09-05 16:03 ` Jason Gunthorpe
2024-09-05 17:37 ` Nicolin Chen
2024-09-05 17:43 ` Jason Gunthorpe
2024-09-05 20:14 ` Nicolin Chen
2024-09-11 6:19 ` Tian, Kevin
2024-09-11 7:11 ` Nicolin Chen
2024-09-11 7:18 ` Tian, Kevin
2024-09-11 7:47 ` Nicolin Chen
2024-10-01 8:54 ` Nicolin Chen
2024-10-01 13:46 ` Jason Gunthorpe
2024-10-01 18:45 ` Nicolin Chen
2024-09-27 13:50 ` Mostafa Saleh
2024-09-27 14:01 ` Jason Gunthorpe
2024-09-27 14:22 ` Mostafa Saleh
2024-09-27 14:58 ` Jason Gunthorpe
2024-09-27 15:59 ` Mostafa Saleh
2024-10-04 4:32 ` Alexey Kardashevskiy
2024-10-04 5:33 ` Nicolin Chen
2024-10-04 11:41 ` Jason Gunthorpe
2024-10-04 18:13 ` Nicolin Chen
2024-10-04 18:50 ` Jason Gunthorpe
2024-10-04 19:25 ` Nicolin Chen
2024-10-04 20:17 ` Jason Gunthorpe
2024-10-04 20:33 ` Nicolin Chen
2024-10-07 17:18 ` Jason Gunthorpe
2025-04-30 7:54 ` Alexey Kardashevskiy
2025-04-30 7:58 ` Nicolin Chen
2025-05-05 17:08 ` Jason Gunthorpe
2025-05-06 2:53 ` Nicolin Chen
2025-05-06 4:35 ` Alexey Kardashevskiy
2025-05-06 4:46 ` Tian, Kevin
2025-05-06 12:58 ` Jason Gunthorpe
2025-05-06 19:55 ` Nicolin Chen
2025-05-07 12:28 ` Jason Gunthorpe
2025-05-07 11:18 ` Alexey Kardashevskiy
2025-05-07 12:24 ` Jason Gunthorpe
2025-05-09 2:57 ` Alexey Kardashevskiy
2025-05-09 22:07 ` Jason Gunthorpe
2025-05-10 12:51 ` Alexey Kardashevskiy
2025-05-12 15:31 ` Jason Gunthorpe
2024-08-27 16:59 ` [PATCH v2 07/19] iommufd/selftest: Add IOMMU_VIOMMU_SET/UNSET_VDEV_ID test coverage Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 08/19] iommufd/viommu: Add cache_invalidate for IOMMU_VIOMMU_TYPE_DEFAULT Nicolin Chen
2024-09-05 16:05 ` Jason Gunthorpe
2024-08-27 16:59 ` [PATCH v2 09/19] iommufd: Allow hwpt_id to carry viommu_id for IOMMU_HWPT_INVALIDATE Nicolin Chen
2024-09-05 16:10 ` Jason Gunthorpe
2024-08-27 16:59 ` [PATCH v2 10/19] iommufd/viommu: Add vdev_id helpers for IOMMU drivers Nicolin Chen
2024-09-05 16:14 ` Jason Gunthorpe
2024-09-05 17:53 ` Nicolin Chen
2024-09-11 23:11 ` Jason Gunthorpe
2024-09-12 3:17 ` Nicolin Chen
2024-10-05 5:19 ` Nicolin Chen
2024-10-07 15:38 ` Jason Gunthorpe
2024-10-07 16:36 ` Nicolin Chen
2024-10-07 17:11 ` Jason Gunthorpe
2024-10-07 17:25 ` Nicolin Chen
2024-10-07 18:28 ` Jason Gunthorpe
2024-10-07 19:56 ` Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 11/19] iommu: Add iommu_copy_struct_from_full_user_array helper Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 12/19] iommufd/selftest: Add mock_viommu_invalidate_user op Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 13/19] iommufd/selftest: Add IOMMU_TEST_OP_DEV_CHECK_CACHE test command Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 14/19] iommufd/selftest: Add VIOMMU coverage for IOMMU_HWPT_INVALIDATE ioctl Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 15/19] iommufd/viommu: Add iommufd_viommu_to_parent_domain helper Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 16/19] iommu/arm-smmu-v3: Add arm_smmu_cache_invalidate_user Nicolin Chen
2024-09-05 16:23 ` Jason Gunthorpe
2024-09-05 17:56 ` Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 17/19] iommu/arm-smmu-v3: Add arm_smmu_viommu_cache_invalidate Nicolin Chen
2024-09-05 16:20 ` Jason Gunthorpe
2024-09-05 18:00 ` Nicolin Chen
2024-09-05 18:21 ` Jason Gunthorpe
2024-09-11 6:25 ` Tian, Kevin
2024-09-11 7:20 ` Nicolin Chen
2024-09-11 7:50 ` Baolu Lu
2024-09-11 8:17 ` Tian, Kevin
2024-09-11 8:19 ` Baolu Lu
2024-09-11 21:08 ` Nicolin Chen
2024-09-12 4:45 ` Baolu Lu
2024-09-11 8:13 ` Tian, Kevin
2024-09-11 20:53 ` Nicolin Chen
2024-09-11 23:07 ` Jason Gunthorpe
2024-09-13 2:33 ` Tian, Kevin
2024-09-14 14:50 ` Jason Gunthorpe
2024-09-18 8:10 ` Tian, Kevin
2024-09-23 18:34 ` Jason Gunthorpe
2024-09-11 23:00 ` Jason Gunthorpe
2024-08-27 16:59 ` [PATCH v2 18/19] iommu/arm-smmu-v3: Allow ATS for IOMMU_DOMAIN_NESTED Nicolin Chen
2024-08-27 16:59 ` [PATCH v2 19/19] iommu/arm-smmu-v3: Update comments about ATS and bypass Nicolin Chen
2024-09-11 6:12 ` [PATCH v2 00/19] iommufd: Add VIOMMU infrastructure (Part-1) Tian, Kevin
2024-09-11 7:08 ` Nicolin Chen
2024-09-11 7:18 ` Tian, Kevin
2024-09-11 7:40 ` Nicolin Chen
2024-09-11 8:08 ` Tian, Kevin
2024-09-11 20:21 ` Nicolin Chen
2024-10-01 1:55 ` Alexey Kardashevskiy
2024-10-01 3:36 ` Nicolin Chen
2024-10-01 5:06 ` Alexey Kardashevskiy
2024-10-01 13:44 ` Jason Gunthorpe
2024-09-25 10:30 ` Yi Liu
2024-09-25 18:55 ` Nicolin Chen
2024-09-26 8:47 ` Yi Liu
2024-09-26 20:03 ` Nicolin Chen
2024-09-27 2:05 ` Baolu Lu
2024-09-27 6:14 ` Yi Liu
2024-09-27 5:54 ` Yi Liu
2024-09-27 6:32 ` Nicolin Chen
2024-09-27 12:12 ` Yi Liu
2024-09-27 12:20 ` Jason Gunthorpe
2024-09-29 7:19 ` Yi Liu
2024-10-01 13:48 ` Jason Gunthorpe
2024-10-01 18:40 ` Nicolin Chen
2024-09-27 20:44 ` Nicolin Chen
2024-09-29 7:16 ` Yi Liu
2024-09-30 21:59 ` Nicolin Chen
2024-10-09 7:20 ` Yi Liu
2024-10-09 12:31 ` Jason Gunthorpe
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=ZvYJl1AQWXWX0BQL@Asurada-Nvidia \
--to=nicolinc@nvidia.com \
--cc=baolu.lu@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=eric.auger@redhat.com \
--cc=iommu@lists.linux.dev \
--cc=jean-philippe@linaro.org \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=mdf@kernel.org \
--cc=mshavit@google.com \
--cc=robin.murphy@arm.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=shuah@kernel.org \
--cc=smostafa@google.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=will@kernel.org \
--cc=yi.l.liu@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