From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web09.135.1573101421434575947 for ; Wed, 06 Nov 2019 20:37:01 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: ethan.tsao@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Nov 2019 20:37:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,276,1569308400"; d="scan'208";a="377306547" Received: from ethantsa-mobl1.gar.corp.intel.com ([10.5.241.17]) by orsmga005.jf.intel.com with ESMTP; 06 Nov 2019 20:36:59 -0800 From: ethan.tsao@intel.com To: devel@edk2.groups.io Cc: Sai Chaganty , Ray Ni Subject: [PATCH] IntelSiliconPkg/Library:Add BaseConfigBlockLib Library Date: Thu, 7 Nov 2019 12:36:56 +0800 Message-Id: <20191107043656.6136-1-ethan.tsao@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2318 Establish one copy of Config blocks library class and instance in IntelSiliconPkg and remove copies from other silicon packages , like KabyLakeSiliconPkg, CoffelakeSiliconPkg. Signed-off-by: Ethan Tsao Cc: Sai Chaganty Cc: Ray Ni --- Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c | 146 -------------------------------------------------------------------------------------------------------------------------------------------------- Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf | 29 ----------------------------- Silicon/Intel/{KabylakeSiliconPkg => IntelSiliconPkg}/Library/BaseConfigBlockLib/BaseConfigBlockLib.c | 0 Silicon/Intel/{KabylakeSiliconPkg => IntelSiliconPkg}/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf | 0 4 files changed, 175 deletions(-) diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c b/Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c deleted file mode 100644 index 369dab97ee..0000000000 --- a/Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c +++ /dev/null @@ -1,146 +0,0 @@ -/** @file - Library functions for Config Block management. - - Copyright (c) 2019 Intel Corporation. All rights reserved.
- - SPDX-License-Identifier: BSD-2-Clause-Patent -**/ - -#include -#include -#include -#include -#include - -/** - Create config block table - - @param[in] TotalSize - Max size to be allocated for the Config Block Table - @param[out] ConfigBlockTableAddress - On return, points to a pointer to the beginning of Config Block Table Address - - @retval EFI_INVALID_PARAMETER - Invalid Parameter - @retval EFI_OUT_OF_RESOURCES - Out of resources - @retval EFI_SUCCESS - Successfully created Config Block Table at ConfigBlockTableAddress -**/ -EFI_STATUS -EFIAPI -CreateConfigBlockTable ( - IN UINT16 TotalSize, - OUT VOID **ConfigBlockTableAddress - ) -{ - CONFIG_BLOCK_TABLE_HEADER *ConfigBlkTblAddrPtr; - UINT32 ConfigBlkTblHdrSize; - - ConfigBlkTblHdrSize = (UINT32)(sizeof (CONFIG_BLOCK_TABLE_HEADER)); - - if (TotalSize <= (ConfigBlkTblHdrSize + sizeof (CONFIG_BLOCK_HEADER))) { - DEBUG ((DEBUG_ERROR, "Invalid Parameter\n")); - return EFI_INVALID_PARAMETER; - } - - ConfigBlkTblAddrPtr = (CONFIG_BLOCK_TABLE_HEADER *)AllocateZeroPool (TotalSize); - if (ConfigBlkTblAddrPtr == NULL) { - DEBUG ((DEBUG_ERROR, "Could not allocate memory.\n")); - return EFI_OUT_OF_RESOURCES; - } - ConfigBlkTblAddrPtr->NumberOfBlocks = 0; - ConfigBlkTblAddrPtr->Header.GuidHob.Header.HobLength = TotalSize; - ConfigBlkTblAddrPtr->AvailableSize = TotalSize - ConfigBlkTblHdrSize; - - *ConfigBlockTableAddress = (VOID *)ConfigBlkTblAddrPtr; - - return EFI_SUCCESS; -} - -/** - Add config block into config block table structure - - @param[in] ConfigBlockTableAddress - A pointer to the beginning of Config Block Table Address - @param[out] ConfigBlockAddress - On return, points to a pointer to the beginning of Config Block Address - - @retval EFI_OUT_OF_RESOURCES - Config Block Table is full and cannot add new Config Block or - Config Block Offset Table is full and cannot add new Config Block. - @retval EFI_SUCCESS - Successfully added Config Block -**/ -EFI_STATUS -EFIAPI -AddConfigBlock ( - IN VOID *ConfigBlockTableAddress, - OUT VOID **ConfigBlockAddress - ) -{ - CONFIG_BLOCK *TempConfigBlk; - CONFIG_BLOCK_TABLE_HEADER *ConfigBlkTblAddrPtr; - CONFIG_BLOCK *ConfigBlkAddrPtr; - UINT16 ConfigBlkSize; - - ConfigBlkTblAddrPtr = (CONFIG_BLOCK_TABLE_HEADER *)ConfigBlockTableAddress; - ConfigBlkAddrPtr = (CONFIG_BLOCK *)(*ConfigBlockAddress); - ConfigBlkSize = ConfigBlkAddrPtr->Header.GuidHob.Header.HobLength; - DEBUG ((DEBUG_INFO, "Config Block GUID: %g / Config Block Size: 0x%x bytes\n", &(ConfigBlkAddrPtr->Header.GuidHob.Name), ConfigBlkSize)); - if ((ConfigBlkSize % 4) != 0) { - DEBUG ((DEBUG_ERROR, "Config Block must be multiples of 4 bytes\n")); - return EFI_INVALID_PARAMETER; - } - if (ConfigBlkTblAddrPtr->AvailableSize < ConfigBlkSize) { - DEBUG ((DEBUG_ERROR, "Config Block Table is full and cannot add new Config Block.\n")); - DEBUG ((DEBUG_ERROR, "Available Config Block Size: 0x%x bytes / Requested Config Block Size: 0x%x bytes\n", ConfigBlkTblAddrPtr->AvailableSize, ConfigBlkSize)); - return EFI_OUT_OF_RESOURCES; - } - - TempConfigBlk = (CONFIG_BLOCK *)((UINTN)ConfigBlkTblAddrPtr + (UINTN)(ConfigBlkTblAddrPtr->Header.GuidHob.Header.HobLength - ConfigBlkTblAddrPtr->AvailableSize)); - CopyMem (&TempConfigBlk->Header, &ConfigBlkAddrPtr->Header, sizeof(CONFIG_BLOCK_HEADER)); - - ConfigBlkTblAddrPtr->NumberOfBlocks++; - ConfigBlkTblAddrPtr->AvailableSize = ConfigBlkTblAddrPtr->AvailableSize - ConfigBlkSize; - - *ConfigBlockAddress = (VOID *) TempConfigBlk; - DEBUG ((DEBUG_INFO, "Config Block Address: 0x%x / Available Config Block Size: 0x%x bytes\n", (UINT32)(UINTN)*ConfigBlockAddress, ConfigBlkTblAddrPtr->AvailableSize)); - return EFI_SUCCESS; -} - -/** - Retrieve a specific Config Block data by GUID - - @param[in] ConfigBlockTableAddress - A pointer to the beginning of Config Block Table Address - @param[in] ConfigBlockGuid - A pointer to the GUID uses to search specific Config Block - @param[out] ConfigBlockAddress - On return, points to a pointer to the beginning of Config Block Address - - @retval EFI_NOT_FOUND - Could not find the Config Block - @retval EFI_SUCCESS - Config Block found and return -**/ -EFI_STATUS -EFIAPI -GetConfigBlock ( - IN VOID *ConfigBlockTableAddress, - IN EFI_GUID *ConfigBlockGuid, - OUT VOID **ConfigBlockAddress - ) -{ - UINT16 OffsetIndex; - CONFIG_BLOCK *TempConfigBlk; - CONFIG_BLOCK_TABLE_HEADER *ConfigBlkTblAddrPtr; - UINT32 ConfigBlkTblHdrSize; - UINT32 ConfigBlkOffset; - UINT16 NumOfBlocks; - - ConfigBlkTblHdrSize = (UINT32)(sizeof (CONFIG_BLOCK_TABLE_HEADER)); - ConfigBlkTblAddrPtr = (CONFIG_BLOCK_TABLE_HEADER *)ConfigBlockTableAddress; - NumOfBlocks = ConfigBlkTblAddrPtr->NumberOfBlocks; - - ConfigBlkOffset = 0; - for (OffsetIndex = 0; OffsetIndex < NumOfBlocks; OffsetIndex++) { - if ((ConfigBlkTblHdrSize + ConfigBlkOffset) > (ConfigBlkTblAddrPtr->Header.GuidHob.Header.HobLength)) { - break; - } - TempConfigBlk = (CONFIG_BLOCK *)((UINTN)ConfigBlkTblAddrPtr + (UINTN)ConfigBlkTblHdrSize + (UINTN)ConfigBlkOffset); - if (CompareGuid (&(TempConfigBlk->Header.GuidHob.Name), ConfigBlockGuid)) { - *ConfigBlockAddress = (VOID *)TempConfigBlk; - return EFI_SUCCESS; - } - ConfigBlkOffset = ConfigBlkOffset + TempConfigBlk->Header.GuidHob.Header.HobLength; - } - DEBUG ((DEBUG_ERROR, "Could not find the config block.\n")); - return EFI_NOT_FOUND; -} diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf b/Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf deleted file mode 100644 index a7def2481d..0000000000 --- a/Silicon/Intel/CoffeelakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf +++ /dev/null @@ -1,29 +0,0 @@ -## @file -# Component INF file for the BaseConfigBlock library. -# -# Copyright (c) 2019 Intel Corporation. All rights reserved.
-# -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[Defines] -INF_VERSION = 0x00010017 -BASE_NAME = BaseConfigBlockLib -FILE_GUID = 1EC07EA8-7808-4e06-9D79-309AE331D2D5 -VERSION_STRING = 1.0 -MODULE_TYPE = BASE -LIBRARY_CLASS = ConfigBlockLib - - -[Packages] -MdePkg/MdePkg.dec -CoffeelakeSiliconPkg/SiPkg.dec - -[Sources] -BaseConfigBlockLib.c - -[LibraryClasses] -DebugLib -BaseMemoryLib -MemoryAllocationLib diff --git a/Silicon/Intel/KabylakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c b/Silicon/Intel/IntelSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c similarity index 100% rename from Silicon/Intel/KabylakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c rename to Silicon/Intel/IntelSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.c diff --git a/Silicon/Intel/KabylakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf b/Silicon/Intel/IntelSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf similarity index 100% rename from Silicon/Intel/KabylakeSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf rename to Silicon/Intel/IntelSiliconPkg/Library/BaseConfigBlockLib/BaseConfigBlockLib.inf -- 2.16.2.windows.1