From: Wei Yang <richard.weiyang@gmail.com>
To: joro@8bytes.org, robin.murphy@arm.com
Cc: dwmw2@infradead.org, iommu@lists.linux-foundation.org,
linux-kernel@vger.kernel.org,
Wei Yang <richard.weiyang@gmail.com>
Subject: [PATCH v2 1/2] iommu/vt-d: reduce extra first level entry in iommu->domains
Date: Fri, 27 May 2016 22:24:07 +0000 [thread overview]
Message-ID: <1464387848-16942-2-git-send-email-richard.weiyang@gmail.com> (raw)
In-Reply-To: <1464387848-16942-1-git-send-email-richard.weiyang@gmail.com>
In commit <8bf478163e69> ("iommu/vt-d: Split up iommu->domains array"), it
it splits iommu->domains in two levels. Each first level contains 256
entries of second level. In case of the ndomains is exact a multiple of
256, it would have one more extra first level entry for current
implementation.
This patch refines this calculation to reduce the extra first level entry
when ndomains is exact a multiple of 256.
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
---
drivers/iommu/intel-iommu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index d7fa268..1c8b587 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -1634,7 +1634,7 @@ static int iommu_init_domains(struct intel_iommu *iommu)
return -ENOMEM;
}
- size = ((ndomains >> 8) + 1) * sizeof(struct dmar_domain **);
+ size = DIV_ROUND_UP(ndomains, 256) * sizeof(struct dmar_domain **);
iommu->domains = kzalloc(size, GFP_KERNEL);
if (iommu->domains) {
@@ -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 = (cap_ndoms(iommu->cap) >> 8) + 1;
+ int elems = DIV_ROUND_UP(cap_ndoms(iommu->cap), 256);
int i;
for (i = 0; i < elems; i++)
--
2.5.0
next prev parent reply other threads:[~2016-05-27 22:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-27 22:24 [PATCH v2 0/2] fix and cleanup for iommu/vt-d Wei Yang
2016-05-27 22:24 ` Wei Yang [this message]
2016-05-27 22:24 ` [PATCH v2 2/2] iommu/vt-d: use marco for dmar_domain's second level size and shift Wei Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1464387848-16942-2-git-send-email-richard.weiyang@gmail.com \
--to=richard.weiyang@gmail.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robin.murphy@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).