aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/skylake/romstage/systemagent.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/skylake/romstage/systemagent.c')
-rw-r--r--src/soc/intel/skylake/romstage/systemagent.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/soc/intel/skylake/romstage/systemagent.c b/src/soc/intel/skylake/romstage/systemagent.c
index 00a2782723..71a9bee1e0 100644
--- a/src/soc/intel/skylake/romstage/systemagent.c
+++ b/src/soc/intel/skylake/romstage/systemagent.c
@@ -26,11 +26,12 @@
static void systemagent_vtd_init(void)
{
- const struct device *const dev = dev_find_slot(0, SA_DEVFN_ROOT);
+ const struct device *const root_dev = dev_find_slot(0, SA_DEVFN_ROOT);
+ const struct device *const igd_dev = dev_find_slot(0, SA_DEVFN_IGD);
const struct soc_intel_skylake_config *config = NULL;
- if (dev)
- config = dev->chip_info;
+ if (root_dev)
+ config = root_dev->chip_info;
if (config && config->ignore_vtd)
return;
@@ -39,7 +40,10 @@ static void systemagent_vtd_init(void)
if (!vtd_capable)
return;
- sa_set_mch_bar(soc_vtd_resources, ARRAY_SIZE(soc_vtd_resources));
+ if (igd_dev && igd_dev->enabled)
+ sa_set_mch_bar(&soc_gfxvt_mmio_descriptor, 1);
+
+ sa_set_mch_bar(&soc_vtvc0_mmio_descriptor, 1);
}
void systemagent_early_init(void)