summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/amd/mtrr/amd_mtrr.c24
-rw-r--r--src/northbridge/amd/agesa/family10/northbridge.c5
-rw-r--r--src/northbridge/amd/agesa/family15/northbridge.c5
-rw-r--r--src/northbridge/amd/agesa/family15tn/northbridge.c5
-rw-r--r--src/northbridge/amd/amdfam10/northbridge.c5
-rw-r--r--src/northbridge/amd/amdk8/northbridge.c12
6 files changed, 19 insertions, 37 deletions
diff --git a/src/cpu/amd/mtrr/amd_mtrr.c b/src/cpu/amd/mtrr/amd_mtrr.c
index ec72425693..f639d59bad 100644
--- a/src/cpu/amd/mtrr/amd_mtrr.c
+++ b/src/cpu/amd/mtrr/amd_mtrr.c
@@ -102,6 +102,20 @@ static void set_fixed_mtrr_resource(void *gp, struct device *dev, struct resourc
}
+static void uma_fb_resource(void *gp, struct device *dev, struct resource *res)
+{
+ struct mem_state *state = gp;
+ unsigned long topk;
+
+ topk = resk(res->base + res->size);
+ if (state->tom2k < topk) {
+ state->tom2k = topk;
+ }
+ if ((topk < 4*1024*1024) && (state->tomk < topk)) {
+ state->tomk = topk;
+ }
+}
+
void amd_setup_mtrrs(void)
{
unsigned long address_bits;
@@ -133,6 +147,9 @@ void amd_setup_mtrrs(void)
state.tomk = state.tom2k = 0;
search_global_resources(
+ IORESOURCE_MEM | IORESOURCE_UMA_FB, IORESOURCE_MEM | IORESOURCE_UMA_FB,
+ uma_fb_resource, &state);
+ search_global_resources(
IORESOURCE_MEM | IORESOURCE_CACHEABLE, IORESOURCE_MEM | IORESOURCE_CACHEABLE,
set_fixed_mtrr_resource, &state);
@@ -144,13 +161,6 @@ void amd_setup_mtrrs(void)
state.tomk = (state.tomk + TOP_MEM_MASK_KB) & ~TOP_MEM_MASK_KB;
msr.hi = state.tomk >> 22;
msr.lo = state.tomk << 10;
- /* If UMA graphics is enabled, the frame buffer memory
- * has been deducted from the size of memory below 4GB.
- * When setting TOM, include UMA DRAM
- */
- #if CONFIG_GFXUMA
- msr.lo += uma_memory_size;
- #endif
wrmsr(TOP_MEM, msr);
/* if DRAM above 4GB: set SYSCFG_MSR_TOM2En and SYSCFG_MSR_TOM2WB */
diff --git a/src/northbridge/amd/agesa/family10/northbridge.c b/src/northbridge/amd/agesa/family10/northbridge.c
index 12d83ad9d3..fb64757e5a 100644
--- a/src/northbridge/amd/agesa/family10/northbridge.c
+++ b/src/northbridge/amd/agesa/family10/northbridge.c
@@ -1063,11 +1063,6 @@ static void amdfam10_domain_set_resources(device_t dev)
}
}
-#if CONFIG_GFXUMA
- /* Deduct uma memory before reporting because
- * this is what the mtrr code expects */
- sizek -= uma_memory_size / 1024;
-#endif
ram_resource(dev, (idx | i), basek, sizek);
idx += 0x10;
#if CONFIG_WRITE_HIGH_TABLES
diff --git a/src/northbridge/amd/agesa/family15/northbridge.c b/src/northbridge/amd/agesa/family15/northbridge.c
index c6cbbede3e..0a4691818f 100644
--- a/src/northbridge/amd/agesa/family15/northbridge.c
+++ b/src/northbridge/amd/agesa/family15/northbridge.c
@@ -830,11 +830,6 @@ static void domain_set_resources(device_t dev)
}
}
-#if CONFIG_GFXUMA
- /* Deduct uma memory before reporting because
- * this is what the mtrr code expects */
- sizek -= uma_memory_size / 1024;
-#endif
ram_resource(dev, (idx | i), basek, sizek);
idx += 0x10;
#if CONFIG_WRITE_HIGH_TABLES
diff --git a/src/northbridge/amd/agesa/family15tn/northbridge.c b/src/northbridge/amd/agesa/family15tn/northbridge.c
index efc8e685dd..0330017b07 100644
--- a/src/northbridge/amd/agesa/family15tn/northbridge.c
+++ b/src/northbridge/amd/agesa/family15tn/northbridge.c
@@ -768,11 +768,6 @@ static void domain_set_resources(device_t dev)
}
}
-#if CONFIG_GFXUMA == 1
- /* Deduct uma memory before reporting because
- * this is what the mtrr code expects */
- sizek -= uma_memory_size / 1024;
-#endif
ram_resource(dev, (idx | i), basek, sizek);
idx += 0x10;
#if CONFIG_WRITE_HIGH_TABLES==1
diff --git a/src/northbridge/amd/amdfam10/northbridge.c b/src/northbridge/amd/amdfam10/northbridge.c
index 2c9b6a22c4..c53da22043 100644
--- a/src/northbridge/amd/amdfam10/northbridge.c
+++ b/src/northbridge/amd/amdfam10/northbridge.c
@@ -1095,11 +1095,6 @@ static void amdfam10_domain_set_resources(device_t dev)
}
}
-#if CONFIG_GFXUMA
- /* Deduct uma memory before reporting because
- * this is what the mtrr code expects */
- sizek -= uma_memory_size / 1024;
-#endif
ram_resource(dev, (idx | i), basek, sizek);
idx += 0x10;
#if CONFIG_WRITE_HIGH_TABLES
diff --git a/src/northbridge/amd/amdk8/northbridge.c b/src/northbridge/amd/amdk8/northbridge.c
index a7aa19dc42..c4a8acd643 100644
--- a/src/northbridge/amd/amdk8/northbridge.c
+++ b/src/northbridge/amd/amdk8/northbridge.c
@@ -1093,16 +1093,8 @@ static void amdk8_domain_set_resources(device_t dev)
sizek -= (4*1024*1024 - mmio_basek);
}
}
- /* If sizek == 0, it was split at mmio_basek without a hole.
- * Don't create an empty ram_resource.
- */
-#if CONFIG_GFXUMA
- /* Deduct uma memory before reporting because
- * this is what the mtrr code expects */
- sizek -= uma_memory_size / 1024;
-#endif
- if (sizek)
- ram_resource(dev, (idx | i), basek, sizek);
+
+ ram_resource(dev, (idx | i), basek, sizek);
idx += 0x10;
#if CONFIG_WRITE_HIGH_TABLES
printk(BIOS_DEBUG, "%d: mmio_basek=%08lx, basek=%08x, limitk=%08x\n",