diff options
Diffstat (limited to 'src/soc/intel/broadwell/acpi.c')
-rw-r--r-- | src/soc/intel/broadwell/acpi.c | 10 |
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); } |