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 998f02d2ba42..47aa5938fb04 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 | #define PREFIX "DMAR: " | 38 | #define PREFIX "DMAR: " |
38 | 39 | ||
@@ -412,6 +413,12 @@ parse_dmar_table(void) | |||
412 | */ | 413 | */ |
413 | dmar_table_detect(); | 414 | dmar_table_detect(); |
414 | 415 | ||
416 | /* | ||
417 | * ACPI tables may not be DMA protected by tboot, so use DMAR copy | ||
418 | * SINIT saved in SinitMleData in TXT heap (which is DMA protected) | ||
419 | */ | ||
420 | dmar_tbl = tboot_get_dmar_table(dmar_tbl); | ||
421 | |||
415 | dmar = (struct acpi_table_dmar *)dmar_tbl; | 422 | dmar = (struct acpi_table_dmar *)dmar_tbl; |
416 | if (!dmar) | 423 | if (!dmar) |
417 | return -ENODEV; | 424 | return -ENODEV; |