|
@@ -42,6 +42,7 @@
|
|
|
LIST_HEAD(dmar_drhd_units);
|
|
|
|
|
|
static struct acpi_table_header * __initdata dmar_tbl;
|
|
|
+static acpi_size dmar_tbl_size;
|
|
|
|
|
|
static void __init dmar_register_drhd_unit(struct dmar_drhd_unit *drhd)
|
|
|
{
|
|
@@ -288,8 +289,9 @@ static int __init dmar_table_detect(void)
|
|
|
acpi_status status = AE_OK;
|
|
|
|
|
|
/* if we could find DMAR table, then there are DMAR devices */
|
|
|
- status = acpi_get_table(ACPI_SIG_DMAR, 0,
|
|
|
- (struct acpi_table_header **)&dmar_tbl);
|
|
|
+ status = acpi_get_table_with_size(ACPI_SIG_DMAR, 0,
|
|
|
+ (struct acpi_table_header **)&dmar_tbl,
|
|
|
+ &dmar_tbl_size);
|
|
|
|
|
|
if (ACPI_SUCCESS(status) && !dmar_tbl) {
|
|
|
printk (KERN_WARNING PREFIX "Unable to map DMAR\n");
|
|
@@ -481,6 +483,7 @@ void __init detect_intel_iommu(void)
|
|
|
iommu_detected = 1;
|
|
|
#endif
|
|
|
}
|
|
|
+ early_acpi_os_unmap_memory(dmar_tbl, dmar_tbl_size);
|
|
|
dmar_tbl = NULL;
|
|
|
}
|
|
|
|