linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1] iommu/amd: flush not present cache in iommu_map_page
@ 2019-04-24 16:50 Tom Murphy
  2019-04-26 14:04 ` Joerg Roedel
  0 siblings, 1 reply; 6+ messages in thread
From: Tom Murphy @ 2019-04-24 16:50 UTC (permalink / raw)
  To: iommu; +Cc: murphyt7, Tom Murphy, Joerg Roedel, linux-kernel

check if there is a not-present cache present and flush it if there is.

Signed-off-by: Tom Murphy <tmurphy@arista.com>
---
 drivers/iommu/amd_iommu.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index f7cdd2ab7f11..91fe5cb10f50 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -1637,6 +1637,11 @@ static int iommu_map_page(struct protection_domain *dom,
 
 	update_domain(dom);
 
+	if (unlikely(amd_iommu_np_cache && !dom->updated)) {
+		domain_flush_pages(dom, bus_addr, page_size);
+		domain_flush_complete(dom);
+	}
+
 	/* Everything flushed out, free pages now */
 	free_page_list(freelist);
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v1] iommu/amd: flush not present cache in iommu_map_page
  2019-04-24 16:50 [PATCH v1] iommu/amd: flush not present cache in iommu_map_page Tom Murphy
@ 2019-04-26 14:04 ` Joerg Roedel
  2019-04-27 14:20   ` Tom Murphy
  0 siblings, 1 reply; 6+ messages in thread
From: Joerg Roedel @ 2019-04-26 14:04 UTC (permalink / raw)
  To: Tom Murphy; +Cc: iommu, murphyt7, linux-kernel

On Wed, Apr 24, 2019 at 05:50:51PM +0100, Tom Murphy wrote:
> check if there is a not-present cache present and flush it if there is.
> 
> Signed-off-by: Tom Murphy <tmurphy@arista.com>
> ---
>  drivers/iommu/amd_iommu.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
> index f7cdd2ab7f11..91fe5cb10f50 100644
> --- a/drivers/iommu/amd_iommu.c
> +++ b/drivers/iommu/amd_iommu.c
> @@ -1637,6 +1637,11 @@ static int iommu_map_page(struct protection_domain *dom,
>  
>  	update_domain(dom);
>  
> +	if (unlikely(amd_iommu_np_cache && !dom->updated)) {
> +		domain_flush_pages(dom, bus_addr, page_size);
> +		domain_flush_complete(dom);
> +	}
> +

The iommu_map_page function is called once per physical page that is
mapped, so in the worst case for every 4k mapping established. So it is
not the right place to put this check in.

From a quick glance this check belongs into the map_sg() and the
amd_iommu_map() function, but without the dom->updated check.

Besides, to really support systems with np-cache in a way that doesn't
destroy all performance, the driver also needs range-flushes for IOTLBs.
Currently it can only flush a 4k page of the full address space of a
domain. But that doesn't mean we shouldn't fix the missing flushes now.

So please re-send the patch with the check at the two places I pointed
out above.

Thanks,

	Joerg

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v1] iommu/amd: flush not present cache in iommu_map_page
  2019-04-26 14:04 ` Joerg Roedel
@ 2019-04-27 14:20   ` Tom Murphy
  2019-04-29 11:59     ` Christoph Hellwig
  0 siblings, 1 reply; 6+ messages in thread
From: Tom Murphy @ 2019-04-27 14:20 UTC (permalink / raw)
  To: Joerg Roedel; +Cc: iommu, Tom Murphy, linux-kernel

> The iommu_map_page function is called once per physical page that is
> mapped, so in the worst case for every 4k mapping established. So it is
> not the right place to put this check in.

Ah, you're right, that was careless of me.

> From a quick glance this check belongs into the map_sg() and the
> amd_iommu_map() function, but without the dom->updated check.
>
> Besides, to really support systems with np-cache in a way that doesn't
> destroy all performance, the driver also needs range-flushes for IOTLBs.

I am working on another patch to improve the intel iotlb flushing in
the iommu ops patch which should cover this too.

> Currently it can only flush a 4k page of the full address space of a
> domain. But that doesn't mean we shouldn't fix the missing flushes now.
>
> So please re-send the patch with the check at the two places I pointed
> out above.

will do

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v1] iommu/amd: flush not present cache in iommu_map_page
  2019-04-27 14:20   ` Tom Murphy
@ 2019-04-29 11:59     ` Christoph Hellwig
  2019-04-29 12:17       ` Tom Murphy
  0 siblings, 1 reply; 6+ messages in thread
From: Christoph Hellwig @ 2019-04-29 11:59 UTC (permalink / raw)
  To: Tom Murphy; +Cc: Joerg Roedel, iommu, Tom Murphy, linux-kernel

On Sat, Apr 27, 2019 at 03:20:35PM +0100, Tom Murphy wrote:
> I am working on another patch to improve the intel iotlb flushing in
> the iommu ops patch which should cover this too.

So are you looking into converting the intel-iommu driver to use
dma-iommu as well?  That would be great!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v1] iommu/amd: flush not present cache in iommu_map_page
  2019-04-29 11:59     ` Christoph Hellwig
@ 2019-04-29 12:17       ` Tom Murphy
  2019-04-29 12:29         ` Christoph Hellwig
  0 siblings, 1 reply; 6+ messages in thread
From: Tom Murphy @ 2019-04-29 12:17 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Joerg Roedel, iommu, Tom Murphy, linux-kernel, Lu Baolu, James Sewart

On Mon, Apr 29, 2019 at 12:59 PM Christoph Hellwig <hch@infradead.org> wrote:
>
> On Sat, Apr 27, 2019 at 03:20:35PM +0100, Tom Murphy wrote:
> > I am working on another patch to improve the intel iotlb flushing in
> > the iommu ops patch which should cover this too.
>
> So are you looking into converting the intel-iommu driver to use
> dma-iommu as well?  That would be great!

Yes. My patches depend on the "iommu/vt-d: Delegate DMA domain to
generic iommu" patch which is currently being reviewed.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v1] iommu/amd: flush not present cache in iommu_map_page
  2019-04-29 12:17       ` Tom Murphy
@ 2019-04-29 12:29         ` Christoph Hellwig
  0 siblings, 0 replies; 6+ messages in thread
From: Christoph Hellwig @ 2019-04-29 12:29 UTC (permalink / raw)
  To: Tom Murphy
  Cc: Christoph Hellwig, Joerg Roedel, iommu, Tom Murphy, linux-kernel,
	Lu Baolu, James Sewart

On Mon, Apr 29, 2019 at 01:17:44PM +0100, Tom Murphy wrote:
> Yes. My patches depend on the "iommu/vt-d: Delegate DMA domain to
> generic iommu" patch which is currently being reviewed.

Nice!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-04-29 12:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-24 16:50 [PATCH v1] iommu/amd: flush not present cache in iommu_map_page Tom Murphy
2019-04-26 14:04 ` Joerg Roedel
2019-04-27 14:20   ` Tom Murphy
2019-04-29 11:59     ` Christoph Hellwig
2019-04-29 12:17       ` Tom Murphy
2019-04-29 12:29         ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).