summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTimothy Pearson <tpearson@raptorengineeringinc.com>2016-01-01 23:30:42 -0600
committerMartin Roth <martinroth@google.com>2016-01-04 16:59:21 +0100
commit77133afe3142096cc7ea7755bfc727f59f2282f9 (patch)
tree96e98dd900ff88193700a80338fbb02f58fe1011 /src
parentada36d4cff54c419479a7865278108d2ae44bc6e (diff)
downloadcoreboot-77133afe3142096cc7ea7755bfc727f59f2282f9.tar.xz
sb/amd/sr5650: Correctly locate CPU MMCONFIG resource
The code committed in GIT hash * 1eaaa0 southbridge/amd/sr5650:Add MCFG ACPI table support did not correctly locate the CPU MMCONFIG resource, leading to failures with operating systems and firmware (e.g. SeaBIOS) when the PCI extended configuration space option was activated. Due to the southbridge routing not being set up, MMCONFIG accesses were targetting DRAM and therefore the PCI devices were not being configured. The failure normally manifests as a system hang immediately after PCI configuration starts. Search for the CPU MMCONFIG resource on all domains below the root device. Change-Id: I0df2f825fef2de46563db87af78d0609ab3d8c5a Signed-off-by: Timothy Pearson <tpearson@raptorengineeringinc.com> Reviewed-on: https://review.coreboot.org/12821 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/southbridge/amd/sr5650/sr5650.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/southbridge/amd/sr5650/sr5650.c b/src/southbridge/amd/sr5650/sr5650.c
index d4355d6861..818b0e646c 100644
--- a/src/southbridge/amd/sr5650/sr5650.c
+++ b/src/southbridge/amd/sr5650/sr5650.c
@@ -35,13 +35,13 @@ extern void set_pcie_dereset(void);
extern void set_pcie_reset(void);
struct resource * sr5650_retrieve_cpu_mmio_resource() {
- device_t cpu;
+ device_t domain;
struct resource *res;
- for (cpu = all_devices; cpu; cpu = cpu->next) {
- if (cpu->bus->dev->path.type != DEVICE_PATH_CPU_CLUSTER)
+ for (domain = all_devices; domain; domain = domain->next) {
+ if (domain->bus->dev->path.type != DEVICE_PATH_DOMAIN)
continue;
- res = probe_resource(cpu->bus->dev, 0xc0010058);
+ res = probe_resource(domain->bus->dev, 0xc0010058);
if (res)
return res;
}