summaryrefslogtreecommitdiff
path: root/src/soc/amd/common/block
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2024-02-07 21:17:46 +0100
committerFelix Held <felix-coreboot@felixheld.de>2024-02-08 21:26:15 +0000
commitbf76998c965ff6427031d480bb27bcae998ff87d (patch)
tree5f914fdab599598fd2fd4fecb6146b05f6f93149 /src/soc/amd/common/block
parent5ec3deac6b3bd8f8cc16730f2017a7316da816c9 (diff)
soc/amd/common/data_fabric/domain: don't report DRAM as MMIO producer
In commit 30f36c35e75a ("soc/amd: rework DRAM and fixed resource reporting") the reporting of the DRAM resources was moved from the northbridge PCI device to the domain device. amd_pci_domain_fill_ssdt didn't skip those DRAM resources when generation the resource producer ranges which made Windows 10 very unhappy when it tried to evaluating the ACPI tables causing it to reboot in a loop. To fix this, add a check to also skip the resources that have the IORESOURCE_STORED flag set when generating the resource producer ranges for the PCI root. TEST=Windows 10 now successfully boots and reboots again on Mandolin Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I7b6d3fd8c7f89aa4364de7963d745aef8d6b6f42 Reviewed-on: https://review.coreboot.org/c/coreboot/+/80407 Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src/soc/amd/common/block')
-rw-r--r--src/soc/amd/common/block/data_fabric/domain.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/soc/amd/common/block/data_fabric/domain.c b/src/soc/amd/common/block/data_fabric/domain.c
index f5d7216c04..afe79fe8ca 100644
--- a/src/soc/amd/common/block/data_fabric/domain.c
+++ b/src/soc/amd/common/block/data_fabric/domain.c
@@ -281,6 +281,9 @@ void amd_pci_domain_fill_ssdt(const struct device *domain)
devices */
if ((res->flags & IORESOURCE_RESERVE))
continue;
+ /* Don't add MMIO producer ranges for DRAM regions */
+ if (res->flags & IORESOURCE_STORED)
+ continue;
switch (res->flags & IORESOURCE_TYPE_MASK) {
case IORESOURCE_IO:
write_ssdt_domain_io_producer_range(acpi_device_name(domain),