[coreboot-gerrit] New patch to review for coreboot: b3e579a haswell: fix overflow handling TOUUD

Aaron Durbin (adurbin@google.com) gerrit at coreboot.org
Mon Jun 3 16:54:44 CEST 2013


Aaron Durbin (adurbin at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3352

-gerrit

commit b3e579a7855edf4cbd4e75ad17ce8c08b64895ec
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Mon Jun 3 09:46:56 2013 -0500

    haswell: fix overflow handling TOUUD
    
    It's possible that the TOUUD can be set to less than
    4GiB. When that is the case the size_k variable is
    an extremely large value. Instead ensure TOUUD is greater
    than 4GiB before adding said resources.
    
    Change-Id: I456633d6210824e60665281538300fd15656b86d
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
---
 src/northbridge/intel/haswell/northbridge.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/northbridge/intel/haswell/northbridge.c b/src/northbridge/intel/haswell/northbridge.c
index 5c1ab3e..45d967e 100644
--- a/src/northbridge/intel/haswell/northbridge.c
+++ b/src/northbridge/intel/haswell/northbridge.c
@@ -312,6 +312,7 @@ static void mc_report_map_entries(device_t dev, uint64_t *values)
 static void mc_add_dram_resources(device_t dev)
 {
 	unsigned long base_k, size_k;
+	unsigned long touud_k;
 	unsigned long index;
 	struct resource *resource;
 	uint64_t mc_values[NUM_MAP_ENTRIES];
@@ -396,8 +397,9 @@ static void mc_add_dram_resources(device_t dev)
 
 	/* 4GiB -> TOUUD */
 	base_k = 4096 * 1024; /* 4GiB */
-	size_k = (unsigned long)(mc_values[TOUUD_REG] >> 10) - base_k;
-	if (size_k > 0)
+	touud_k = mc_values[TOUUD_REG] >> 10;
+	size_k = touud_k - base_k;
+	if (touud_k > base_k)
 		ram_resource(dev, index++, base_k, size_k);
 
 	/* Reserve everything between A segment and 1MB:



More information about the coreboot-gerrit mailing list