aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/cannonlake/acpi.c
diff options
context:
space:
mode:
authorJohn Zhao <john.zhao@intel.com>2019-04-22 10:45:51 -0700
committerNico Huber <nico.h@gmx.de>2019-05-11 11:16:48 +0000
commit1159a163cd36318d27f8f3b71617ad4a5b781efb (patch)
tree05f00bfd909ae3fb52669596e9e5f23ab096bf8b /src/soc/intel/cannonlake/acpi.c
parent4249348735d18cb2d44506090a675a29b0567e7f (diff)
soc/intel/cnl: Enable VT-d
Enable VT-d through fsp upd VtdDisable. Update remapping structure types in numerical order as all remapping structures of type 0 (DRHD) enumerated before remapping structures of type 1 (RMRR), and so forth. BUG=b:130351429 TEST=Booted to kernel and verified the DMAR table contents. Change-Id: I1d20932e417b9d324edd98c8f2195dc228d2e092 Signed-off-by: John Zhao <john.zhao@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32432 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Pratikkumar V Prajapati <pratikkumar.v.prajapati@intel.com>
Diffstat (limited to 'src/soc/intel/cannonlake/acpi.c')
-rw-r--r--src/soc/intel/cannonlake/acpi.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/soc/intel/cannonlake/acpi.c b/src/soc/intel/cannonlake/acpi.c
index 209e7c52d4..ff9da451c8 100644
--- a/src/soc/intel/cannonlake/acpi.c
+++ b/src/soc/intel/cannonlake/acpi.c
@@ -304,13 +304,6 @@ static unsigned long soc_fill_dmar(unsigned long current)
current += acpi_create_dmar_ds_pci(current, 0, 2, 0);
acpi_dmar_drhd_fixup(tmp, current);
-
- /* Add RMRR entry */
- tmp = current;
- current += acpi_create_dmar_rmrr(current, 0,
- sa_get_gsm_base(), sa_get_tolud_base() - 1);
- current += acpi_create_dmar_ds_pci(current, 0, 2, 0);
- acpi_dmar_rmrr_fixup(tmp, current);
}
struct device *const ipu_dev = dev_find_slot(0, SA_DEVFN_IPU);
@@ -344,6 +337,13 @@ static unsigned long soc_fill_dmar(unsigned long current)
acpi_dmar_drhd_fixup(tmp, current);
}
+ /* Add RMRR entry */
+ const unsigned long tmp = current;
+ current += acpi_create_dmar_rmrr(current, 0,
+ sa_get_gsm_base(), sa_get_tolud_base() - 1);
+ current += acpi_create_dmar_ds_pci(current, 0, 2, 0);
+ acpi_dmar_rmrr_fixup(tmp, current);
+
return current;
}
@@ -361,6 +361,7 @@ unsigned long sa_write_acpi_tables(struct device *dev, unsigned long current,
printk(BIOS_DEBUG, "ACPI: * DMAR\n");
acpi_create_dmar(dmar, DMAR_INTR_REMAP, soc_fill_dmar);
+
current += dmar->header.length;
current = acpi_align_current(current);
acpi_add_table(rsdp, dmar);