Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Oct 2020 14:51:11 +0000 (UTC)
From:      Ruslan Bukin <br@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r366704 - in head/sys: dev/iommu i386/include
Message-ID:  <202010141451.09EEpB24012645@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: br
Date: Wed Oct 14 14:51:11 2020
New Revision: 366704
URL: https://svnweb.freebsd.org/changeset/base/366704

Log:
  Add a per-each macro IOMMU_DOMAIN_UNLOAD_SLEEP which allows to sleep
  during iommu guest address space entries unload.
  
  Suggested by:	kib
  Sponsored by:	Innovate DSbD
  Differential Revision:	https://reviews.freebsd.org/D26722

Modified:
  head/sys/dev/iommu/busdma_iommu.c
  head/sys/i386/include/iommu.h

Modified: head/sys/dev/iommu/busdma_iommu.c
==============================================================================
--- head/sys/dev/iommu/busdma_iommu.c	Wed Oct 14 14:29:56 2020	(r366703)
+++ head/sys/dev/iommu/busdma_iommu.c	Wed Oct 14 14:51:11 2020	(r366704)
@@ -888,7 +888,7 @@ iommu_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap
 	struct bus_dmamap_iommu *map;
 	struct iommu_ctx *ctx;
 	struct iommu_domain *domain;
-#if defined(__amd64__)
+#ifndef IOMMU_DOMAIN_UNLOAD_SLEEP
 	struct iommu_map_entries_tailq entries;
 #endif
 
@@ -898,13 +898,13 @@ iommu_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap
 	domain = ctx->domain;
 	atomic_add_long(&ctx->unloads, 1);
 
-#if defined(__i386__)
+#if defined(IOMMU_DOMAIN_UNLOAD_SLEEP)
 	IOMMU_DOMAIN_LOCK(domain);
 	TAILQ_CONCAT(&domain->unload_entries, &map->map_entries, dmamap_link);
 	IOMMU_DOMAIN_UNLOCK(domain);
 	taskqueue_enqueue(domain->iommu->delayed_taskqueue,
 	    &domain->unload_task);
-#else /* defined(__amd64__) */
+#else
 	TAILQ_INIT(&entries);
 	IOMMU_DOMAIN_LOCK(domain);
 	TAILQ_CONCAT(&entries, &map->map_entries, dmamap_link);

Modified: head/sys/i386/include/iommu.h
==============================================================================
--- head/sys/i386/include/iommu.h	Wed Oct 14 14:29:56 2020	(r366703)
+++ head/sys/i386/include/iommu.h	Wed Oct 14 14:51:11 2020	(r366704)
@@ -4,3 +4,5 @@
 /* $FreeBSD$ */
 
 #include <x86/iommu.h>
+
+#define	IOMMU_DOMAIN_UNLOAD_SLEEP



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202010141451.09EEpB24012645>