[coreboot-gerrit] Patch set updated for coreboot: aff7ef8 AMD Olive Hill: Eliminate unnecessary memory copy

Bruce Griffith (Bruce.Griffith@se-eng.com) gerrit at coreboot.org
Fri Jul 26 23:09:31 CEST 2013


Bruce Griffith (Bruce.Griffith at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3818

-gerrit

commit aff7ef8c1960771f0809fbb11ed246113d615526
Author: Bruce Griffith <Bruce.Griffith at se-eng.com>
Date:   Wed Jul 10 22:24:47 2013 -0600

    AMD Olive Hill: Eliminate unnecessary memory copy
    
    Eliminate an unnecessary copy of the DDI descriptor list and
    the PCIe port descriptor list.  As descriptor tables, these
    tables do not need dynamic updating and should be used from
    ROM without runtime copying.
    
    There will be a corresponding patch for AGESA that adds CONST
    modifiers to function parameters that are pass-by-reference
    "IN" values (read-only pointers).
    
    Change-Id: I7ab78e58041e9247db22d0f97a6f76d45f338db0
    Signed-off-by: Bruce Griffith <Bruce.Griffith at se-eng.com>
    Reviewed-by: Marc Jones <marc.jones at se-eng.com>
    Tested-by: Bruce Griffith <bruce.griffith at se-eng.com>
---
 src/mainboard/amd/olivehill/PlatformGnbPcie.c | 58 +++++++--------------------
 1 file changed, 14 insertions(+), 44 deletions(-)

diff --git a/src/mainboard/amd/olivehill/PlatformGnbPcie.c b/src/mainboard/amd/olivehill/PlatformGnbPcie.c
index 1131718..3e1c327 100644
--- a/src/mainboard/amd/olivehill/PlatformGnbPcie.c
+++ b/src/mainboard/amd/olivehill/PlatformGnbPcie.c
@@ -26,7 +26,7 @@
 
 #define FILECODE PROC_GNB_PCIE_FAMILY_0X15_F15PCIECOMPLEXCONFIG_FILECODE
 
-PCIe_PORT_DESCRIPTOR PortList [] = {
+static PCIe_PORT_DESCRIPTOR PortList [] = {
 	{
 		0, //Descriptor flags  !!!IMPORTANT!!! Terminate last element of array
 		PCIE_ENGINE_DATA_INITIALIZER (PciePortEngine, 3, 3),
@@ -78,7 +78,7 @@ PCIe_PORT_DESCRIPTOR PortList [] = {
 	}
 };
 
-PCIe_DDI_DESCRIPTOR DdiList [] = {
+static PCIe_DDI_DESCRIPTOR DdiList [] = {
 	/* DP0 to HDMI0/DP */
 	{
 		0,
@@ -99,11 +99,11 @@ PCIe_DDI_DESCRIPTOR DdiList [] = {
 	},
 };
 
-PCIe_COMPLEX_DESCRIPTOR Kabini = {
-        DESCRIPTOR_TERMINATE_LIST,
-        0,
-        PortList,
-        DdiList
+static const PCIe_COMPLEX_DESCRIPTOR PcieComplex = {
+		DESCRIPTOR_TERMINATE_LIST,
+		0,
+		PortList,
+		DdiList
 };
 
 /*---------------------------------------------------------------------------------------*/
@@ -127,10 +127,8 @@ OemCustomizeInitEarly (
 	IN  OUT AMD_EARLY_PARAMS    *InitEarly
 	)
 {
-	AGESA_STATUS         Status;
-	VOID                 *KabiniPcieComplexListPtr;
-	VOID                 *KabiniPciePortPtr;
-	VOID                 *KabiniPcieDdiPtr;
+	AGESA_STATUS            Status;
+	PCIe_COMPLEX_DESCRIPTOR *PcieComplexListPtr;
 
 	ALLOCATE_HEAP_PARAMS AllocHeapParams;
 
@@ -139,46 +137,18 @@ OemCustomizeInitEarly (
 	/*  */
 	/* Allocate buffer for PCIe_COMPLEX_DESCRIPTOR , PCIe_PORT_DESCRIPTOR and PCIe_DDI_DESCRIPTOR */
 	/*  */
-	AllocHeapParams.RequestedBufferSize = sizeof(Kabini) + sizeof(PortList) + sizeof(DdiList);
+	AllocHeapParams.RequestedBufferSize = sizeof(PcieComplex);
 
 	AllocHeapParams.BufferHandle = AMD_MEM_MISC_HANDLES_START;
 	AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
 	Status = HeapAllocateBuffer (&AllocHeapParams, &InitEarly->StdHeader);
 	if ( Status!= AGESA_SUCCESS) {
-		/* Could not allocate buffer for PCIe_COMPLEX_DESCRIPTOR , PCIe_PORT_DESCRIPTOR and PCIe_DDI_DESCRIPTOR */
+		/* Could not allocate buffer for PCIe_COMPLEX_DESCRIPTOR */
 		ASSERT(FALSE);
 		return;
 	}
 
-	KabiniPcieComplexListPtr  =  (PCIe_COMPLEX_DESCRIPTOR *) AllocHeapParams.BufferPtr;
-
-	AllocHeapParams.BufferPtr += sizeof(Kabini);
-	KabiniPciePortPtr         =  (PCIe_PORT_DESCRIPTOR *)AllocHeapParams.BufferPtr;
-
-	AllocHeapParams.BufferPtr += sizeof(PortList);
-	KabiniPcieDdiPtr          =  (PCIe_DDI_DESCRIPTOR *) AllocHeapParams.BufferPtr;
-
-	LibAmdMemFill (KabiniPcieComplexListPtr,
-		       0,
-		       sizeof (Kabini),
-		       &InitEarly->StdHeader);
-
-	LibAmdMemFill (KabiniPciePortPtr,
-		       0,
-		       sizeof (PortList),
-		       &InitEarly->StdHeader);
-
-	LibAmdMemFill (KabiniPcieDdiPtr,
-		       0,
-		       sizeof (DdiList),
-		       &InitEarly->StdHeader);
-
-	LibAmdMemCopy  (KabiniPcieComplexListPtr, &Kabini, sizeof (Kabini), &InitEarly->StdHeader);
-	LibAmdMemCopy  (KabiniPciePortPtr, &PortList[0], sizeof (PortList), &InitEarly->StdHeader);
-	LibAmdMemCopy  (KabiniPcieDdiPtr, &DdiList[0], sizeof (DdiList), &InitEarly->StdHeader);
-
-	((PCIe_COMPLEX_DESCRIPTOR*)KabiniPcieComplexListPtr)->PciePortList =  (PCIe_PORT_DESCRIPTOR*)KabiniPciePortPtr;
-	((PCIe_COMPLEX_DESCRIPTOR*)KabiniPcieComplexListPtr)->DdiLinkList  =  (PCIe_DDI_DESCRIPTOR*)KabiniPcieDdiPtr;
-
-	InitEarly->GnbConfig.PcieComplexList = KabiniPcieComplexListPtr;
+	PcieComplexListPtr  =  (PCIe_COMPLEX_DESCRIPTOR *) AllocHeapParams.BufferPtr;
+	LibAmdMemCopy  (PcieComplexListPtr, &PcieComplex, sizeof(PcieComplex), &InitEarly->StdHeader);
+	InitEarly->GnbConfig.PcieComplexList = PcieComplexListPtr;
 }



More information about the coreboot-gerrit mailing list