From: Baolu Lu <baolu.lu@linux.intel.com>
To: Dmytro Maluka <dmaluka@chromium.org>,
David Woodhouse <dwmw2@infradead.org>,
iommu@lists.linux.dev
Cc: Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>,
linux-kernel@vger.kernel.org,
"Vineeth Pillai (Google)" <vineeth@bitbyteword.org>,
Aashish Sharma <aashish@aashishsharma.net>,
Grzegorz Jaszczyk <jaszczyk@chromium.org>,
Chuanxiao Dong <chuanxiao.dong@intel.com>,
Kevin Tian <kevin.tian@intel.com>
Subject: Re: [PATCH] iommu/vt-d: Flush cache for PASID table before using it
Date: Sun, 21 Dec 2025 16:11:01 +0800 [thread overview]
Message-ID: <f6fce114-ef7f-4541-8cc0-01c906c71a7c@linux.intel.com> (raw)
In-Reply-To: <20251221001701.3626-1-dmaluka@chromium.org>
On 12/21/25 08:17, Dmytro Maluka wrote:
> When writing the address of a freshly allocated zero-initialized PASID
> table to a PASID directory entry, do that after the CPU cache flush for
> this PASID table, not before it, to avoid the time window when this
> PASID table may be already used by non-coherent IOMMU hardware while
> its contents in RAM is still some random old data, not zero-initialized.
>
Fixes: 194b3348bdbb ("iommu/vt-d: Fix PASID directory pointer coherency")
> Signed-off-by: Dmytro Maluka <dmaluka@chromium.org>
> ---
> drivers/iommu/intel/pasid.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/iommu/intel/pasid.c b/drivers/iommu/intel/pasid.c
> index 3e2255057079..77b9b147ab50 100644
> --- a/drivers/iommu/intel/pasid.c
> +++ b/drivers/iommu/intel/pasid.c
> @@ -153,6 +153,9 @@ static struct pasid_entry *intel_pasid_get_entry(struct device *dev, u32 pasid)
> if (!entries)
> return NULL;
>
> + if (!ecap_coherent(info->iommu->ecap))
> + clflush_cache_range(entries, VTD_PAGE_SIZE);
> +
> /*
> * The pasid directory table entry won't be freed after
> * allocation. No worry about the race with free and
> @@ -165,10 +168,8 @@ static struct pasid_entry *intel_pasid_get_entry(struct device *dev, u32 pasid)
> iommu_free_pages(entries);
> goto retry;
> }
> - if (!ecap_coherent(info->iommu->ecap)) {
> - clflush_cache_range(entries, VTD_PAGE_SIZE);
> + if (!ecap_coherent(info->iommu->ecap))
> clflush_cache_range(&dir[dir_index].val, sizeof(*dir));
> - }
> }
>
> return &entries[index];
Thanks,
baolu
prev parent reply other threads:[~2025-12-21 8:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-21 0:17 [PATCH] iommu/vt-d: Flush cache for PASID table before using it Dmytro Maluka
2025-12-21 8:11 ` Baolu Lu [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=f6fce114-ef7f-4541-8cc0-01c906c71a7c@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=aashish@aashishsharma.net \
--cc=chuanxiao.dong@intel.com \
--cc=dmaluka@chromium.org \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux.dev \
--cc=jaszczyk@chromium.org \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robin.murphy@arm.com \
--cc=vineeth@bitbyteword.org \
--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.