summaryrefslogtreecommitdiff
path: root/src/soc/intel/broadwell/acpi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/broadwell/acpi.c')
-rw-r--r--src/soc/intel/broadwell/acpi.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/soc/intel/broadwell/acpi.c b/src/soc/intel/broadwell/acpi.c
index 5d3992c0a0..67b193e1f7 100644
--- a/src/soc/intel/broadwell/acpi.c
+++ b/src/soc/intel/broadwell/acpi.c
@@ -7,6 +7,7 @@
#include <cpu/intel/haswell/haswell.h>
#include <device/pci_ops.h>
#include <console/console.h>
+#include <device/device.h>
#include <types.h>
#include <cpu/x86/msr.h>
#include <cpu/intel/turbo.h>
@@ -69,8 +70,13 @@ static unsigned long acpi_fill_dmar(unsigned long current)
if (emit_igd) {
const unsigned long tmp = current;
- current += acpi_create_dmar_rmrr(current, 0,
- sa_get_gsm_base(), sa_get_tolud_base() - 1);
+ const struct device *sa_dev = pcidev_on_root(0, 0);
+
+ /* Bit 0 is lock bit, not part of address */
+ const u32 tolud = pci_read_config32(sa_dev, TOLUD) & ~1;
+ const u32 bgsm = pci_read_config32(sa_dev, BGSM) & ~1;
+
+ current += acpi_create_dmar_rmrr(current, 0, bgsm, tolud - 1);
current += acpi_create_dmar_ds_pci(current, 0, 2, 0);
acpi_dmar_rmrr_fixup(tmp, current);
}