From b6bfc4417ff13168d69c4cbf2338f62c89c82dfd Mon Sep 17 00:00:00 2001 From: Chandni Cherukuri Date: Tue, 28 Jan 2020 12:01:49 +0530 Subject: Platform/ARM: Fix EP Device Attributes(memory, opttlp, msgpack) There are random issues seen across different EP device when the total remote memory exposed by EP device DVSEC capabilities is used. A stable behaviour is observed when the memory is fixed to 8GB. Optimized TLP and message packing has been disabled as there are issues seen when enabling them. Change-Id: I745522e273925c5537b311b093b4f76d287d5ef0 Signed-off-by: Chandni Cherukuri --- Platform/ARM/Drivers/CcixDxe/CcixDeviceConfigure.c | 2 ++ Platform/ARM/N1SdpPkg/Drivers/CcixHostDxe/CcixHostDxe.c | 8 +++++--- Platform/ARM/N1SdpPkg/Include/N1SdpPlatform.h | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Platform/ARM/Drivers/CcixDxe/CcixDeviceConfigure.c b/Platform/ARM/Drivers/CcixDxe/CcixDeviceConfigure.c index 9b2ee3b2..e7b80e0c 100644 --- a/Platform/ARM/Drivers/CcixDxe/CcixDeviceConfigure.c +++ b/Platform/ARM/Drivers/CcixDxe/CcixDeviceConfigure.c @@ -698,6 +698,7 @@ CheckOptTlpSupport ( } } } + Ccix->OptTlpSupported = FALSE; return EFI_SUCCESS; ErrorExit: DEBUG((DEBUG_ERROR, "%a failed: %r\n", __func__, Status)); @@ -729,6 +730,7 @@ CheckMsgPackEnabled ( break; } } + Ccix->MsgPackEnabled = FALSE; return EFI_SUCCESS; ErrorExit: DEBUG((DEBUG_ERROR, "%a failed: %r\n", __func__, Status)); diff --git a/Platform/ARM/N1SdpPkg/Drivers/CcixHostDxe/CcixHostDxe.c b/Platform/ARM/N1SdpPkg/Drivers/CcixHostDxe/CcixHostDxe.c index 7c990738..4c4048dd 100644 --- a/Platform/ARM/N1SdpPkg/Drivers/CcixHostDxe/CcixHostDxe.c +++ b/Platform/ARM/N1SdpPkg/Drivers/CcixHostDxe/CcixHostDxe.c @@ -51,11 +51,11 @@ void EPMemoryInit(void) UINT64 *Ptr = (UINT64 *)ExtMemory; DEBUG((DEBUG_ERROR, "Initializing remote memory...")); - for (Count = 0; Count < TotalMemorySize; Count = Count + 8) + for (Count = 0; Count < 0x200000000UL; Count = Count + 8) *Ptr++ = 0x0; DEBUG((DEBUG_ERROR, "Done\n")); DEBUG((DEBUG_ERROR, "Flushing caches...")); - WriteBackInvalidateDataCacheRange((void *) ExtMemory, TotalMemorySize); + WriteBackInvalidateDataCacheRange((void *) ExtMemory, 0x200000000UL); DEBUG((DEBUG_ERROR, "Done\n")); } @@ -714,7 +714,7 @@ CcixPostConfigurationSetup( Status = gDS->AddMemorySpace ( EfiGcdMemoryTypeSystemMemory, FixedPcdGet64 (PcdExtMemorySpace), - TotalMemorySize, + 0x200000000UL, EFI_MEMORY_SP ); } @@ -859,6 +859,8 @@ CcixGetCcixCapabilities ( /* Value from the register indicates the PoolSize in integer multiples of 64KB */ *MemorySize += ((Val64 | MEMPOOL_SIZE_MASK) + 1); } + //hard Coding to 8 Gb as we see crash in grub accessing memory beyond + *MemorySize = 0x200000000UL; } } return Status; diff --git a/Platform/ARM/N1SdpPkg/Include/N1SdpPlatform.h b/Platform/ARM/N1SdpPkg/Include/N1SdpPlatform.h index 435efc53..a56d71db 100644 --- a/Platform/ARM/N1SdpPkg/Include/N1SdpPlatform.h +++ b/Platform/ARM/N1SdpPkg/Include/N1SdpPlatform.h @@ -51,5 +51,5 @@ #define N1SDP_PLAT_INFO_STRUCT_BASE 0x06008000 // Extended memory size for CCIX -#define N1SDP_EXT_MEM_SIZE 0x400000000 +#define N1SDP_EXT_MEM_SIZE 0x200000000 #endif -- cgit v1.2.3