From: Nicolin Chen <nicolinc@nvidia.com>
To: Mostafa Saleh <smostafa@google.com>
Cc: <jgg@nvidia.com>, <will@kernel.org>, <robin.murphy@arm.com>,
<joro@8bytes.org>, <linux-arm-kernel@lists.infradead.org>,
<iommu@lists.linux.dev>, <linux-kernel@vger.kernel.org>,
<skolothumtho@nvidia.com>, <praan@google.com>,
<xueshuai@linux.alibaba.com>
Subject: Re: [PATCH rc v3 1/4] iommu/arm-smmu-v3: Add ignored bits to fix STE update sequence
Date: Mon, 15 Dec 2025 12:51:03 -0800 [thread overview]
Message-ID: <aUB0t4MSf624Wwmw@Asurada-Nvidia> (raw)
In-Reply-To: <aT87A1ur4htPjM5T@google.com>
Hi Mostafa,
On Sun, Dec 14, 2025 at 10:32:35PM +0000, Mostafa Saleh wrote:
> On Tue, Dec 09, 2025 at 06:45:16PM -0800, Nicolin Chen wrote:
> > @@ -1207,12 +1223,9 @@ void arm_smmu_write_entry(struct arm_smmu_entry_writer *writer, __le64 *entry,
> > entry_set(writer, entry, target, 0, 1);
> > } else {
> > /*
> > - * No inuse bit changed. Sanity check that all unused bits are 0
> > - * in the entry. The target was already sanity checked by
> > - * compute_qword_diff().
> > + * No inuse bit changed, though ignored bits may have changed.
> > */
> > - WARN_ON_ONCE(
> > - entry_set(writer, entry, target, 0, NUM_ENTRY_QWORDS));
> > + entry_set(writer, entry, target, 0, NUM_ENTRY_QWORDS);
>
> After this change, no other caller uses the entry_set() return value, so it
> can be changed to return void.
OK.
> > }
> > }
> > EXPORT_SYMBOL_IF_KUNIT(arm_smmu_write_entry);
> > @@ -1543,6 +1556,7 @@ static void arm_smmu_ste_writer_sync_entry(struct arm_smmu_entry_writer *writer)
> > static const struct arm_smmu_entry_writer_ops arm_smmu_ste_writer_ops = {
> > .sync = arm_smmu_ste_writer_sync_entry,
> > .get_used = arm_smmu_get_ste_used,
> > + .get_ignored = arm_smmu_get_ste_ignored,
> > };
> >
>
> I have some mixed feelings about this, having get_used(), then get_ignored()
> with the same bits set seems confusing to me, specially the get_ignored()
> loops back to update cur_used, which is set from get_used()
>
> My initial though was just to remove this bit from get_used() + some changes
> to checks setting bits that are not used would be enough, and the semantics
> of get_used() can be something as:
> “Return bits used by the updated translation regime that MUST be observed
> atomically” and in that case we can ignore things as MEV as it doesn’t
> impact the translation.
>
> However, this approach makes it a bit explicit which bits are ignored, if we
> keep this logic, I think changing the name of get_ignored() might help, to
> something as "get_allowed_break()" or "get_update_safe()"?
I think "ignored" itself is brief and understandable.. Instead,
perhaps we can add a kdocs to make it clearer:
/**
* struct arm_smmu_entry_writer_ops - STE/CD entry writer operations
* @get_used: Output to @used the bits used by the hardware corresponding to the
* configurations bits set in a given @entry
* @get_ignored: Output to @ignored the bits that are listed in the "used" list
* but allowed to be ignored by arm_smmu_entry_qword_diff(). Each
* field (bits) must provide a reason to justify that the entries
* can be updated safely without breaking STE/CD configurations.
* @sync: Operation to synchronize the updated STE/CD entries in the memory
*/
struct arm_smmu_entry_writer_ops {
void (*get_used)(const __le64 *entry, __le64 *used);
void (*get_ignored)(__le64 *ignored);
void (*sync)(struct arm_smmu_entry_writer *writer);
};
?
Thanks
Nicolin
next prev parent reply other threads:[~2025-12-15 20:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-10 2:45 [PATCH rc v3 0/4] : iommu/arm-smmu-v3: Fix hitless STE update in nesting cases Nicolin Chen
2025-12-10 2:45 ` [PATCH rc v3 1/4] iommu/arm-smmu-v3: Add ignored bits to fix STE update sequence Nicolin Chen
2025-12-14 22:32 ` Mostafa Saleh
2025-12-15 20:51 ` Nicolin Chen [this message]
2025-12-16 22:49 ` Mostafa Saleh
2025-12-16 0:09 ` Jason Gunthorpe
2025-12-16 20:46 ` Nicolin Chen
2025-12-16 22:58 ` Mostafa Saleh
2025-12-17 0:23 ` Jason Gunthorpe
2025-12-10 2:45 ` [PATCH rc v3 2/4] iommu/arm-smmu-v3: Ignore STE MEV when computing the " Nicolin Chen
2025-12-10 2:45 ` [PATCH rc v3 3/4] iommu/arm-smmu-v3: Ignore STE EATS " Nicolin Chen
2025-12-10 2:45 ` [PATCH rc v3 4/4] iommu/arm-smmu-v3-test: Add nested s1bypass/s1dssbypass coverage Nicolin Chen
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=aUB0t4MSf624Wwmw@Asurada-Nvidia \
--to=nicolinc@nvidia.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=praan@google.com \
--cc=robin.murphy@arm.com \
--cc=skolothumtho@nvidia.com \
--cc=smostafa@google.com \
--cc=will@kernel.org \
--cc=xueshuai@linux.alibaba.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 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.