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: ZhenHua Li <zhen-hual@hp.com> Tested-by: Baoquan He <bhe@redhat.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
af3b358e48
commit
7c3c9876d9
|
@ -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)
|
||||||
|
|
||||||
__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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue