Commit 7c3c9876 authored by Joerg Roedel's avatar Joerg Roedel

iommu/vt-d: Make sure copied over IR entries are not reused

Walk over the copied entries and mark the present ones as
allocated.
Tested-by: default avatarZhenHua Li <zhen-hual@hp.com>
Tested-by: default avatarBaoquan He <bhe@redhat.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent af3b358e
...@@ -451,6 +451,7 @@ static int iommu_load_old_irte(struct intel_iommu *iommu) ...@@ -451,6 +451,7 @@ static int iommu_load_old_irte(struct intel_iommu *iommu)
{ {
struct irte *old_ir_table; struct irte *old_ir_table;
phys_addr_t irt_phys; phys_addr_t irt_phys;
unsigned int i;
size_t size; size_t size;
u64 irta; u64 irta;
...@@ -481,6 +482,15 @@ static int iommu_load_old_irte(struct intel_iommu *iommu) ...@@ -481,6 +482,15 @@ static int iommu_load_old_irte(struct intel_iommu *iommu)
__iommu_flush_cache(iommu, iommu->ir_table->base, size); __iommu_flush_cache(iommu, iommu->ir_table->base, size);
/*
* 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; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment