diff options
Diffstat (limited to 'drivers/pci/dmar.c')
| -rw-r--r-- | drivers/pci/dmar.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 26c536b51c5a..5f333403c2ea 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
| @@ -42,6 +42,7 @@ | |||
| 42 | LIST_HEAD(dmar_drhd_units); | 42 | LIST_HEAD(dmar_drhd_units); |
| 43 | 43 | ||
| 44 | static struct acpi_table_header * __initdata dmar_tbl; | 44 | static struct acpi_table_header * __initdata dmar_tbl; |
| 45 | static acpi_size dmar_tbl_size; | ||
| 45 | 46 | ||
| 46 | static void __init dmar_register_drhd_unit(struct dmar_drhd_unit *drhd) | 47 | static void __init dmar_register_drhd_unit(struct dmar_drhd_unit *drhd) |
| 47 | { | 48 | { |
| @@ -288,8 +289,9 @@ static int __init dmar_table_detect(void) | |||
| 288 | acpi_status status = AE_OK; | 289 | acpi_status status = AE_OK; |
| 289 | 290 | ||
| 290 | /* if we could find DMAR table, then there are DMAR devices */ | 291 | /* if we could find DMAR table, then there are DMAR devices */ |
| 291 | status = acpi_get_table(ACPI_SIG_DMAR, 0, | 292 | status = acpi_get_table_with_size(ACPI_SIG_DMAR, 0, |
| 292 | (struct acpi_table_header **)&dmar_tbl); | 293 | (struct acpi_table_header **)&dmar_tbl, |
| 294 | &dmar_tbl_size); | ||
| 293 | 295 | ||
| 294 | if (ACPI_SUCCESS(status) && !dmar_tbl) { | 296 | if (ACPI_SUCCESS(status) && !dmar_tbl) { |
| 295 | printk (KERN_WARNING PREFIX "Unable to map DMAR\n"); | 297 | printk (KERN_WARNING PREFIX "Unable to map DMAR\n"); |
| @@ -489,6 +491,7 @@ void __init detect_intel_iommu(void) | |||
| 489 | iommu_detected = 1; | 491 | iommu_detected = 1; |
| 490 | #endif | 492 | #endif |
| 491 | } | 493 | } |
| 494 | early_acpi_os_unmap_memory(dmar_tbl, dmar_tbl_size); | ||
| 492 | dmar_tbl = NULL; | 495 | dmar_tbl = NULL; |
| 493 | } | 496 | } |
| 494 | 497 | ||
