From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932555AbcE0WY3 (ORCPT ); Fri, 27 May 2016 18:24:29 -0400 Received: from mail-pa0-f68.google.com ([209.85.220.68]:36289 "EHLO mail-pa0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932276AbcE0WY0 (ORCPT ); Fri, 27 May 2016 18:24:26 -0400 From: Wei Yang To: joro@8bytes.org, robin.murphy@arm.com Cc: dwmw2@infradead.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Wei Yang Subject: [PATCH v2 2/2] iommu/vt-d: use marco for dmar_domain's second level size and shift Date: Fri, 27 May 2016 22:24:08 +0000 Message-Id: <1464387848-16942-3-git-send-email-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1464387848-16942-1-git-send-email-richard.weiyang@gmail.com> References: <1464387848-16942-1-git-send-email-richard.weiyang@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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