Martin Roth has uploaded this change for review. ( https://review.coreboot.org/29343
Change subject: soc/amd/stoneyridge: Set IOMMU support to follow device setting ......................................................................
soc/amd/stoneyridge: Set IOMMU support to follow device setting
Instead of forcing the IOMMU to be enabled, change it to only be enabled if the device is enabled in devicetree.
BUG=b:118612241 TEST=Verify that IOMMU is disabled.
Change-Id: I6cfd6c81f47de23c54a49ec7cf87b219215ced5e Signed-off-by: Martin Roth martinroth@google.com --- M src/soc/amd/common/block/pi/agesawrapper.c M src/soc/amd/stoneyridge/northbridge.c 2 files changed, 8 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/43/29343/1
diff --git a/src/soc/amd/common/block/pi/agesawrapper.c b/src/soc/amd/common/block/pi/agesawrapper.c index 87e0b69..3e7f6f9 100644 --- a/src/soc/amd/common/block/pi/agesawrapper.c +++ b/src/soc/amd/common/block/pi/agesawrapper.c @@ -29,6 +29,7 @@ #include <amdblocks/agesawrapper.h> #include <amdblocks/image.h> #include <amdblocks/BiosCallOuts.h> +#include <soc/pci_devs.h> #include <soc/southbridge.h> #include <soc/northbridge.h> #include <soc/cpu.h> @@ -323,8 +324,11 @@ */ AMD_LATE_PARAMS *LateParams = create_struct(&AmdParamStruct);
- LateParams->GnbLateConfiguration.GnbIoapicId = CONFIG_MAX_CPUS + 1; - LateParams->GnbLateConfiguration.FchIoapicId = CONFIG_MAX_CPUS; + const struct device *dev = dev_find_slot(0, IOMMU_DEVFN); + if (!dev->enabled) { + LateParams->GnbLateConfiguration.GnbIoapicId = CONFIG_MAX_CPUS + 1; + LateParams->GnbLateConfiguration.FchIoapicId = CONFIG_MAX_CPUS; + }
timestamp_add_now(TS_AGESA_INIT_LATE_START); Status = AmdInitLate(LateParams); diff --git a/src/soc/amd/stoneyridge/northbridge.c b/src/soc/amd/stoneyridge/northbridge.c index a2ae52c..e981f83 100644 --- a/src/soc/amd/stoneyridge/northbridge.c +++ b/src/soc/amd/stoneyridge/northbridge.c @@ -509,7 +509,8 @@
void SetNbEnvParams(GNB_ENV_CONFIGURATION *params) { - params->IommuSupport = TRUE; + const struct device *dev = SOC_IOMMU_DEV; + params->IommuSupport = dev->enabled; set_board_env_params(params); }