lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Fri, 27 May 2016 22:24:08 +0000
From:	Wei Yang <richard.weiyang@...il.com>
To:	joro@...tes.org, robin.murphy@....com
Cc:	dwmw2@...radead.org, iommu@...ts.linux-foundation.org,
	linux-kernel@...r.kernel.org, Wei Yang <richard.weiyang@...il.com>
Subject: [PATCH v2 2/2] iommu/vt-d: use marco for dmar_domain's second level size and shift

In the origin commit, the size of the second level is hard coded to an
integer, 256.

This patch defines two marco for the second level size and shift.

Signed-off-by: Wei Yang <richard.weiyang@...il.com>
---
 drivers/iommu/intel-iommu.c | 12 ++++++------
 include/linux/intel-iommu.h |  2 ++
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 1c8b587..dd050d7 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -616,7 +616,7 @@ static struct kmem_cache *iommu_devinfo_cache;
 static struct dmar_domain* get_iommu_domain(struct intel_iommu *iommu, u16 did)
 {
 	struct dmar_domain **domains;
-	int idx = did >> 8;
+	int idx = did >> DMAR_DOMS_SHIFT;
 
 	domains = iommu->domains[idx];
 	if (!domains)
@@ -629,10 +629,10 @@ static void set_iommu_domain(struct intel_iommu *iommu, u16 did,
 			     struct dmar_domain *domain)
 {
 	struct dmar_domain **domains;
-	int idx = did >> 8;
+	int idx = did >> DMAR_DOMS_SHIFT;
 
 	if (!iommu->domains[idx]) {
-		size_t size = 256 * sizeof(struct dmar_domain *);
+		size_t size = DMAR_DOMS_SIZE * sizeof(struct dmar_domain *);
 		iommu->domains[idx] = kzalloc(size, GFP_ATOMIC);
 	}
 
@@ -1634,11 +1634,11 @@ static int iommu_init_domains(struct intel_iommu *iommu)
 		return -ENOMEM;
 	}
 
-	size = DIV_ROUND_UP(ndomains, 256) * sizeof(struct dmar_domain **);
+	size = DIV_ROUND_UP(ndomains, DMAR_DOMS_SIZE) * sizeof(struct dmar_domain **);
 	iommu->domains = kzalloc(size, GFP_KERNEL);
 
 	if (iommu->domains) {
-		size = 256 * sizeof(struct dmar_domain *);
+		size = DMAR_DOMS_SIZE * sizeof(struct dmar_domain *);
 		iommu->domains[0] = kzalloc(size, GFP_KERNEL);
 	}
 
@@ -1699,7 +1699,7 @@ static void disable_dmar_iommu(struct intel_iommu *iommu)
 static void free_dmar_iommu(struct intel_iommu *iommu)
 {
 	if ((iommu->domains) && (iommu->domain_ids)) {
-		int elems = DIV_ROUND_UP(cap_ndoms(iommu->cap), 256);
+		int elems = DIV_ROUND_UP(cap_ndoms(iommu->cap), DMAR_DOMS_SIZE);
 		int i;
 
 		for (i = 0; i < elems; i++)
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
index 2d9b650..afcb7bf 100644
--- a/include/linux/intel-iommu.h
+++ b/include/linux/intel-iommu.h
@@ -412,6 +412,8 @@ struct intel_iommu {
 
 #ifdef CONFIG_INTEL_IOMMU
 	unsigned long 	*domain_ids; /* bitmap of domains */
+#define DMAR_DOMS_SHIFT 8
+#define DMAR_DOMS_SIZE (1 << DMAR_DOMS_SHIFT )
 	struct dmar_domain ***domains; /* ptr to domains */
 	spinlock_t	lock; /* protect context, domain ids */
 	struct root_entry *root_entry; /* virtual address */
-- 
2.5.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ