[coreboot-gerrit] Patch set updated for coreboot: northbridge/amd/amdht: Reduce excessive romstage array size

Timothy Pearson (tpearson@raptorengineeringinc.com) gerrit at coreboot.org
Wed Dec 2 23:44:34 CET 2015


Timothy Pearson (tpearson at raptorengineeringinc.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12573

-gerrit

commit c0beb74cc125e3110f3af3b3843aac5852583d41
Author: Timothy Pearson <tpearson at raptorengineeringinc.com>
Date:   Mon Nov 16 11:48:38 2015 -0600

    northbridge/amd/amdht: Reduce excessive romstage array size
    
    Change-Id: Ibcdf5d3927375da5cb72987ae83eaaa789ab9a70
    Signed-off-by: Timothy Pearson <tpearson at raptorengineeringinc.com>
---
 src/northbridge/amd/amdht/ht_wrapper.c | 65 +++++++++++++++++++++-------------
 1 file changed, 40 insertions(+), 25 deletions(-)

diff --git a/src/northbridge/amd/amdht/ht_wrapper.c b/src/northbridge/amd/amdht/ht_wrapper.c
index 18c0ac4..f8ea854 100644
--- a/src/northbridge/amd/amdht/ht_wrapper.c
+++ b/src/northbridge/amd/amdht/ht_wrapper.c
@@ -90,28 +90,43 @@ static const char * event_class_string_decodes[] = {
 	[HT_EVENT_CLASS_INFO] = "INFO"
 };
 
-static const char * event_string_decodes[] = {
-	[HT_EVENT_COH_EVENTS] = "HT_EVENT_COH_EVENTS",
-	[HT_EVENT_COH_NO_TOPOLOGY] = "HT_EVENT_COH_NO_TOPOLOGY",
-	[HT_EVENT_COH_LINK_EXCEED] = "HT_EVENT_COH_LINK_EXCEED",
-	[HT_EVENT_COH_FAMILY_FEUD] = "HT_EVENT_COH_FAMILY_FEUD",
-	[HT_EVENT_COH_NODE_DISCOVERED] = "HT_EVENT_COH_NODE_DISCOVERED",
-	[HT_EVENT_COH_MPCAP_MISMATCH] = "HT_EVENT_COH_MPCAP_MISMATCH",
-	[HT_EVENT_NCOH_EVENTS] = "HT_EVENT_NCOH_EVENTS",
-	[HT_EVENT_NCOH_BUID_EXCEED] = "HT_EVENT_NCOH_BUID_EXCEED",
-	[HT_EVENT_NCOH_LINK_EXCEED] = "HT_EVENT_NCOH_LINK_EXCEED",
-	[HT_EVENT_NCOH_BUS_MAX_EXCEED] = "HT_EVENT_NCOH_BUS_MAX_EXCEED",
-	[HT_EVENT_NCOH_CFG_MAP_EXCEED] = "HT_EVENT_NCOH_CFG_MAP_EXCEED",
-	[HT_EVENT_NCOH_DEVICE_FAILED] = "HT_EVENT_NCOH_DEVICE_FAILED",
-	[HT_EVENT_NCOH_AUTO_DEPTH] = "HT_EVENT_NCOH_AUTO_DEPTH",
-	[HT_EVENT_OPT_EVENTS] = "HT_EVENT_OPT_EVENTS",
-	[HT_EVENT_OPT_REQUIRED_CAP_RETRY] = "HT_EVENT_OPT_REQUIRED_CAP_RETRY",
-	[HT_EVENT_OPT_REQUIRED_CAP_GEN3] = "HT_EVENT_OPT_REQUIRED_CAP_GEN3",
-	[HT_EVENT_HW_EVENTS] = "HT_EVENT_HW_EVENTS",
-	[HT_EVENT_HW_SYNCHFLOOD] = "HT_EVENT_HW_SYNCHFLOOD",
-	[HT_EVENT_HW_HTCRC] = "HT_EVENT_HW_HTCRC"
+typedef struct {
+	uint32_t code;
+	const char * string;
+} event_string_decode_t;
+
+static const event_string_decode_t event_string_decodes[] = {
+	{ HT_EVENT_COH_EVENTS, "HT_EVENT_COH_EVENTS" },
+	{ HT_EVENT_COH_NO_TOPOLOGY, "HT_EVENT_COH_NO_TOPOLOGY" },
+	{ HT_EVENT_COH_LINK_EXCEED, "HT_EVENT_COH_LINK_EXCEED" },
+	{ HT_EVENT_COH_FAMILY_FEUD, "HT_EVENT_COH_FAMILY_FEUD" },
+	{ HT_EVENT_COH_NODE_DISCOVERED, "HT_EVENT_COH_NODE_DISCOVERED" },
+	{ HT_EVENT_COH_MPCAP_MISMATCH, "HT_EVENT_COH_MPCAP_MISMATCH" },
+	{ HT_EVENT_NCOH_EVENTS, "HT_EVENT_NCOH_EVENTS" },
+	{ HT_EVENT_NCOH_BUID_EXCEED, "HT_EVENT_NCOH_BUID_EXCEED" },
+	{ HT_EVENT_NCOH_LINK_EXCEED, "HT_EVENT_NCOH_LINK_EXCEED" },
+	{ HT_EVENT_NCOH_BUS_MAX_EXCEED, "HT_EVENT_NCOH_BUS_MAX_EXCEED" },
+	{ HT_EVENT_NCOH_CFG_MAP_EXCEED, "HT_EVENT_NCOH_CFG_MAP_EXCEED" },
+	{ HT_EVENT_NCOH_DEVICE_FAILED, "HT_EVENT_NCOH_DEVICE_FAILED" },
+	{ HT_EVENT_NCOH_AUTO_DEPTH, "HT_EVENT_NCOH_AUTO_DEPTH" },
+	{ HT_EVENT_OPT_EVENTS, "HT_EVENT_OPT_EVENTS" },
+	{ HT_EVENT_OPT_REQUIRED_CAP_RETRY, "HT_EVENT_OPT_REQUIRED_CAP_RETRY" },
+	{ HT_EVENT_OPT_REQUIRED_CAP_GEN3, "HT_EVENT_OPT_REQUIRED_CAP_GEN3" },
+	{ HT_EVENT_HW_EVENTS, "HT_EVENT_HW_EVENTS" },
+	{ HT_EVENT_HW_SYNCHFLOOD, "HT_EVENT_HW_SYNCHFLOOD" },
+	{ HT_EVENT_HW_HTCRC, "HT_EVENT_HW_HTCRC" }
 };
 
+static const char * event_string_decode(uint32_t event) {
+	uint32_t i;
+	for (i = 0; i < ARRAY_SIZE(event_string_decodes); i++)
+		if (event_string_decodes[i].code == event)
+			break;
+	if (i == ARRAY_SIZE(event_string_decodes))
+		return NULL;
+	return event_string_decodes[i].string;
+}
+
 /**
  * void AMD_CB_EventNotify (u8 evtClass, u16 event, const u8 *pEventData0)
  */
@@ -146,7 +161,7 @@ static void AMD_CB_EventNotify (u8 evtClass, u16 event, const u8 *pEventData0)
 		case HT_EVENT_COH_NO_TOPOLOGY:
 		case HT_EVENT_COH_LINK_EXCEED:
 		case HT_EVENT_COH_FAMILY_FEUD:
-			printk(log_level, event_string_decodes[event]);
+			printk(log_level, event_string_decode(event));
 			break;
 		case HT_EVENT_COH_NODE_DISCOVERED:
 			{
@@ -163,11 +178,11 @@ static void AMD_CB_EventNotify (u8 evtClass, u16 event, const u8 *pEventData0)
 		case HT_EVENT_NCOH_LINK_EXCEED:
 		case HT_EVENT_NCOH_BUS_MAX_EXCEED:
 		case HT_EVENT_NCOH_CFG_MAP_EXCEED:
-			printk(log_level, event_string_decodes[event]);
+			printk(log_level, event_string_decode(event));
 			break;
 		case HT_EVENT_NCOH_DEVICE_FAILED:
 			{
-				printk(log_level, event_string_decodes[event]);
+				printk(log_level, event_string_decode(event));
 				sHtEventNcohDeviceFailed *evt = (sHtEventNcohDeviceFailed*)pEventData0;
 				printk(log_level, ": node %d link %d depth: %d attemptedBUID: %d",
 					evt->node, evt->link, evt->depth, evt->attemptedBUID);
@@ -176,7 +191,7 @@ static void AMD_CB_EventNotify (u8 evtClass, u16 event, const u8 *pEventData0)
 			}
 		case HT_EVENT_NCOH_AUTO_DEPTH:
 			{
-				printk(log_level, event_string_decodes[event]);
+				printk(log_level, event_string_decode(event));
 				sHtEventNcohAutoDepth *evt = (sHtEventNcohAutoDepth*)pEventData0;
 				printk(log_level, ": node %d link %d depth: %d",
 					evt->node, evt->link, evt->depth);
@@ -189,7 +204,7 @@ static void AMD_CB_EventNotify (u8 evtClass, u16 event, const u8 *pEventData0)
 		case HT_EVENT_HW_EVENTS:
 		case HT_EVENT_HW_SYNCHFLOOD:
 		case HT_EVENT_HW_HTCRC:
-			printk(log_level, event_string_decodes[event]);
+			printk(log_level, event_string_decode(event));
 			break;
 		default:
 			printk(log_level, "HT_EVENT_UNKNOWN");



More information about the coreboot-gerrit mailing list