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 _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"