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 2/8] iommu/arm-smmu-v3: Use S2FWB when available
Date: Tue, 3 Sep 2024 07:57:01 +0000 [thread overview]
Message-ID: <ZtbBTX96OWdONhaQ@google.com> (raw)
In-Reply-To: <20240903000546.GD3773488@nvidia.com>
On Mon, Sep 02, 2024 at 09:05:46PM -0300, Jason Gunthorpe wrote:
> On Mon, Sep 02, 2024 at 09:29:53AM +0000, Mostafa Saleh wrote:
> > On Fri, Aug 30, 2024 at 01:40:19PM -0300, Jason Gunthorpe wrote:
> > > On Fri, Aug 30, 2024 at 03:12:54PM +0000, Mostafa Saleh wrote:
> > > > > + /*
> > > > > + * If for some reason the HW does not support DMA coherency then using
> > > > > + * S2FWB won't work. This will also disable nesting support.
> > > > > + */
> > > > > + if (FIELD_GET(IDR3_FWB, reg) &&
> > > > > + (smmu->features & ARM_SMMU_FEAT_COHERENCY))
> > > > > + smmu->features |= ARM_SMMU_FEAT_S2FWB;
> > > > I think that’s for the SMMU coherency which in theory is not related to the
> > > > master which FWB overrides, so this check is not correct.
> > >
> > > Yes, I agree, in theory.
> > >
> > > However the driver today already links them together:
> > >
> > > case IOMMU_CAP_CACHE_COHERENCY:
> > > /* Assume that a coherent TCU implies coherent TBUs */
> > > return master->smmu->features & ARM_SMMU_FEAT_COHERENCY;
> > >
> > > So this hunk was a continuation of that design.
> > >
> > > > What I meant in the previous thread that we should set FWB only for coherent
> > > > masters as (in attach s2):
> > > > if (smmu->features & ARM_SMMU_FEAT_S2FWB && dev_is_dma_coherent(master->dev)
> > > > // set S2FWB in STE
> > >
> > > I think as I explained in that thread, it is not really correct
> > > either. There is no reason to block using S2FWB for non-coherent
> > > masters that are not used with VFIO. The page table will still place
> > > the correct memattr according to the IOMMU_CACHE flag, S2FWB just
> > > slightly changes the encoding.
> >
> > It’s not just the encoding that changes, as
> > - Without FWB, stage-2 combine attributes
> > - While with FWB, it overrides them.
>
> You mean there is some incomming attribute in the transaction
> (obviously not talking PCI here) and S2FWB combines with that?
Yes, stuff as cacheability (as defined by Arm spec)
I am not sure about PCI, but according to the spec:
“PCIe does not contain memory type attributes, and each transaction
takes a system-defined memory type when it progresses into the system”
>
> > So a cacheable mapping in stage-2 can lead to a non-cacheable
> > (or with different cachableitiy attributes) transaction based on the
> > input. I am not sure though if there is such case in the kernel.
>
> If the kernel supplies IOMMU_CACHE then the kernel also skips all the
> cache flushing. So it would be a functional problem if combining was
> causing a non-cachable access through a IOMMU_CACHE S2 already. The
> DMA API would fail if that was the case.
Correct, but it’s not just about cacheable/non-cacheable, as I mentioned
it’s about other attributes also, this is a very niche case, and again I
am not sure if there are devices affected in the kernel, but I just
wanted to highlight it’s not just a different encoding for stage-2.
>
> > > If anything should be changed then it would be the above
> > > IOMMU_CAP_CACHE_COHERENCY test, and I don't know if
> > > dev_is_dma_coherent() would be correct there, or if it should do some
> > > ACPI inspection or what.
> >
> > I agree, I believe that this assumption is not accurate, I am not sure
> > what is the right approach here, but in concept I think we shouldn’t
> > enable FWB for non-coherent devices (using dev_is_dma_coherent() or
> > other check)
>
> The DMA API requires that the cachability rules it sets via
> IOMMU_CACHE are followed. In this way the stricter behavior of S2FWB
> is a benefit, not a draw back.
>
> I'm still not seeing a problm here??
Basically, I believe we shouldn’t set FWB blindly just because it’s supported,
I don’t see how it’s useful for stage-2 only domains.
And I believe making assumptions about VFIO (which actually is not correctly
enforced at the moment) is fragile, and we should only set FWB for coherent
devices in nested setup only where the VMM(or hypervisor) knows better than
the VM.
Thanks,
Mostafa
>
> Jason
next prev parent reply other threads:[~2024-09-03 7:58 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 [this message]
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
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=ZtbBTX96OWdONhaQ@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 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).