From: Robin Murphy <robin.murphy@arm.com>
To: Will Deacon <will@kernel.org>, Peter Griffin <peter.griffin@linaro.org>
Cc: "Joerg Roedel (AMD)" <joro@8bytes.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Pranjal Shrivastava <praan@google.com>,
Daniel Mentz <danielmentz@google.com>,
Mostafa Saleh <smostafa@google.com>,
linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel-team@android.com, tudor.ambarus@linaro.org,
andre.draszik@linaro.org, willmcvicker@google.com,
jyescas@google.com
Subject: Re: [PATCH 0/2] Add arm-smmu-v3 support for instcfg data override feature
Date: Mon, 10 Aug 2026 18:16:56 +0100 [thread overview]
Message-ID: <77edba4a-b6b0-4b50-9328-7c177a0af283@arm.com> (raw)
In-Reply-To: <anmvW1LkypAGW6Sc@willie-the-truck>
On 10/08/2026 12:00 pm, Will Deacon wrote:
> On Fri, Aug 07, 2026 at 04:25:11PM +0100, Peter Griffin wrote:
>> On Mon, 27 Jul 2026 at 11:53, Robin Murphy <robin.murphy@arm.com> wrote:
>>>
>>> On 26/07/2026 2:16 pm, Will Deacon wrote:
>>>> On Fri, Jul 24, 2026 at 01:39:41PM +0100, Peter Griffin wrote:
>>>>> These two patches add support for a new "arm,instdata-override" DT property
>>>>> that enables the override of the instruction/data attribute of incoming
>>>>> traffic to Data by setting the INSTCFG override bits.
>>>>>
>>>>> It is intended to be specified when the smmu can't guarantee that these
>>>>> attributes are provided correctly from the client device.
>>>>
>>>> This is going to need an in-tree user and a much more detailed
>>>> description of what is being worked around before we consider this for
>>>> inclusion.
>>
>> Regarding an in-tree user, I haven't sent the Device Tree (DT) patch
>> yet for Laguna SoC which adds the smmu nodes and this property because
>> 1) I want to land the initial SoC/board DT first
>> 2) I want agreement on the DT property name. Currently I used
>> "arm,instdata-override" which is what downstream used. However, since
>> this is intended to work around silicon errata something like
>> "google,lga-instcfg-data-override" might be more appropriate?
>>
>> For Laguna SoC the first in-tree user of this is the amb_smmu smmu
>> instance which is used by the Synopsis dwc3 IP. The Laguna dwc3 glue
>> driver is already upstream at drivers/usb/dwc3/dwc3-google.c
>>
>>>>
>>>> In particular, if a particular client is emitting data reads as
>>>> instructions, then a better work around would be to avoid mapping its
>>>> domains using IOMMU_NOEXEC. But I can't tell what's going on from the
>>>> limited description provided here.
>>>
>>> Unless it's also emitting the privileged bit and thus falling foul of
>>> the implicit Unpriv-W -> Priv-XN rule, but then we also have the means
>>> to deal with devices which actually do that themselves (hello pl330...),
>>> so that would seemingly only leave the case of some innocent piece of
>>> AMBA-interfaced IP which doesn't expect to need special attributes, but
>>> the system integrator has gone out of their way to tie the AxPROT bits
>>> to some wacky value, which I would put in "erratum workaround" territory.
>>>
>>
>> You're correct Robin. It is an erratum workaround for the Laguna SoC
>> due to some custom usage of the AxPROT bits which differs from the
>> standard ARM SMMU handling for Privileged/Unprivileged and
>> Instruction/Data transaction attributes. The effect is all
>> transactions appear to the SMMU as "Privileged Instruction" accesses.
>
> Ah, so this sounds like what Robin was worried about.
>
>> The software workaround in this series enables the SMMU's INSTCFG
>> override feature to ignore the incoming value and treat all SMMU
>> transactions as "Data".
>>
>> One small clarification: in the cover letter I incorrectly said this
>> was set only for some SMMU IP instances, but that is incorrect. It is
>> actually set on *all* arm-smmu-v3 IP instances in the Laguna SoC.
>>
>> Does the above provide the additional detail you need Will?
>
> So it sounds like using the instcfg override on this hardware still breaks
> IOMMU_PRIV and IOMMU_NOEXEC:
>
> 1. If you don't pass IOMMU_PRIV, you still get privileged transactions
However this is inherently true of VMSA stage 1 anyway - I admit I had
to double-check, but we don't have any user-only permissions (other than
perhaps execute as implied by explicit or implicit PXN). IOMMU_PRIV can
only _remove_ unprivileged access.
> 2. If you don't pass IOMMU_NOEXEC, you do not get execute permission
>
> Is that correct?
>
> Perhaps it would be better to override PRIVCFG to force unprivileged,
> then reject IOMMU_PRIV and ignore IOMMU_NOEXEC?
From what Daniel said, it sounds like the privileged attribute is still
the doing of the device itself rather than the integration issue in this
case, so while nobbling PRIVCFG might also achieve the end result of
making IOMMU_READ | IOMMU_WRITE pages mostly not fault on reads, it
seems less appropriate as a workaround. Particularly since IOMMU_PRIV is
exposed via a general DMA API attribute, while IOMMU_NOEXEC is only
accessible to dedicated IOMMU API/io-pgtable users.
Thanks,
Robin.
prev parent reply other threads:[~2026-08-10 17:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-24 12:39 [PATCH 0/2] Add arm-smmu-v3 support for instcfg data override feature Peter Griffin
2026-07-24 12:39 ` [PATCH 1/2] dt-bindings: iommu: add arm,instdata-override property documentation Peter Griffin
2026-07-24 12:39 ` [PATCH 2/2] iommu/arm-smmu-v3: Override for Inst/Data attribute Peter Griffin
2026-07-24 18:04 ` Nicolin Chen
2026-08-07 14:37 ` Peter Griffin
2026-08-07 16:43 ` Nicolin Chen
2026-08-10 14:15 ` Jason Gunthorpe
2026-08-10 14:43 ` Robin Murphy
2026-07-26 13:16 ` [PATCH 0/2] Add arm-smmu-v3 support for instcfg data override feature Will Deacon
2026-07-27 10:53 ` Robin Murphy
2026-08-07 15:25 ` Peter Griffin
2026-08-07 18:21 ` Daniel Mentz
2026-08-07 22:47 ` Rob Herring
2026-08-10 18:03 ` Robin Murphy
2026-08-10 11:00 ` Will Deacon
2026-08-10 17:16 ` Robin Murphy [this message]
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=77edba4a-b6b0-4b50-9328-7c177a0af283@arm.com \
--to=robin.murphy@arm.com \
--cc=andre.draszik@linaro.org \
--cc=conor+dt@kernel.org \
--cc=danielmentz@google.com \
--cc=devicetree@vger.kernel.org \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=jyescas@google.com \
--cc=kernel-team@android.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peter.griffin@linaro.org \
--cc=praan@google.com \
--cc=robh@kernel.org \
--cc=smostafa@google.com \
--cc=tudor.ambarus@linaro.org \
--cc=will@kernel.org \
--cc=willmcvicker@google.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