From: Yinghai Lu <yinghai@kernel.org>
To: "H. Peter Anvin" <hpa@zytor.com>, Tony Luck <tony.luck@intel.com>,
Bjorn Helgaas <bhelgaas@google.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>, x86 <x86@kernel.org>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-acpi@vger.kernel.org, Yinghai Lu <yinghai@kernel.org>,
Joerg Roedel <joro@8bytes.org>,
Donald Dutile <ddutile@redhat.com>
Subject: [PATCH v2 04/10] IOMMU: iommu_unique_seq_id()
Date: Thu, 2 Jan 2014 16:08:11 -0800 [thread overview]
Message-ID: <1388707697-16800-5-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1388707697-16800-1-git-send-email-yinghai@kernel.org>
So for hot-remove/hot-add will reuse seq_id.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Donald Dutile <ddutile@redhat.com>
---
drivers/iommu/dmar.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
index a14867c..f5e0718 100644
--- a/drivers/iommu/dmar.c
+++ b/drivers/iommu/dmar.c
@@ -785,11 +785,22 @@ out:
return err;
}
+static DECLARE_BITMAP(iommu_allocated, 1024);
+
+static int iommu_unique_seq_id(void)
+{
+ int id;
+
+ id = find_first_zero_bit(iommu_allocated, 1024);
+ __set_bit(id, iommu_allocated);
+
+ return id;
+}
+
int alloc_iommu(struct dmar_drhd_unit *drhd)
{
struct intel_iommu *iommu;
u32 ver, sts;
- static int iommu_allocated = 0;
int agaw = 0;
int msagaw = 0;
int err;
@@ -803,7 +814,7 @@ int alloc_iommu(struct dmar_drhd_unit *drhd)
if (!iommu)
return -ENOMEM;
- iommu->seq_id = iommu_allocated++;
+ iommu->seq_id = iommu_unique_seq_id();
sprintf (iommu->name, "dmar%d", iommu->seq_id);
err = map_iommu(iommu, drhd->reg_base_addr);
@@ -855,6 +866,7 @@ int alloc_iommu(struct dmar_drhd_unit *drhd)
err_unmap:
unmap_iommu(iommu);
error:
+ __clear_bit(iommu->seq_id, iommu_allocated);
kfree(iommu);
return err;
}
@@ -869,6 +881,8 @@ void free_iommu(struct intel_iommu *iommu)
if (iommu->reg)
unmap_iommu(iommu);
+ __clear_bit(iommu->seq_id, iommu_allocated);
+
kfree(iommu);
}
--
1.8.4
next prev parent reply other threads:[~2014-01-03 0:08 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-03 0:08 [PATCH v2 00/10] IOMMU: irq-remapping and dmar hotplug support Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 01/10] IOMMU: Update dmar units devices list during hotplug Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 02/10] IOMMU: Fix tboot force iommu logic Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 03/10] IOMMU: Don't clean handler data before free_irq() Yinghai Lu
2014-01-03 0:08 ` Yinghai Lu [this message]
2014-01-03 0:08 ` [PATCH v2 05/10] ACPI: Add acpi_run_dsm() Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 06/10] IOMMU: Separate free_dmar_iommu from free_iommu Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 07/10] IOMMU: Add init_dmar_one() Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 08/10] IOMMU: Add intel_enable_irq_remapping_one() Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 09/10] IOMMU: Add dmar_parse_one_drhd() Yinghai Lu
2014-01-03 0:08 ` [PATCH v2 10/10] IOMMU: Add intel iommu irq-remapping and dmar hotplug support Yinghai Lu
2014-01-06 2:23 ` Yijing Wang
2014-01-06 2:23 ` Yijing Wang
2014-01-06 3:12 ` Yijing Wang
2014-01-06 3:12 ` Yijing Wang
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=1388707697-16800-5-git-send-email-yinghai@kernel.org \
--to=yinghai@kernel.org \
--cc=bhelgaas@google.com \
--cc=ddutile@redhat.com \
--cc=hpa@zytor.com \
--cc=joro@8bytes.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.