diff options
Diffstat (limited to 'drivers/pci/dmar.c')
-rw-r--r-- | drivers/pci/dmar.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 7b287cb38b7a..ab99783dccec 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
@@ -33,6 +33,7 @@ | |||
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> | ||
36 | 37 | ||
37 | #undef PREFIX | 38 | #undef PREFIX |
38 | #define PREFIX "DMAR:" | 39 | #define PREFIX "DMAR:" |
@@ -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; |