diff --git a/MdeModulePkg/Application/HelloWorld/HelloWorld.c b/MdeModulePkg/Application/HelloWorld/HelloWorld.c index 5ffddfb481..19e5791fa8 100644 --- a/MdeModulePkg/Application/HelloWorld/HelloWorld.c +++ b/MdeModulePkg/Application/HelloWorld/HelloWorld.c @@ -1,7 +1,8 @@ /** @file - This simple application just print a "UEFI Hello World!" to the UEFI Console. - - Copyright (c) 2006 - 2007, Intel Corporation + This sample application bases on HelloWorld PCD setting + to print "UEFI Hello World!" to the UEFI Console. + + Copyright (c) 2006 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -20,8 +21,7 @@ /** The user Entry Point for Application. The user code starts with this function - as the real entry point for the image goes into a library that calls this - function. + as the real entry point for the application. @param[in] ImageHandle The firmware allocated handle for the EFI image. @param[in] SystemTable A pointer to the EFI System Table. @@ -46,6 +46,9 @@ UefiMain ( // if (FeaturePcdGet (PcdHelloWorldPrintEnable)) { for (Index = 0; Index < PcdGet32 (PcdHelloWorldPrintTimes); Index ++) { + // + // Use UefiLib Print API to print string to UEFI console + // Print ((CHAR16*)PcdGetPtr (PcdHelloWorldPrintString)); } } diff --git a/MdeModulePkg/Application/HelloWorld/HelloWorld.inf b/MdeModulePkg/Application/HelloWorld/HelloWorld.inf index c284fa4460..50fb686319 100644 --- a/MdeModulePkg/Application/HelloWorld/HelloWorld.inf +++ b/MdeModulePkg/Application/HelloWorld/HelloWorld.inf @@ -1,8 +1,10 @@ #/** @file -# Sample UEFI Application Reference Module +# Sample UEFI Application Reference EDKII Module # -# This is a shell application that will display Hello World. -# Copyright (c) 2008, Intel Corporation. +# This is a shell application that will display Hello World. +# It uses EDKII PCD feature to show PCD usage and configuration. +# +# Copyright (c) 2008, Intel Corporation. # # All rights reserved. This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -20,7 +22,6 @@ FILE_GUID = 6987936E-ED34-44db-AE97-1FA5E4ED2116 MODULE_TYPE = UEFI_APPLICATION VERSION_STRING = 1.0 - ENTRY_POINT = UefiMain # diff --git a/MdeModulePkg/Include/Guid/CapsuleVendor.h b/MdeModulePkg/Include/Guid/CapsuleVendor.h index 5bbccd3652..b326018c49 100644 --- a/MdeModulePkg/Include/Guid/CapsuleVendor.h +++ b/MdeModulePkg/Include/Guid/CapsuleVendor.h @@ -1,7 +1,8 @@ /** @file - This file defines capsule update guid, capsule variable name and - capsule guid hob data structure, which are required by capsule update feature. + This file defines capsule vendor guid, capsule variable name + and capsule guid hob data structure. + They are used by EDKII implementation of capsule update across a system reset. Copyright (c) 2006 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials @@ -18,9 +19,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define __EFI_CAPSULE_VENDOR_GUID_H__ /// -/// This guid is used as a variable GUID (depending on implementation) -/// for the capsule variable if the capsule pointer is passes through reset -/// via a variable. +/// This guid is used as a variable GUID for the capsule variable +/// if the capsule pointer is passed through reset via a variable. +/// +/// This guid is also used as a hob GUID for the capsule data +/// when the capsule pointer is passed from PEI phase to DXE phase. /// #define EFI_CAPSULE_VENDOR_GUID \ { 0x711C703F, 0xC285, 0x4B10, { 0xA3, 0xB0, 0x36, 0xEC, 0xBD, 0x3C, 0x8B, 0xE2 } } @@ -30,14 +33,14 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. /// #define EFI_CAPSULE_VARIABLE_NAME L"CapsuleUpdateData" -extern EFI_GUID gEfiCapsuleVendorGuid; - /// /// Data structure of capsule guid hob entry /// typedef struct { - EFI_PHYSICAL_ADDRESS BaseAddress; /// Capsule data start address - UINT32 Length; /// Length of capsule data. + EFI_PHYSICAL_ADDRESS BaseAddress; ///> Capsule data start address + UINT32 Length; ///> Length of capsule data. } CAPSULE_HOB_INFO; +extern EFI_GUID gEfiCapsuleVendorGuid; + #endif // #ifndef _EFI_CAPSULE_VENDOR_GUID_H_ diff --git a/MdeModulePkg/Include/Library/CapsuleLib.h b/MdeModulePkg/Include/Library/CapsuleLib.h index 3bbc8c03c4..662e4def95 100644 --- a/MdeModulePkg/Include/Library/CapsuleLib.h +++ b/MdeModulePkg/Include/Library/CapsuleLib.h @@ -1,9 +1,8 @@ /** @file - Capsule Library. This library class defines a set of interfaces on - how to process capusle image update. + This library class defines a set of interfaces on how to process capusle image update. - Copyright (c) 2007, Intel Corporation + Copyright (c) 2007 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -18,7 +17,8 @@ #define __CAPSULE_LIB_H__ /** - Those capsules supported by the firmwares. + The firmware checks whether the capsule image is supported + by the CapsuleGuid in CapsuleHeader or other specific information in capsule image. @param CapsuleHeader Point to the UEFI capsule image to be checked. @@ -32,7 +32,8 @@ SupportCapsuleImage ( ); /** - The firmware implements to process the capsule image. + The firmware specific implementation processes the capsule image + if it recognized the format of this capsule image. @param CapsuleHeader Point to the UEFI capsule image to be processed. @@ -46,5 +47,3 @@ ProcessCapsuleImage ( ); #endif - - diff --git a/MdeModulePkg/Include/Library/RecoveryLib.h b/MdeModulePkg/Include/Library/RecoveryLib.h index fc0413656d..a724c9ed28 100644 --- a/MdeModulePkg/Include/Library/RecoveryLib.h +++ b/MdeModulePkg/Include/Library/RecoveryLib.h @@ -1,5 +1,5 @@ /** @file - Recovery Library. This library class defines a set of methods related recovery mode. + Recovery library class defines a set of methods related recovery boot mode. Copyright (c) 2005 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials @@ -16,7 +16,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define __RECOVERY_LIB_H__ /** - Calling this function causes the system do recovery. + Calling this function causes the system do recovery boot path. @retval EFI_SUCESS Sucess to do recovery. @retval Others Fail to do recovery. diff --git a/MdeModulePkg/Include/Library/S3Lib.h b/MdeModulePkg/Include/Library/S3Lib.h index 8e2a25d14f..c8fa22aaba 100644 --- a/MdeModulePkg/Include/Library/S3Lib.h +++ b/MdeModulePkg/Include/Library/S3Lib.h @@ -1,5 +1,5 @@ /** @file - S3 Library. This library class defines a set of methods related do S3 mode. + S3 library class defines a set of methods related do S3 boot mode. Copyright (c) 2005 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials diff --git a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.c b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.c index 1d45729eed..d2895778b2 100644 --- a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.c +++ b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.c @@ -1,5 +1,5 @@ /** @file - Null Dxe Capsule Library instance. + Null Dxe Capsule Library instance does nothing and returns unsupport status. Copyright (c) 2007 - 2008 Intel Corporation All rights reserved. This program and the accompanying materials @@ -15,7 +15,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include /** - Check those capsules are supported by the firmwares. + The firmware checks whether the capsule image is supported + by the CapsuleGuid in CapsuleHeader or other specific information in capsule image. @param CapsuleHeader Point to the UEFI capsule image to be checked. @@ -31,7 +32,8 @@ SupportCapsuleImage ( } /** - The firmware implements to process the capsule image. + The firmware specific implementation processes the capsule image + if it recognized the format of this capsule image. @param CapsuleHeader Point to the UEFI capsule image to be processed. diff --git a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf index dd2a95083e..1e7a967421 100644 --- a/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf +++ b/MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf @@ -1,5 +1,6 @@ #/** @file -# Capsule library NULL instance for DXE_DRIVER, DXE_RUNTIME_DRIVER +# NULL Dxe Capsule library instance. +# It can make core modules pass package level build. # # Copyright (c) 2006 - 2008, Intel Corporation. # diff --git a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c index e664428d0e..b87af37a91 100644 --- a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c +++ b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.c @@ -1,7 +1,8 @@ /** @file - Implements CRC32 guided section handler to parse CRC32 encapsulation section, - extract data and authenticate 32 bit CRC value. + This library registers CRC32 guided section handler + to parse CRC32 encapsulation section and extract raw data. + It uses UEFI boot service CalculateCrc32 to authenticate 32 bit CRC value. Copyright (c) 2007 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials @@ -24,15 +25,19 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define EFI_SECITON_SIZE_MASK 0x00ffffff +/// +/// CRC32 Guided Section header +/// typedef struct { - EFI_GUID_DEFINED_SECTION GuidedSectionHeader; - UINT32 CRC32Checksum; + EFI_GUID_DEFINED_SECTION GuidedSectionHeader; ///< EFI guided section header + UINT32 CRC32Checksum; ///< 32bit CRC check sum } CRC32_SECTION_HEADER; /** - The implementation of Crc32 guided section GetInfo() to get - size and attribute of the guided section. + GetInfo gets raw data size and attribute of the input guided section. + It first checks whether the input guid section is supported. + If not, EFI_INVALID_PARAMETER will return. @param InputSection Buffer containing the input GUIDed section to be processed. @param OutputBufferSize The size of OutputBuffer. @@ -74,13 +79,16 @@ Crc32GuidedSectionGetInfo ( /** - The implementation of Crc32 Guided section extraction to get the section data. + Extraction handler tries to extract raw data from the input guided section. + It also does authentication check for 32bit CRC value in the input guided section. + It first checks whether the input guid section is supported. + If not, EFI_INVALID_PARAMETER will return. @param InputSection Buffer containing the input GUIDed section to be processed. - @param OutputBuffer to contain the output data, which is allocated by the caller. + @param OutputBuffer Buffer to contain the output raw data allocated by the caller. @param ScratchBuffer A pointer to a caller-allocated buffer for function internal use. @param AuthenticationStatus A pointer to a caller-allocated UINT32 that indicates the - authentication status of the output buffer. + authentication status of the output buffer. @retval EFI_SUCCESS Section Data and Auth Status is extracted successfully. @retval EFI_INVALID_PARAMETER The GUID in InputSection does not match this instance guid. @@ -161,13 +169,13 @@ Crc32GuidedSectionHandler ( } /** - Register Crc32 section handler. + Register the handler to extract CRC32 guided section. @param ImageHandle ImageHandle of the loaded driver. @param SystemTable Pointer to the EFI System Table. - @retval RETURN_SUCCESS Register successfully. - @retval RETURN_OUT_OF_RESOURCES No enough memory to register this handler. + @retval EFI_SUCCESS Register successfully. + @retval EFI_OUT_OF_RESOURCES No enough memory to register this handler. **/ EFI_STATUS EFIAPI diff --git a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf index 360ee66540..f13098f8d3 100644 --- a/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf +++ b/MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf @@ -1,5 +1,8 @@ #/** @file -# Crc32SectionExtract library instance registers Crc32 handler into ExtractGuidedSectionLib. +# This library doesn't produce any library class. In its constructor function, +# it uses ExtractGuidedSectionLib service to registers CRC32 guided section handler +# that parses CRC32 encapsulation section and extracts raw data. +# It uses UEFI boot service CalculateCrc32 to authenticate 32 bit CRC value. # # Copyright (c) 2006 - 2008, Intel Corporation # @@ -10,7 +13,6 @@ # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # -# #**/ [Defines] @@ -43,6 +45,6 @@ BaseMemoryLib [Protocols] - gEfiCrc32GuidedSectionExtractionProtocolGuid - gEfiSecurityPolicyProtocolGuid + gEfiCrc32GuidedSectionExtractionProtocolGuid # ALWAYS CONSUMED used as Guid, not protocol service + gEfiSecurityPolicyProtocolGuid # ALWAYS CONSUMED \ No newline at end of file diff --git a/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.c b/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.c index 40acc57c95..1f60871a66 100644 --- a/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.c +++ b/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.c @@ -1,6 +1,5 @@ /** @file - Null Recovery Library instance. - This library class defines a set of methods related do recovery. + Null Recovery Library instance does nothing and returns unsupport status. Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials @@ -13,9 +12,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #include +#include /** - Calling this function causes the system do recovery. + Calling this function causes the system do recovery boot path. @retval EFI_UNSUPPORTED Recovery is not supported. **/ diff --git a/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf b/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf index 041b5a320c..cdfbb49af5 100644 --- a/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf +++ b/MdeModulePkg/Library/PeiRecoveryLibNull/PeiRecoveryLibNull.inf @@ -1,6 +1,7 @@ #/** @file # # Null Recovery library instance for PEIM module +# It can make core modules pass package level build. # # Copyright (c) 2006 - 2008, Intel Corporation.
# All rights reserved. This program and the accompanying materials diff --git a/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.c b/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.c index 6cceceab08..096a6af885 100644 --- a/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.c +++ b/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.c @@ -1,5 +1,5 @@ /** @file - S3 Library. This library class defines a set of methods related do S3 mode + Null S3 Library instance does nothing and returns unsupport status. Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials @@ -12,6 +12,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #include +#include /** This function is responsible for calling the S3 resume vector in the ACPI Tables. diff --git a/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf b/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf index b2ba7271d8..df99874b38 100644 --- a/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf +++ b/MdeModulePkg/Library/PeiS3LibNull/PeiS3LibNull.inf @@ -1,6 +1,7 @@ #/** @file # -# A NULL instance of S3 Library for PEIM +# Null S3 library instance for PEIM module +# It can make core modules pass package level build. # # Copyright (c) 2006 - 2008, Intel Corporation. # @@ -29,13 +30,9 @@ # VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC is for build only) # -[Sources.common] +[Sources] PeiS3LibNull.c [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec - -[LibraryClasses] - BaseLib - diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index c434394473..ff183f17a7 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -233,7 +233,7 @@ [PcdsFeatureFlag.common] ## Indicate whether platform can support update capsule across a system reset - gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleRest|FALSE|BOOLEAN|0x0001001d + gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset|FALSE|BOOLEAN|0x0001001d ## This feature flag can be used to enable or disable the Pcd PEIM database # traverse capability. Disable it can reduce the size of final image generated. diff --git a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf index 03d2bf9282..5addb49118 100644 --- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf +++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf @@ -1,6 +1,9 @@ #/** @file # -# CapsuleRuntime module provides capsule runtime services +# Capsule Runtime Drivers produces two UEFI capsule runtime services. +# (UpdateCapsule, QueryCapsuleCapabilities) +# It installs the Capsule Architectural Protocol (EDKII definition) to signify +# the capsule runtime services are ready. # # Copyright (c) 2006 - 2008, Intel Corporation.
# All rights reserved. This program and the accompanying materials @@ -28,7 +31,6 @@ # [Sources.common] - CapsuleService.h CapsuleService.c [Packages] @@ -39,22 +41,23 @@ UefiBootServicesTableLib PcdLib DebugLib - UefiRuntimeLib + UefiRuntimeServicesTableLib UefiDriverEntryPoint CapsuleLib + UefiRuntimeLib [Guids] - gEfiCapsuleVendorGuid # SOMETIMES_CONSUMED + gEfiCapsuleVendorGuid # Produce variable L"CapsuleUpdateData" for capsule updated data [Protocols] gEfiCapsuleArchProtocolGuid # PROTOCOL ALWAYS_PRODUCED -[FeaturePcd.common] - gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleRest +[FeaturePcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset -[FixedPcd.common] +[FixedPcd] gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizeNonPopulateCapsule gEfiMdeModulePkgTokenSpaceGuid.PcdMaxSizePopulateCapsule [Depex] - gEfiVariableWriteArchProtocolGuid + gEfiVariableWriteArchProtocolGuid # Depends on variable write functionality to produce capsule data variable diff --git a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c index dbb9563188..2d5411a607 100644 --- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c +++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c @@ -1,6 +1,8 @@ /** @file Capsule Runtime Drivers produces two UEFI capsule runtime services. (UpdateCapsule, QueryCapsuleCapabilities) + It installs the Capsule Architectural Protocol (EDKII definition) to signify + the capsule runtime services are ready. Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials @@ -13,7 +15,18 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ -#include "CapsuleService.h" +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include /** Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended @@ -90,7 +103,7 @@ UpdateCapsule ( // // Check if the platform supports update capsule across a system reset // - if (!FeaturePcdGet(PcdSupportUpdateCapsuleRest)) { + if (!FeaturePcdGet(PcdSupportUpdateCapsuleReset)) { return EFI_UNSUPPORTED; } // @@ -105,13 +118,13 @@ UpdateCapsule ( // system reset. Set its value into NV storage to let pre-boot driver to pick it up // after coming through a system reset. // - Status = EfiSetVariable ( - EFI_CAPSULE_VARIABLE_NAME, - &gEfiCapsuleVendorGuid, - EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_BOOTSERVICE_ACCESS, - sizeof (UINTN), - (VOID *) &ScatterGatherList - ); + Status = gRT->SetVariable ( + EFI_CAPSULE_VARIABLE_NAME, + &gEfiCapsuleVendorGuid, + EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_BOOTSERVICE_ACCESS, + sizeof (UINTN), + (VOID *) &ScatterGatherList + ); if (Status != EFI_SUCCESS) { return Status; } @@ -219,7 +232,7 @@ QueryCapsuleCapabilities ( // //Check if the platform supports update capsule across a system reset // - if (!FeaturePcdGet(PcdSupportUpdateCapsuleRest)) { + if (!FeaturePcdGet(PcdSupportUpdateCapsuleReset)) { return EFI_UNSUPPORTED; } *ResetType = EfiResetWarm; @@ -237,7 +250,7 @@ QueryCapsuleCapabilities ( /** - This code is to install UEFI capsule runtime service. + This code installs UEFI capsule runtime service. @param ImageHandle The firmware allocated handle for the EFI image. @param SystemTable A pointer to the EFI System Table. @@ -258,8 +271,8 @@ CapsuleServiceInitialize ( // // Install capsule runtime services into UEFI runtime service tables. // - SystemTable->RuntimeServices->UpdateCapsule = UpdateCapsule; - SystemTable->RuntimeServices->QueryCapsuleCapabilities = QueryCapsuleCapabilities; + gRT->UpdateCapsule = UpdateCapsule; + gRT->QueryCapsuleCapabilities = QueryCapsuleCapabilities; // // Install the Capsule Architectural Protocol on a new handle diff --git a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.h b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.h deleted file mode 100644 index 17aa473cbd..0000000000 --- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.h +++ /dev/null @@ -1,92 +0,0 @@ -/** @file - Include the required header files for Capsule Runtime Service drivers. - -Copyright (c) 2006 - 2008, Intel Corporation.
-All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _CAPSULE_RUNTIME_H_ -#define _CAPSULE_RUNTIME_H_ - - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -/** - Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended - consumption, the firmware may process the capsule immediately. If the payload should persist - across a system reset, the reset value returned from EFI_QueryCapsuleCapabilities must - be passed into ResetSystem() and will cause the capsule to be processed by the firmware as - part of the reset process. - - @param CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules - being passed into update capsule. - @param CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in - CaspuleHeaderArray. - @param ScatterGatherList Physical pointer to a set of - EFI_CAPSULE_BLOCK_DESCRIPTOR that describes the - location in physical memory of a set of capsules. - - @retval EFI_SUCCESS Valid capsule was passed. If - CAPSULE_FLAGS_PERSIT_ACROSS_RESET is not set, the - capsule has been successfully processed by the firmware. - @retval EFI_DEVICE_ERROR The capsule update was started, but failed due to a device error. - @retval EFI_INVALID_PARAMETER CapsuleCount is Zero, or CapsuleImage is not valid. - For across reset capsule image, ScatterGatherList is NULL. - @retval EFI_UNSUPPORTED CapsuleImage is not recognized by the firmware. - -**/ -EFI_STATUS -EFIAPI -UpdateCapsule( - IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, - IN UINTN CapsuleCount, - IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL - ); - -/** - Returns if the capsule can be supported via UpdateCapsule(). - - @param CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules - being passed into update capsule. - @param CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in - CaspuleHeaderArray. - @param MaxiumCapsuleSize On output the maximum size that UpdateCapsule() can - support as an argument to UpdateCapsule() via - CapsuleHeaderArray and ScatterGatherList. - @param ResetType Returns the type of reset required for the capsule update. - - @retval EFI_SUCCESS Valid answer returned. - @retval EFI_UNSUPPORTED The capsule image is not supported on this platform, and - MaximumCapsuleSize and ResetType are undefined. - @retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL, or ResetTyep is NULL, - Or CapsuleCount is Zero, or CapsuleImage is not valid. - -**/ -EFI_STATUS -EFIAPI -QueryCapsuleCapabilities( - IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, - IN UINTN CapsuleCount, - OUT UINT64 *MaxiumCapsuleSize, - OUT EFI_RESET_TYPE *ResetType - ); - -#endif - diff --git a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf index e46a1c32c8..2a78525785 100644 --- a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf +++ b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf @@ -1,8 +1,9 @@ #/** @file -# Single Segment Pci Configuration PPI +# This driver installs Single Segment Pci Configuration 2 PPI +# to provide read, write and modify access to Pci configuration space in PEI phase. +# To follow PI specification, these services also support access to the unaligned Pci address. # -# This file declares PciCfg PPI used to access PCI configuration space in PEI -# Copyright (c) 2006 - 2007, Intel Corporation +# Copyright (c) 2006 - 2008, Intel Corporation # # All rights reserved. This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -21,6 +22,7 @@ MODULE_TYPE = PEIM VERSION_STRING = 1.0 ENTRY_POINT = PeimInitializePciCfg + PI_SPECIFICATION_VERSION = 0x00010000 # # The following information is for reference only and not required by the build tools. diff --git a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c index fdd67f7abb..d2ca19c7b0 100644 --- a/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c +++ b/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PciCfg2.c @@ -1,7 +1,9 @@ /** @file - Installs Single Segment Pci Configuration PPI. + This driver installs Single Segment Pci Configuration 2 PPI + to provide read, write and modify access to Pci configuration space in PEI phase. + To follow PI specification, these services also support access to the unaligned Pci address. - Copyright (c) 2006 - 2007, Intel Corporation + Copyright (c) 2006 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -13,164 +15,19 @@ **/ #include - #include - #include #include #include #include - #include -/** - Reads from a given location in the PCI configuration space. - - @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. - See EFI_PEI_PCI_CFG_PPI_WIDTH above. - - @param Address The physical address of the access. The format of - the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. - -**/ -EFI_STATUS -EFIAPI -PciCfg2Read ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ); - -/** - Write to a given location in the PCI configuration space. - - @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. - See EFI_PEI_PCI_CFG_PPI_WIDTH above. - - @param Address The physical address of the access. The format of - the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. - -**/ -EFI_STATUS -EFIAPI -PciCfg2Write ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN OUT VOID *Buffer - ); - - -/** - PCI read-modify-write operation. - - @param PeiServices An indirect pointer to the PEI Services Table - published by the PEI Foundation. - - @param This Pointer to local data for the interface. - - @param Width The width of the access. Enumerated in bytes. Type - EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). - - @param Address The physical address of the access. - - @param SetBits Points to value to bitwise-OR with the read configuration value. - - The size of the value is determined by Width. - - @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. - The size of the value is determined by Width. - - - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting - the operation at this time. - -**/ -EFI_STATUS -EFIAPI -PciCfg2Modify ( - IN CONST EFI_PEI_SERVICES **PeiServices, - IN CONST EFI_PEI_PCI_CFG2_PPI *This, - IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, - IN UINT64 Address, - IN VOID *SetBits, - IN VOID *ClearBits - ); - - - -/** - @par Ppi Description: - The EFI_PEI_PCI_CFG2_PPI interfaces are used to abstract - accesses to PCI controllers behind a PCI root bridge - controller. - - @param Read PCI read services. See the Read() function description. - - @param Write PCI write services. See the Write() function description. - - @param Modify PCI read-modify-write services. See the Modify() function description. - - @param Segment The PCI bus segment which the specified functions will access. - -**/ -GLOBAL_REMOVE_IF_UNREFERENCED -EFI_PEI_PCI_CFG2_PPI gPciCfg2Ppi = { - PciCfg2Read, - PciCfg2Write, - PciCfg2Modify -}; - -GLOBAL_REMOVE_IF_UNREFERENCED -EFI_PEI_PPI_DESCRIPTOR gPciCfg2PpiList = { - (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), - &gEfiPciCfg2PpiGuid, - &gPciCfg2Ppi -}; - - /** Convert EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS to PCI_LIB_ADDRESS. - @param Address PCI address with - EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS format. + @param Address PCI address with EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS format. - @return The PCI address with PCI_LIB_ADDRESS format. + @return PCI address with PCI_LIB_ADDRESS format. **/ UINTN @@ -185,30 +42,20 @@ PciCfgAddressConvert ( return PCI_LIB_ADDRESS (Address->Bus, Address->Device, Address->Function, Address->ExtendedRegister); } - /** Reads from a given location in the PCI configuration space. @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - @param This Pointer to local data for the interface. - @param Width The width of the access. Enumerated in bytes. See EFI_PEI_PCI_CFG_PPI_WIDTH above. - @param Address The physical address of the access. The format of the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - + @param Buffer A pointer to the buffer of data. @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. - + @retval EFI_INVALID_PARAMETER The invalid access width. + **/ EFI_STATUS EFIAPI @@ -271,24 +118,15 @@ PciCfg2Read ( Write to a given location in the PCI configuration space. @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - @param This Pointer to local data for the interface. - @param Width The width of the access. Enumerated in bytes. See EFI_PEI_PCI_CFG_PPI_WIDTH above. - @param Address The physical address of the access. The format of the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS. - - @param Buffer A pointer to the buffer of data.. - + @param Buffer A pointer to the buffer of data. @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this - time. + @retval EFI_INVALID_PARAMETER The invalid access width. **/ EFI_STATUS @@ -350,32 +188,22 @@ PciCfg2Write ( /** - PCI read-modify-write operation. + This function performs a read-modify-write operation on the contents from a given + location in the PCI configuration space. @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation. - @param This Pointer to local data for the interface. - @param Width The width of the access. Enumerated in bytes. Type EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read(). - @param Address The physical address of the access. - @param SetBits Points to value to bitwise-OR with the read configuration value. - The size of the value is determined by Width. - @param ClearBits Points to the value to negate and bitwise-AND with the read configuration value. The size of the value is determined by Width. - @retval EFI_SUCCESS The function completed successfully. - - @retval EFI_DEVICE_ERROR There was a problem with the transaction. - - @retval EFI_DEVICE_NOT_READY The device is not capable of supporting - the operation at this time. + @retval EFI_INVALID_PARAMETER The invalid access width. **/ EFI_STATUS @@ -445,9 +273,23 @@ PciCfg2Modify ( } else { return EFI_INVALID_PARAMETER; } + return EFI_SUCCESS; } +EFI_PEI_PCI_CFG2_PPI gPciCfg2Ppi = { + PciCfg2Read, + PciCfg2Write, + PciCfg2Modify, + 0 +}; + +EFI_PEI_PPI_DESCRIPTOR gPciCfg2PpiList = { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gEfiPciCfg2PpiGuid, + &gPciCfg2Ppi +}; + /** Module's entry function. This routine will install EFI_PEI_PCI_CFG2_PPI. @@ -466,10 +308,10 @@ PeimInitializePciCfg ( { EFI_STATUS Status; - ASSERT ((**PeiServices).Hdr.Revision >= PEI_SERVICES_REVISION); + ASSERT ((**PeiServices).Hdr.Revision >= PI_SPECIFICATION_VERSION); (**(EFI_PEI_SERVICES **)PeiServices).PciCfg = &gPciCfg2Ppi; - Status = (**PeiServices).InstallPpi ((CONST EFI_PEI_SERVICES **)PeiServices, &gPciCfg2PpiList); + Status = (**PeiServices).InstallPpi (PeiServices, &gPciCfg2PpiList); return Status; } diff --git a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStub.c b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStub.c index aa86fdf301..ac3ab297ab 100644 --- a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStub.c +++ b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStub.c @@ -1,5 +1,5 @@ /** @file - This driver implements one sample platform security service, which does + This driver implements a sample platform security service, which does nothing and always return EFI_SUCCESS. Copyright (c) 2006 - 2008, Intel Corporation @@ -14,21 +14,17 @@ **/ -#include "SecurityStub.h" +#include +#include +#include +#include +#include // // Handle for the Security Architectural Protocol instance produced by this driver // EFI_HANDLE mSecurityArchProtocolHandle = NULL; -// -// Security Architectural Protocol instance produced by this driver -// -EFI_SECURITY_ARCH_PROTOCOL mSecurityStub = { - SecurityStubAuthenticateState -}; - - /** The EFI_SECURITY_ARCH_PROTOCOL (SAP) is used to abstract platform-specific policy from the DXE core response to an attempt to use a file that returns a @@ -61,7 +57,7 @@ EFI_SECURITY_ARCH_PROTOCOL mSecurityStub = { @param File This is a pointer to the device path of the file that is being dispatched. This will optionally be used for logging. - @retval EFI_SUCCESS Do nothing and return. + @retval EFI_SUCCESS Do nothing and return success. @retval EFI_INVALID_PARAMETER File is NULL. **/ EFI_STATUS @@ -79,14 +75,18 @@ SecurityStubAuthenticateState ( return EFI_SUCCESS; } +// +// Security Architectural Protocol instance produced by this driver +// +EFI_SECURITY_ARCH_PROTOCOL mSecurityStub = { + SecurityStubAuthenticateState +}; /** - The user Entry Point installs SAP. The user code starts with this function - as the real entry point for the image goes into a library that calls this - function. + Installs Security Architectural Protocol. - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. + @param ImageHandle The image handle of this driver. + @param SystemTable A pointer to the EFI System Table. @retval EFI_SUCCESS Install the sample Security Architectural Protocol successfully. diff --git a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStub.h b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStub.h deleted file mode 100644 index ff4f9bcf5d..0000000000 --- a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStub.h +++ /dev/null @@ -1,92 +0,0 @@ -/** @file - Inlcude the required definitions for Security Architectural Protocol stub driver - - Copyright (c) 2006 - 2008, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __SECURITY_STUB_ARCH_PROTOCOL_H__ -#define __SECURITY_STUB_ARCH_PROTOCOL_H__ - - -// -// Common header files for this module. -// -#include -#include -#include -#include -#include - -// -// Function prototypes -// -/** - The EFI_SECURITY_ARCH_PROTOCOL (SAP) is used to abstract platform-specific - policy from the DXE core response to an attempt to use a file that returns a - given status for the authentication check from the section extraction protocol. - - The possible responses in a given SAP implementation may include locking - flash upon failure to authenticate, attestation logging for all signed drivers, - and other exception operations. The File parameter allows for possible logging - within the SAP of the driver. - - If File is NULL, then EFI_INVALID_PARAMETER is returned. - - If the file specified by File with an authentication status specified by - AuthenticationStatus is safe for the DXE Core to use, then EFI_SUCCESS is returned. - - If the file specified by File with an authentication status specified by - AuthenticationStatus is not safe for the DXE Core to use under any circumstances, - then EFI_ACCESS_DENIED is returned. - - If the file specified by File with an authentication status specified by - AuthenticationStatus is not safe for the DXE Core to use right now, but it - might be possible to use it at a future time, then EFI_SECURITY_VIOLATION is - returned. - - @param This The EFI_SECURITY_ARCH_PROTOCOL instance. - @param AuthenticationStatus - This is the authentication type returned from the Section - Extraction protocol. See the Section Extraction Protocol - Specification for details on this type. - @param File This is a pointer to the device path of the file that is - being dispatched. This will optionally be used for logging. - - @retval EFI_SUCCESS Do nothing and return. - @retval EFI_INVALID_PARAMETER File is NULL. -**/ -EFI_STATUS -EFIAPI -SecurityStubAuthenticateState ( - IN CONST EFI_SECURITY_ARCH_PROTOCOL *This, - IN UINT32 AuthenticationStatus, - IN CONST EFI_DEVICE_PATH_PROTOCOL *File - ); - -/** - The user Entry Point for DXE driver. The user code starts with this function - as the real entry point for the image goes into a library that calls this - function. - - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS Install the sample Security Architectural Protocol successfully. - -**/ -EFI_STATUS -EFIAPI -SecurityStubInitialize ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ); - -#endif diff --git a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf index 8d70dbe38c..71c5a8ef38 100644 --- a/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf +++ b/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf @@ -1,5 +1,6 @@ #/** @file -# Sample SecurityStub module implements the dummy platform security service. +# Sample SecurityStub driver implements the dummy platform security service. +# It always return success without any authentication check. # # Copyright (c) 2006 - 2008, Intel Corporation # All rights reserved. This program and the accompanying materials @@ -28,7 +29,6 @@ [Sources.common] SecurityStub.c - SecurityStub.h [Packages] MdePkg/MdePkg.dec @@ -42,4 +42,4 @@ gEfiSecurityArchProtocolGuid # PROTOCOL ALWAYS_PRODUCED [Depex] - TRUE \ No newline at end of file + TRUE