mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/8] iommu/iova: Implement deferred flush queue
@ 2017-08-11 14:41 Joerg Roedel
  2017-08-11 14:41 ` [PATCH 1/8] iommu/iova: Add flush-queue data structures Joerg Roedel
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Joerg Roedel @ 2017-08-11 14:41 UTC (permalink / raw)
  To: iommu; +Cc: Robin Murphy, dwmw2, Will Deacon, linux-kernel, Joerg Roedel

Hi,

here is an implementation of deferred flush queues in the
common iova code. Some users of the iova code already
implement their own flush-queues, like the AMD-Vi and
Intel VT-d drivers.

The implementation adds a per-cpu ring-buffer to the
iova_domain structure and adds code to maintain that
ring-buffer.

A timer is also used to make sure pending entries in the
ring-buffer are flushed regularily, even when the
ring-buffers don't fill up.

The AMD and Intel IOMMU drivers are converted to make use of
this code and their own implementations for deferred
flushing are removed.

The code has been tested on an AMD and an Intel machine with
network and disk IO.

Please review.

Regards,

	Joerg

Joerg Roedel (8):
  iommu/iova: Add flush-queue data structures
  iommu/iova: Implement Flush-Queue ring buffer
  iommu/iova: Add flush counters to Flush-Queue implementation
  iommu/iova: Add locking to Flush-Queues
  iommu/iova: Add flush timer
  iommu/amd: Make use of iova queue flushing
  iommu/vt-d: Allow to flush more than 4GB of device TLBs
  iommu/vt-d: Make use of iova deferred flushing

 drivers/iommu/amd_iommu.c   | 229 ++------------------------------------------
 drivers/iommu/dmar.c        |   2 +-
 drivers/iommu/intel-iommu.c | 197 ++++++++-----------------------------
 drivers/iommu/iova.c        | 183 +++++++++++++++++++++++++++++++++++
 include/linux/iova.h        |  67 +++++++++++++
 5 files changed, 298 insertions(+), 380 deletions(-)

-- 
2.7.4

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

end of thread, other threads:[~2017-08-11 14:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-11 14:41 [PATCH 0/8] iommu/iova: Implement deferred flush queue Joerg Roedel
2017-08-11 14:41 ` [PATCH 1/8] iommu/iova: Add flush-queue data structures Joerg Roedel
2017-08-11 14:41 ` [PATCH 2/8] iommu/iova: Implement Flush-Queue ring buffer Joerg Roedel
2017-08-11 14:41 ` [PATCH 3/8] iommu/iova: Add flush counters to Flush-Queue implementation Joerg Roedel
2017-08-11 14:41 ` [PATCH 4/8] iommu/iova: Add locking to Flush-Queues Joerg Roedel
2017-08-11 14:41 ` [PATCH 5/8] iommu/iova: Add flush timer Joerg Roedel
2017-08-11 14:41 ` [PATCH 6/8] iommu/amd: Make use of iova queue flushing Joerg Roedel
2017-08-11 14:41 ` [PATCH 7/8] iommu/vt-d: Allow to flush more than 4GB of device TLBs Joerg Roedel
2017-08-11 14:41 ` [PATCH 8/8] iommu/vt-d: Make use of iova deferred flushing Joerg Roedel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome