svn commit: r366835 - in head/sys: dev/iommu x86/iommu

Ruslan Bukin br at FreeBSD.org
Mon Oct 19 15:50:59 UTC 2020


Author: br
Date: Mon Oct 19 15:50:58 2020
New Revision: 366835
URL: https://svnweb.freebsd.org/changeset/base/366835

Log:
  Assign the reserved apic region (GAS entry) to the iommu domain msi_entry.
  
  Requested by:	kib
  Reviewed by:	kib
  Sponsored by:	Innovate DSbD
  Differential Revision:	https://reviews.freebsd.org/D26859

Modified:
  head/sys/dev/iommu/iommu.h
  head/sys/dev/iommu/iommu_gas.c
  head/sys/x86/iommu/intel_ctx.c

Modified: head/sys/dev/iommu/iommu.h
==============================================================================
--- head/sys/dev/iommu/iommu.h	Mon Oct 19 15:24:35 2020	(r366834)
+++ head/sys/dev/iommu/iommu.h	Mon Oct 19 15:50:58 2020	(r366835)
@@ -197,7 +197,7 @@ void iommu_gas_free_region(struct iommu_domain *domain
 int iommu_gas_map_region(struct iommu_domain *domain,
     struct iommu_map_entry *entry, u_int eflags, u_int flags, vm_page_t *ma);
 int iommu_gas_reserve_region(struct iommu_domain *domain, iommu_gaddr_t start,
-    iommu_gaddr_t end);
+    iommu_gaddr_t end, struct iommu_map_entry **entry0);
 
 void iommu_set_buswide_ctx(struct iommu_unit *unit, u_int busno);
 bool iommu_is_buswide_ctx(struct iommu_unit *unit, u_int busno);

Modified: head/sys/dev/iommu/iommu_gas.c
==============================================================================
--- head/sys/dev/iommu/iommu_gas.c	Mon Oct 19 15:24:35 2020	(r366834)
+++ head/sys/dev/iommu/iommu_gas.c	Mon Oct 19 15:50:58 2020	(r366835)
@@ -677,7 +677,7 @@ iommu_gas_map_region(struct iommu_domain *domain, stru
 
 int
 iommu_gas_reserve_region(struct iommu_domain *domain, iommu_gaddr_t start,
-    iommu_gaddr_t end)
+    iommu_gaddr_t end, struct iommu_map_entry **entry0)
 {
 	struct iommu_map_entry *entry;
 	int error;
@@ -692,6 +692,8 @@ iommu_gas_reserve_region(struct iommu_domain *domain, 
 	IOMMU_DOMAIN_UNLOCK(domain);
 	if (error != 0)
 		iommu_gas_free_entry(domain, entry);
+	else if (entry0 != NULL)
+		*entry0 = entry;
 	return (error);
 }
 

Modified: head/sys/x86/iommu/intel_ctx.c
==============================================================================
--- head/sys/x86/iommu/intel_ctx.c	Mon Oct 19 15:24:35 2020	(r366834)
+++ head/sys/x86/iommu/intel_ctx.c	Mon Oct 19 15:50:58 2020	(r366835)
@@ -366,7 +366,7 @@ dmar_domain_alloc(struct dmar_unit *dmar, bool id_mapp
 			goto fail;
 		/* Disable local apic region access */
 		error = iommu_gas_reserve_region(iodom, 0xfee00000,
-		    0xfeefffff + 1);
+		    0xfeefffff + 1, &iodom->msi_entry);
 		if (error != 0)
 			goto fail;
 	}


More information about the svn-src-head mailing list