diff options
Diffstat (limited to 'drivers/pci/dmar.c')
-rw-r--r-- | drivers/pci/dmar.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 270ed222a075..14bbaa17e2ca 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
@@ -33,9 +33,10 @@ | |||
33 | #include <linux/timer.h> | 33 | #include <linux/timer.h> |
34 | #include <linux/irq.h> | 34 | #include <linux/irq.h> |
35 | #include <linux/interrupt.h> | 35 | #include <linux/interrupt.h> |
36 | #include <linux/tboot.h> | ||
37 | #include <linux/dmi.h> | ||
36 | 38 | ||
37 | #undef PREFIX | 39 | #define PREFIX "DMAR: " |
38 | #define PREFIX "DMAR:" | ||
39 | 40 | ||
40 | /* No locks are needed as DMA remapping hardware unit | 41 | /* No locks are needed as DMA remapping hardware unit |
41 | * list is constructed at boot time and hotplug of | 42 | * list is constructed at boot time and hotplug of |
@@ -413,6 +414,12 @@ parse_dmar_table(void) | |||
413 | */ | 414 | */ |
414 | dmar_table_detect(); | 415 | dmar_table_detect(); |
415 | 416 | ||
417 | /* | ||
418 | * ACPI tables may not be DMA protected by tboot, so use DMAR copy | ||
419 | * SINIT saved in SinitMleData in TXT heap (which is DMA protected) | ||
420 | */ | ||
421 | dmar_tbl = tboot_get_dmar_table(dmar_tbl); | ||
422 | |||
416 | dmar = (struct acpi_table_dmar *)dmar_tbl; | 423 | dmar = (struct acpi_table_dmar *)dmar_tbl; |
417 | if (!dmar) | 424 | if (!dmar) |
418 | return -ENODEV; | 425 | return -ENODEV; |