public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: Nicolin Chen <nicolinc@nvidia.com>
To: Yi Liu <yi.l.liu@intel.com>
Cc: <jgg@nvidia.com>, <kevin.tian@intel.com>, <will@kernel.org>,
	<joro@8bytes.org>, <suravee.suthikulpanit@amd.com>,
	<robin.murphy@arm.com>, <dwmw2@infradead.org>,
	<baolu.lu@linux.intel.com>, <shuah@kernel.org>,
	<linux-kernel@vger.kernel.org>, <iommu@lists.linux.dev>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kselftest@vger.kernel.org>, <eric.auger@redhat.com>,
	<jean-philippe@linaro.org>, <mdf@kernel.org>,
	<mshavit@google.com>, <shameerali.kolothum.thodi@huawei.com>,
	<smostafa@google.com>
Subject: Re: [PATCH v2 00/19] iommufd: Add VIOMMU infrastructure (Part-1)
Date: Fri, 27 Sep 2024 13:44:04 -0700	[thread overview]
Message-ID: <ZvcZFDqu6Xf5P0Xr@Asurada-Nvidia> (raw)
In-Reply-To: <8440cd72-ced6-4887-b724-ce6a1650db13@intel.com>

On Fri, Sep 27, 2024 at 08:12:20PM +0800, Yi Liu wrote:
> On 2024/9/27 14:32, Nicolin Chen wrote:
> > On Fri, Sep 27, 2024 at 01:54:45PM +0800, Yi Liu wrote:
> > > > > > Baolu told me that Intel may have the same: different domain IDs
> > > > > > on different IOMMUs; multiple IOMMU instances on one chip:
> > > > > > https://lore.kernel.org/linux-iommu/cf4fe15c-8bcb-4132-a1fd-b2c8ddf2731b@linux.intel.com/
> > > > > > So, I think we are having the same situation here.
> > > > > 
> > > > > yes, it's called iommu unit or dmar. A typical Intel server can have
> > > > > multiple iommu units. But like Baolu mentioned in that thread, the intel
> > > > > iommu driver maintains separate domain ID spaces for iommu units, which
> > > > > means a given iommu domain has different DIDs when associated with
> > > > > different iommu units. So intel side is not suffering from this so far.
> > > > 
> > > > An ARM SMMU has its own VMID pool as well. The suffering comes
> > > > from associating VMIDs to one shared parent S2 domain.
> > > 
> > > Is this because of the VMID is tied with a S2 domain?
> > 
> > On ARM, yes. VMID is a part of S2 domain stuff.
> > 
> > > > Does a DID per S1 nested domain or parent S2? If it is per S2,
> > > > I think the same suffering applies when we share the S2 across
> > > > IOMMU instances?
> > > 
> > > per S1 I think. The iotlb efficiency is low as S2 caches would be
> > > tagged with different DIDs even the page table is the same. :)
> > 
> > On ARM, the stage-1 is tagged with an ASID (Address Space ID)
> > while the stage-2 is tagged with a VMID. Then an invalidation
> > for a nested S1 domain must require the VMID from the S2. The
> > ASID may be also required if the invalidation is specific to
> > that address space (otherwise, broadcast per VMID.)

> Looks like the nested s1 caches are tagged with both ASID and VMID.

Yea, my understanding is similar. If both stages are enabled for
a nested translation, VMID is tagged for S1 cache too.

> > I feel these two might act somehow similarly to the two DIDs
> > during nested translations?
> 
> not quite the same. Is it possible that the ASID is the same for stage-1?
> Intel VT-d side can have the pasid to be the same. Like the gIOVA, all
> devices use the same ridpasid. Like the scenario I replied to Baolu[1],
> do er choose to use different DIDs to differentiate the caches for the
> two devices.

On ARM, each S1 domain (either a normal stage-1 PASID=0 domain or
an SVA PASID>0 domain) has a unique ASID. So it unlikely has the
situation of two identical ASIDs if they are on the same vIOMMU,
because the ASID pool is per IOMMU instance (whether p or v).

With two vIOMMU instances, there might be the same ASIDs but they
will be tagged with different VMIDs.

> [1]
> https://lore.kernel.org/linux-iommu/4bc9bd20-5aae-440d-84fd-f530d0747c23@intel.com/

Is "gIOVA" a type of invalidation that only uses "address" out of
"PASID, DID and address"? I.e. PASID and DID are not provided via
the invalidation request, so it's going to broadcast all viommus?

Thanks
Nicolin


  parent reply	other threads:[~2024-09-27 20:45 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
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 [this message]
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=ZvcZFDqu6Xf5P0Xr@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