[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1433513463-19128-16-git-send-email-joro@8bytes.org>
Date: Fri, 5 Jun 2015 16:11:01 +0200
From: Joerg Roedel <joro@...tes.org>
To: iommu@...ts.linux-foundation.org
Cc: zhen-hual@...com, bhe@...hat.com, dwmw2@...radead.org,
vgoyal@...hat.com, dyoung@...hat.com, alex.williamson@...hat.com,
ddutile@...hat.com, ishii.hironobu@...fujitsu.com,
indou.takao@...fujitsu.com, bhelgaas@...gle.com, doug.hatch@...com,
jerry.hoemann@...com, tom.vaden@...com, li.zhang6@...com,
lisa.mitchell@...com, billsumnerlinux@...il.com, rwright@...com,
linux-kernel@...r.kernel.org, linux-pci@...r.kernel.org,
kexec@...ts.infradead.org, joro@...tes.org, jroedel@...e.de
Subject: [PATCH 15/17] iommu/vt-d: Mark irt entries from old kernel as allocated
From: Joerg Roedel <jroedel@...e.de>
After we copied over all irq remapping entries from the old
kernel we need to mark the present entries as allocated in
our table too. Otherwise we might overwrite entries from the
previous kernel and cause DMAR faults.
Tested-by: Baoquan He <bhe@...hat.com>
Signed-off-by: Joerg Roedel <jroedel@...e.de>
---
drivers/iommu/intel_irq_remapping.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c
index fd6c25b..f7b02ca 100644
--- a/drivers/iommu/intel_irq_remapping.c
+++ b/drivers/iommu/intel_irq_remapping.c
@@ -1300,6 +1300,7 @@ static int iommu_load_old_irte(struct intel_iommu *iommu)
{
struct irte *old_ir_table;
phys_addr_t irt_phys;
+ unsigned int i;
size_t size;
u64 irta;
@@ -1325,6 +1326,15 @@ static int iommu_load_old_irte(struct intel_iommu *iommu)
iommu->ir_table->base_old_phys = irt_phys;
iommu->ir_table->base_old_virt = old_ir_table;
+ /*
+ * Now check the table for used entries and mark those as
+ * allocated in the bitmap
+ */
+ for (i = 0; i < INTR_REMAP_TABLE_ENTRIES; i++) {
+ if (iommu->ir_table->base[i].present)
+ bitmap_set(iommu->ir_table->bitmap, i, 1);
+ }
+
return 0;
}
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists