From: Pranjal Shrivastava <praan@google.com>
To: Daniel Mentz <danielmentz@google.com>
Cc: Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>,
Mostafa Saleh <smostafa@google.com>,
Nicolin Chen <nicolinc@nvidia.com>,
iommu@lists.linux.dev, Jason Gunthorpe <jgg@nvidia.com>
Subject: Re: [PATCH v5 1/3] iommu/arm-smmu-v3: Introduce struct arm_smmu_event
Date: Wed, 27 Nov 2024 09:25:23 +0000 [thread overview]
Message-ID: <Z0blg7wbWr05qp3w@google.com> (raw)
In-Reply-To: <CAE2F3rCO1PbzMEdJB1zRFK+FsbYa0w2TWrGL-XV6y9A9vrqytA@mail.gmail.com>
On Tue, Nov 26, 2024 at 07:25:12PM -0800, Daniel Mentz wrote:
> On Tue, Nov 12, 2024 at 12:30 AM Pranjal Shrivastava <praan@google.com> wrote:
> > + event->stag = FIELD_GET(EVTQ_1_STAG, raw[1]);
> > + event->stall = raw[1] & EVTQ_1_STALL;
>
> Any particular reason you're not using FIELD_GET on EVTQ_1_STALL like
> in FIELD_GET(EVTQ_1_STALL, raw[1]); ?
>
No particular reason as such, just wanted to ensure a bool value as the
current usage in `arm_smmu_handle_evt` fetched the stall field similarly
I'll update this to use a FIELD_GET
> > + event->class = FIELD_GET(EVTQ_1_CLASS, raw[1]);
> > + event->iova = FIELD_GET(EVTQ_2_ADDR, raw[2]);
> > + event->ipa = raw[3];
>
> Shouldn't this be
>
> event->ipa =FIELD_GET(EVTQ_3_IPA, raw[3]);
No. For this, there's a reason for not using the
`FIELD_GET(EVTQ_3_IPA, raw[3]);`. As mentioned in the cover letter, this
was the root cause of the IPA truncation bug, i.e. FIELD_GET only
fetches the IPA field without trailing zeroes, truncating the address.
For e.g. IPA = 0xfffff instead of 0xfffff000 which is faulting address.
Also, since the definition of the field is GENMASK_ULL(51,12) it doesn't
work for events like `F_STE_FETCH` where the Fetch address field is:
GENMASK_ULL(51,3).
Since the SMMUv3 spec ensures that the bitfields NOT representing an
address, i.e. fields other than GENMASK_ULL(51,12) or GENMASK_ULL(51,3),
are zeros. It's safe to read the raw[3] dword directly.
I think this wasn't discovered until now as we are NOT using the
EVTQ_3_IPA mask anywhere in the `arm-smmu-v3*` source files.
Thanks,
Praan
next prev parent reply other threads:[~2024-11-27 9:25 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-12 8:30 [PATCH v5 0/3] iommu/arm-smmu-v3: Parse out event records Pranjal Shrivastava
2024-11-12 8:30 ` [PATCH v5 1/3] iommu/arm-smmu-v3: Introduce struct arm_smmu_event Pranjal Shrivastava
2024-11-12 23:30 ` Nicolin Chen
2024-11-15 13:13 ` Pranjal Shrivastava
2024-11-15 21:34 ` Nicolin Chen
2024-11-18 16:24 ` Jason Gunthorpe
2024-11-19 9:03 ` Will Deacon
2024-11-19 9:27 ` Pranjal Shrivastava
2024-11-20 9:56 ` Will Deacon
2024-11-20 11:46 ` Pranjal Shrivastava
2024-11-27 3:25 ` Daniel Mentz
2024-11-27 9:25 ` Pranjal Shrivastava [this message]
2024-11-27 19:42 ` Daniel Mentz
2024-11-27 20:53 ` Pranjal Shrivastava
2024-11-28 23:40 ` Daniel Mentz
2024-11-29 12:56 ` Pranjal Shrivastava
2024-11-12 8:30 ` [PATCH v5 2/3] iommu/arm-smmu-v3: Log better event records Pranjal Shrivastava
2024-11-12 8:30 ` [PATCH v5 3/3] iommu/arm-smmu-v3: Avoid redundant master lookup in events Pranjal Shrivastava
2024-11-12 23:52 ` Nicolin Chen
2024-11-15 13:26 ` Pranjal Shrivastava
2024-11-15 21:46 ` Nicolin Chen
2024-11-20 4:45 ` [PATCH v5 0/3] iommu/arm-smmu-v3: Parse out event records Daniel Mentz
2024-11-20 6:54 ` Pranjal Shrivastava
2024-11-20 7:12 ` Pranjal Shrivastava
2024-11-20 11:43 ` Pranjal Shrivastava
2024-11-22 23:33 ` Daniel Mentz
2024-11-26 9:30 ` Pranjal Shrivastava
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=Z0blg7wbWr05qp3w@google.com \
--to=praan@google.com \
--cc=danielmentz@google.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=nicolinc@nvidia.com \
--cc=robin.murphy@arm.com \
--cc=smostafa@google.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