dmaengine.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] dma: fake-dma and IOVA tests
@ 2025-05-20 22:39 Luis Chamberlain
  2025-05-20 22:39 ` [PATCH 1/6] fake-dma: add fake dma engine driver Luis Chamberlain
                   ` (6 more replies)
  0 siblings, 7 replies; 20+ messages in thread
From: Luis Chamberlain @ 2025-05-20 22:39 UTC (permalink / raw)
  To: vkoul, chenxiang66, m.szyprowski, robin.murphy, leon, jgg,
	alex.williamson, joel.granados
  Cc: iommu, dmaengine, linux-block, gost.dev, mcgrof

We don't seem to have unit tests for the DMA IOVA API, so I figured
we should add some so to ensure we don't regress moving forward, and it allows
us to extend these later. Its best to just extend existing tests though. I've
found two tests so I've extended them as part of this patchset:

  - drivers/dma/dmatest.c
  - kernel/dma/map_benchmark.c

However running the dmatest requires some old x86 emulation or some
non-upstream qemu patches for intel IOAT a q35 system. This make this
easier by providing a simple in-kernel fake-dma controller to let you test
run all dmatests on most systems. The only issue I found with that was not
being able to get the platform device through an IOMMU for DMA. If folks have
an idea of how to make it easy for a platform device to get an IOMMU for DMA
it would make it easier to allow us to leverage the existing dmatest for
IOVA as well. I only tried briefly with virtio and vfio_iommu_type1, but gave
up fast. Not sure if its easy to later allow a platform device like this
one to leverage it to make it easier for testing.

The kernel/dma/map_benchmark.c test is extended as well, for that I was
able to add follow the instructions on the first commit from that test,
by unbinding a device and attaching it to the map benchmark.

I tried twiddle a mocked IOMMU with iommufd on a q35 guest, but alas,
that just didn't work as I'd hope, ie, nothing, and so this is the best
I have for now to help test IOVA DMA API on a virtualized setup.

Let me know if others have other recomendations.

The hope is to get a CI eventually going to ensure these don't regress.

Luis Chamberlain (6):
  fake-dma: add fake dma engine driver
  dmatest: split dmatest_func() into helpers
  dmatest: move printing to its own routine
  dmatest: add IOVA tests
  dma-mapping: benchmark: move validation parameters into a helper
  dma-mapping: benchmark: add IOVA support

 drivers/dma/Kconfig                           |  11 +
 drivers/dma/Makefile                          |   1 +
 drivers/dma/dmatest.c                         | 795 ++++++++++++------
 drivers/dma/fake-dma.c                        | 718 ++++++++++++++++
 include/linux/map_benchmark.h                 |  11 +
 kernel/dma/Kconfig                            |   4 +-
 kernel/dma/map_benchmark.c                    | 512 +++++++++--
 .../testing/selftests/dma/dma_map_benchmark.c | 145 +++-
 8 files changed, 1864 insertions(+), 333 deletions(-)
 create mode 100644 drivers/dma/fake-dma.c

-- 
2.47.2


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

end of thread, other threads:[~2025-05-22 19:38 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-20 22:39 [PATCH 0/6] dma: fake-dma and IOVA tests Luis Chamberlain
2025-05-20 22:39 ` [PATCH 1/6] fake-dma: add fake dma engine driver Luis Chamberlain
2025-05-21 14:20   ` Robin Murphy
2025-05-21 17:07     ` Luis Chamberlain
2025-05-22 11:18       ` Marek Szyprowski
2025-05-22 16:59         ` Luis Chamberlain
2025-05-22 19:38           ` Luis Chamberlain
2025-05-21 23:40   ` kernel test robot
2025-05-20 22:39 ` [PATCH 2/6] dmatest: split dmatest_func() into helpers Luis Chamberlain
2025-05-20 22:39 ` [PATCH 3/6] dmatest: move printing to its own routine Luis Chamberlain
2025-05-21 14:41   ` Robin Murphy
2025-05-21 17:10     ` Luis Chamberlain
2025-05-21 22:26   ` kernel test robot
2025-05-20 22:39 ` [PATCH 4/6] dmatest: add IOVA tests Luis Chamberlain
2025-05-20 22:39 ` [PATCH 5/6] dma-mapping: benchmark: move validation parameters into a helper Luis Chamberlain
2025-05-20 22:39 ` [PATCH 6/6] dma-mapping: benchmark: add IOVA support Luis Chamberlain
2025-05-21 11:58   ` kernel test robot
2025-05-21 16:08   ` Robin Murphy
2025-05-21 17:17     ` Luis Chamberlain
2025-05-21 11:17 ` [PATCH 0/6] dma: fake-dma and IOVA tests Leon Romanovsky

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).