All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mostafa Saleh <smostafa@google.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: acpica-devel@lists.linux.dev, Hanjun Guo <guohanjun@huawei.com>,
	iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
	Kevin Tian <kevin.tian@intel.com>,
	kvm@vger.kernel.org, Len Brown <lenb@kernel.org>,
	linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	Lorenzo Pieralisi <lpieralisi@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Robert Moore <robert.moore@intel.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Will Deacon <will@kernel.org>,
	Alex Williamson <alex.williamson@redhat.com>,
	Eric Auger <eric.auger@redhat.com>,
	Jean-Philippe Brucker <jean-philippe@linaro.org>,
	Moritz Fischer <mdf@kernel.org>,
	Michael Shavit <mshavit@google.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	patches@lists.linux.dev,
	Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
Subject: Re: [PATCH v2 8/8] iommu/arm-smmu-v3: Support IOMMU_DOMAIN_NESTED
Date: Mon, 2 Sep 2024 09:57:45 +0000	[thread overview]
Message-ID: <ZtWMGQAdR6sjBmer@google.com> (raw)
In-Reply-To: <20240830170426.GV3773488@nvidia.com>

On Fri, Aug 30, 2024 at 02:04:26PM -0300, Jason Gunthorpe wrote:
> On Fri, Aug 30, 2024 at 04:09:04PM +0000, Mostafa Saleh wrote:
> > Hi Jason,
> > 
> > On Tue, Aug 27, 2024 at 12:51:38PM -0300, Jason Gunthorpe wrote:
> > > For SMMUv3 a IOMMU_DOMAIN_NESTED is composed of a S2 iommu_domain acting
> > > as the parent and a user provided STE fragment that defines the CD table
> > > and related data with addresses translated by the S2 iommu_domain.
> > > 
> > > The kernel only permits userspace to control certain allowed bits of the
> > > STE that are safe for user/guest control.
> > > 
> > > IOTLB maintenance is a bit subtle here, the S1 implicitly includes the S2
> > > translation, but there is no way of knowing which S1 entries refer to a
> > > range of S2.
> > > 
> > > For the IOTLB we follow ARM's guidance and issue a CMDQ_OP_TLBI_NH_ALL to
> > > flush all ASIDs from the VMID after flushing the S2 on any change to the
> > > S2.
> > > 
> > > Similarly we have to flush the entire ATC if the S2 is changed.
> > > 
> > 
> > I am still reviewing this patch, but just some quick questions.
> > 
> > 1) How does userspace do IOTLB maintenance for S1 in that case?
> 
> See
> 
> https://lore.kernel.org/linux-iommu/cover.1724776335.git.nicolinc@nvidia.com
> 
> Patch 17

Thanks, I had this series on my radar, I will check it by this week.

>
> Really, this series and that series must be together. We have a patch
> planning issue to sort out here as well, all 27 should go together
> into the same merge window.
> 
> > 2) Is there a reason the UAPI is designed this way?
> > The way I imagined this, is that userspace will pass the pointer to the CD
> > (+ format) not the STE (or part of it).
> 
> Yes, we need more information from the STE than just that. EATS and
> STALL for instance. And the cachability below. Who knows what else in
> the future.

But for example if that was extended later, how can user space know
which fields are allowed and which are not?

> 
> We also want to support the V=0, Bypass and Abort STE configurations
> under the nesting domain (V, CFG required) so that the VIOMMU can
> remain affiliated with the STE in all cases. This is necessary to
> allow VIOMMU event reporting to always work.
> 
> Looking at the masks:
> 
> STRTAB_STE_0_NESTING_ALLOWED = 0xf80fffffffffffff
> STRTAB_STE_1_NESTING_ALLOWED = 0x380000ff
> 
> So we do use alot of the bits. Reformatting from the native HW format
> into something else doesn't seem better for VMM or kernel..
> 
> This is similar to the invalidation design where we also just forward
> the invalidation command as is in native HW format, and how IDR is
> done the same.
> 
> Overall this sort of direct transparency is how I prefer to see these
> kinds of iommufd HW specific interfaces designed. From a lot of
> experience here, arbitary marshall/unmarshall is often an
> antipattern :)

Is there any documentation for the (proposed) SMMUv3 UAPI for IOMMUFD?
I can understand reading IDRs from userspace (with some sanitation),
but adding some more logic to map vSTE to STE needs more care of what
kind of semantics are provided.

Also, I am working on similar interface for pKVM where we “paravirtualize”
the SMMU access for guests, it’s different semantics, but I hope we can
align that with IOMMUFD (but it’s nowhere near upstream now)

I see you are talking in LPC about IOMMUFD:
https://lore.kernel.org/linux-iommu/0-v1-01fa10580981+1d-iommu_pt_jgg@nvidia.com/T/#m2dbb08f3bf8506a492bc7dda2de662e42371e683

Do you have any plans to talk about this also?

Thanks,
Mostafa
> 
> > Making user space messing with shareability and cacheability of S1 CD access
> > feels odd. (Although CD configure page table access which is similar).
> 
> As I understand it, the walk of the CD table will be constrained by
> the S2FWB, just like all the other accesses by the guest.
> 
> So we just take a consistent approach of allowing the guest to provide
> memattrs in the vSTE, CD, and S1 page table and rely on the HW's S2FWB
> to police it.
> 
> As you say there are lots of memattr type bits under direct guest
> control, it doesn't necessarily make alot of sense to permit
> everything in those contexts and then add extra code to do something
> different here.
> 
> Though I agree it looks odd, it is self-consistent.
> 
> Jason

  reply	other threads:[~2024-09-02  9:57 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-27 15:51 [PATCH v2 0/8] Initial support for SMMUv3 nested translation Jason Gunthorpe
2024-08-27 15:51 ` [PATCH v2 1/8] vfio: Remove VFIO_TYPE1_NESTING_IOMMU Jason Gunthorpe
2024-08-30  7:40   ` Tian, Kevin
2024-08-27 15:51 ` [PATCH v2 2/8] iommu/arm-smmu-v3: Use S2FWB when available Jason Gunthorpe
2024-08-27 19:48   ` Nicolin Chen
2024-08-28 18:30     ` Jason Gunthorpe
2024-08-28 19:47       ` Nicolin Chen
2024-08-28 19:50   ` Nicolin Chen
2024-08-30  7:44   ` Tian, Kevin
2024-08-30  7:56     ` Nicolin Chen
2024-08-30  8:01       ` Tian, Kevin
2024-08-30 15:12   ` Mostafa Saleh
2024-08-30 16:40     ` Jason Gunthorpe
2024-09-02  9:29       ` Mostafa Saleh
2024-09-03  0:05         ` Jason Gunthorpe
2024-09-03  7:57           ` Mostafa Saleh
2024-09-03 23:33             ` Jason Gunthorpe
2024-09-10 10:55               ` Mostafa Saleh
2024-09-10 20:22                 ` Jason Gunthorpe
2024-09-17  9:48                   ` Mostafa Saleh
2024-09-04 14:20   ` Shameerali Kolothum Thodi
2024-09-04 15:00     ` Jason Gunthorpe
2024-09-10 11:25       ` Shameerali Kolothum Thodi
2024-09-11 22:52         ` Jason Gunthorpe
2024-08-27 15:51 ` [PATCH v2 3/8] ACPICA: IORT: Update for revision E.f Jason Gunthorpe
2024-08-29 10:14   ` Rafael J. Wysocki
2024-08-27 15:51 ` [PATCH v2 4/8] ACPI/IORT: Support CANWBS memory access flag Jason Gunthorpe
2024-08-30  7:52   ` Tian, Kevin
2024-08-30 13:54     ` Jason Gunthorpe
2024-09-03  7:14       ` Tian, Kevin
2024-08-27 15:51 ` [PATCH v2 5/8] iommu/arm-smmu-v3: Report IOMMU_CAP_ENFORCE_CACHE_COHERENCY for CANWBS Jason Gunthorpe
2024-08-27 20:12   ` Nicolin Chen
2024-08-28 19:12     ` Jason Gunthorpe
2024-08-30 15:19   ` Mostafa Saleh
2024-08-30 17:10     ` Jason Gunthorpe
2024-08-27 15:51 ` [PATCH v2 6/8] iommu/arm-smmu-v3: Support IOMMU_GET_HW_INFO via struct arm_smmu_hw_info Jason Gunthorpe
2024-08-30  7:55   ` Tian, Kevin
2024-08-30 15:23   ` Mostafa Saleh
2024-08-30 17:16     ` Jason Gunthorpe
2024-09-02 10:11       ` Mostafa Saleh
2024-09-03  0:16         ` Jason Gunthorpe
2024-09-03  8:34           ` Mostafa Saleh
2024-09-03 23:40             ` Jason Gunthorpe
2024-09-04  7:11               ` Shameerali Kolothum Thodi
2024-09-04 12:01                 ` Jason Gunthorpe
2024-09-06 11:19                   ` Mostafa Saleh
2024-08-27 15:51 ` [PATCH v2 7/8] iommu/arm-smmu-v3: Implement IOMMU_HWPT_ALLOC_NEST_PARENT Jason Gunthorpe
2024-08-27 20:16   ` Nicolin Chen
2024-08-30  7:58   ` Tian, Kevin
2024-08-30 13:55     ` Jason Gunthorpe
2024-08-30 15:27   ` Mostafa Saleh
2024-08-30 17:18     ` Jason Gunthorpe
2024-09-02  8:57       ` Mostafa Saleh
2024-08-27 15:51 ` [PATCH v2 8/8] iommu/arm-smmu-v3: Support IOMMU_DOMAIN_NESTED Jason Gunthorpe
2024-08-27 21:23   ` Nicolin Chen
2024-08-28 19:01     ` Jason Gunthorpe
2024-08-28 19:27       ` Nicolin Chen
2024-08-30  8:16   ` Tian, Kevin
2024-08-30 14:13     ` Jason Gunthorpe
2024-08-30 14:39     ` Jason Gunthorpe
2024-08-30 16:09   ` Mostafa Saleh
2024-08-30 16:59     ` Nicolin Chen
2024-08-30 17:04     ` Jason Gunthorpe
2024-09-02  9:57       ` Mostafa Saleh [this message]
2024-09-03  0:30         ` Jason Gunthorpe
2024-09-03  1:13           ` Nicolin Chen
2024-09-03  9:00           ` Mostafa Saleh
2024-09-03 23:55             ` Jason Gunthorpe
2024-09-06 11:07               ` Mostafa Saleh
2024-09-06 13:34                 ` Jason Gunthorpe
2024-09-10 11:12                   ` Mostafa Saleh
2024-09-15 21:39                     ` Jason Gunthorpe
2024-09-06 18:28       ` Jason Gunthorpe
2024-09-06 18:49         ` Nicolin Chen
2024-09-06 23:15           ` Jason Gunthorpe
2024-08-27 21:31 ` [PATCH v2 0/8] Initial support for SMMUv3 nested translation Nicolin Chen
2024-08-28 16:31   ` Shameerali Kolothum Thodi
2024-08-28 17:14     ` Nicolin Chen
2024-08-28 18:06       ` Shameerali Kolothum Thodi
2024-08-28 18:12         ` Nicolin Chen
2024-08-29 13:14           ` Shameerali Kolothum Thodi
2024-08-29 14:52             ` Shameerali Kolothum Thodi
2024-08-29 16:10               ` Nicolin Chen
2024-08-30  9:07                 ` Shameerali Kolothum Thodi
2024-08-30 17:01                   ` Nicolin Chen
2024-09-12  3:42   ` Zhangfei Gao
2024-09-12  4:05     ` Nicolin Chen
2024-09-12  4:25     ` Baolu Lu
2024-09-12  7:32       ` Zhangfei Gao
2024-10-15  3:21       ` Zhangfei Gao
2024-10-15 13:09         ` Jason Gunthorpe
2024-10-17  1:53           ` Zhangfei Gao
2024-10-17 11:57             ` Jason Gunthorpe
2024-10-16  2:23 ` Zhangfei Gao
2024-10-16 11:53   ` 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=ZtWMGQAdR6sjBmer@google.com \
    --to=smostafa@google.com \
    --cc=acpica-devel@lists.linux.dev \
    --cc=alex.williamson@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=guohanjun@huawei.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=kvm@vger.kernel.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=lpieralisi@kernel.org \
    --cc=mdf@kernel.org \
    --cc=mshavit@google.com \
    --cc=nicolinc@nvidia.com \
    --cc=patches@lists.linux.dev \
    --cc=rafael@kernel.org \
    --cc=robert.moore@intel.com \
    --cc=robin.murphy@arm.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=sudeep.holla@arm.com \
    --cc=will@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.