From: Baolu Lu <baolu.lu@linux.intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: David Woodhouse <dwmw2@infradead.org>,
iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
Robin Murphy <robin.murphy@arm.com>,
Will Deacon <will@kernel.org>, Kevin Tian <kevin.tian@intel.com>,
patches@lists.linux.dev, Tina Zhang <tina.zhang@intel.com>,
Wei Wang <wei.w.wang@intel.com>
Subject: Re: [PATCH 1/9] iommu/pages: Add support for a incoherent IOMMU page walker
Date: Wed, 30 Jul 2025 09:49:08 +0800 [thread overview]
Message-ID: <e94c33e4-7ef3-4777-aa28-852f4a013580@linux.intel.com> (raw)
In-Reply-To: <20250729223240.GC82395@nvidia.com>
On 7/30/25 06:32, Jason Gunthorpe wrote:
> On Mon, Jul 21, 2025 at 04:41:03PM +0800, Baolu Lu wrote:
>> On 7/17/2025 3:57 AM, Jason Gunthorpe wrote:
>>> @@ -98,4 +101,36 @@ static inline void *iommu_alloc_pages_sz(gfp_t gfp, size_t size)
>>> return iommu_alloc_pages_node_sz(NUMA_NO_NODE, gfp, size);
>>> }
>>> -#endif /* __IOMMU_PAGES_H */
>>> +int iommu_pages_start_incoherent(void *virt, struct device *dma_dev);
>>> +int iommu_pages_start_incoherent_list(struct iommu_pages_list *list,
>>> + struct device *dma_dev);
>>> +
>>> +#ifdef CONFIG_X86
>>> +#include <asm/cacheflush.h>
>>> +
>>> +static inline void iommu_pages_flush_incoherent(struct device *dma_dev,
>>> + void *virt, size_t offset,
>>> + size_t len)
>>> +{
>>> + clflush_cache_range(virt + offset, len);
>>> +}
>>> +static inline void
>>> +iommu_pages_stop_incoherent_list(struct iommu_pages_list *list,
>>> + struct device *dma_dev)
>>> +{
>> Do we need to clear iopt->incoherent for X86, given that
>> iopt->incoherent is set in the start path?
> No.. When I wrote this I felt we may as well keep x86 fast since it
> doesn't use the DMA API and did it like this:
>
> static void __iommu_free_desc(struct ioptdesc *iopt)
> {
> [..]
> if (!IS_ENABLED(CONFIG_X86))
> WARN_ON_ONCE(iopt->incoherent);
>
> To largely ignore the incoherent flag.
>
> So:
>
> /*
> * For performance leave the incoherent flag alone which turns this into
> * a NOP. For X86 the rest of the stop/free flow ignores the flag.
> */
Okay.
I was just thinking about that: this field overlays struct page, so it
makes more sense to clear it before repurposing it. It's fine as long as
there's no functionality issue.
Thanks,
baolu
next prev parent reply other threads:[~2025-07-30 1:51 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-16 19:57 [PATCH 0/9] Convert Intel VT-D to use the generic iommu page table Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 1/9] iommu/pages: Add support for a incoherent IOMMU page walker Jason Gunthorpe
2025-07-21 8:41 ` Baolu Lu
2025-07-29 22:32 ` Jason Gunthorpe
2025-07-30 1:49 ` Baolu Lu [this message]
2025-08-11 21:21 ` Jason Gunthorpe
2025-08-15 11:28 ` Tian, Kevin
2025-08-22 21:13 ` Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 2/9] iommupt: Add basic support for SW bits in the page table Jason Gunthorpe
2025-08-15 11:29 ` Tian, Kevin
2025-08-18 23:35 ` Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 3/9] iommupt: Use the incoherent start/stop functions for PT_FEAT_DMA_INCOHERENT Jason Gunthorpe
2025-08-15 11:35 ` Tian, Kevin
2025-08-22 20:45 ` Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 4/9] iommupt: Flush the CPU cache after any writes to the page table Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 5/9] iommupt: Add the Intel VT-D second stage page table format Jason Gunthorpe
2025-07-22 3:11 ` Baolu Lu
2025-07-29 23:05 ` Jason Gunthorpe
2025-07-30 2:00 ` Baolu Lu
2025-08-22 9:14 ` Tian, Kevin
2025-08-22 14:53 ` Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 6/9] iommupt/x86: Set the dirty bit only for writable PTEs Jason Gunthorpe
2025-07-21 10:02 ` Baolu Lu
2025-07-16 19:57 ` [PATCH 7/9] iommupt/x86: Support SW bits and permit PT_FEAT_DMA_INCOHERENT Jason Gunthorpe
2025-07-22 5:17 ` Baolu Lu
2025-07-29 23:13 ` Jason Gunthorpe
2025-07-30 2:35 ` Baolu Lu
2025-08-22 9:17 ` Tian, Kevin
2025-08-22 14:55 ` Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 8/9] iommu/vt-d: Use the generic iommu page table Jason Gunthorpe
2025-07-22 6:44 ` Baolu Lu
2025-07-29 23:39 ` Jason Gunthorpe
2025-08-22 9:35 ` Tian, Kevin
2025-08-22 20:43 ` Jason Gunthorpe
2025-07-16 19:57 ` [PATCH 9/9] iommupt: Add a kunit test for the SW bits 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=e94c33e4-7ef3-4777-aa28-852f4a013580@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=patches@lists.linux.dev \
--cc=robin.murphy@arm.com \
--cc=tina.zhang@intel.com \
--cc=wei.w.wang@intel.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