From: qhuang8 Date: Mon, 4 Jun 2007 09:36:42 +0000 (+0000) Subject: MdePkg: X-Git-Tag: edk2-stable201903~23283 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=06fb8ffd0771d95b3f8797c30bf8e620eddd1e23;hp=dabd48785bc21cd05327c49db1fcb8f7fb9c3867 MdePkg: 1. Add AcpiTable & ComponentName2 Protocol definitions. 2. Add HardwareErrorVariable GUID definition. EdkModulePkg: 1. Update DxeCore to let InsatllConfigurationTable() signal the event group whenever a table entry is inserted, modified or deleted. 2. Update ConPlatform to let Simple Text In and Out not share a stop function . git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2625 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/EdkModulePkg/Core/Dxe/Misc/InstallConfigurationTable.c b/EdkModulePkg/Core/Dxe/Misc/InstallConfigurationTable.c index ee42f224e8..677a2108bf 100644 --- a/EdkModulePkg/Core/Dxe/Misc/InstallConfigurationTable.c +++ b/EdkModulePkg/Core/Dxe/Misc/InstallConfigurationTable.c @@ -125,6 +125,12 @@ Returns: // Modify the table enty and return. // gDxeCoreST->ConfigurationTable[Index].VendorTable = Table; + + // + // Signal Configuration Table change + // + CoreNotifySignalList (Guid); + return EFI_SUCCESS; } @@ -210,5 +216,10 @@ Returns: // CalculateEfiHdrCrc (&gDxeCoreST->Hdr); + // + // Signal Configuration Table change + // + CoreNotifySignalList (Guid); + return EFI_SUCCESS; } diff --git a/EdkModulePkg/Include/Common/Variable.h b/EdkModulePkg/Include/Common/Variable.h index a6e5c3bdc5..a732323005 100644 --- a/EdkModulePkg/Include/Common/Variable.h +++ b/EdkModulePkg/Include/Common/Variable.h @@ -17,15 +17,20 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define VARIABLE_STORE_SIGNATURE EFI_SIGNATURE_32 ('$', 'V', 'S', 'S') -#define MAX_VARIABLE_SIZE 1024 +#define MAX_VARIABLE_SIZE 1024 -#define VARIABLE_DATA 0x55AA +// +// Enlarges the hardware error record maximum variable size to 32K bytes +// +#define MAX_HARDWARE_ERROR_VARIABLE_SIZE 0x8000 + +#define VARIABLE_DATA 0x55AA // // Variable Store Header flags // -#define VARIABLE_STORE_FORMATTED 0x5a -#define VARIABLE_STORE_HEALTHY 0xfe +#define VARIABLE_STORE_FORMATTED 0x5a +#define VARIABLE_STORE_HEALTHY 0xfe // // The alignment of variable's start offset. diff --git a/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.c b/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.c index 15e7693d1d..1972e0c6aa 100644 --- a/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.c +++ b/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.c @@ -22,7 +22,7 @@ Abstract: EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = { ConPlatformTextInDriverBindingSupported, ConPlatformTextInDriverBindingStart, - ConPlatformDriverBindingStop, + ConPlatformTextInDriverBindingStop, 0xa, NULL, NULL @@ -31,7 +31,7 @@ EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = { EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding = { ConPlatformTextOutDriverBindingSupported, ConPlatformTextOutDriverBindingStart, - ConPlatformDriverBindingStop, + ConPlatformTextOutDriverBindingStop, 0xa, NULL, NULL @@ -287,7 +287,6 @@ Returns: EFI_STATUS Status; EFI_DEVICE_PATH_PROTOCOL *DevicePath; EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut; - BOOLEAN NeedClose; NeedClose = TRUE; @@ -360,6 +359,7 @@ Returns: DevicePath, CHECK ); + if (!EFI_ERROR (Status)) { NeedClose = FALSE; Status = gBS->InstallMultipleProtocolInterfaces ( @@ -403,7 +403,7 @@ Returns: EFI_STATUS EFIAPI -ConPlatformDriverBindingStop ( +ConPlatformTextInDriverBindingStop ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, @@ -443,13 +443,81 @@ Returns: ); if (!EFI_ERROR (Status)) { // - // Remove DevicePath from ConInDev, ConOutDev, and StdErrDev + // Remove DevicePath from ConInDev // ConPlatformUpdateDeviceVariable ( VarConsoleInpDev, DevicePath, DELETE ); + } + } + // + // Uninstall the Console Device GUIDs from Controller Handle + // + ConPlatformUnInstallProtocol ( + This, + ControllerHandle, + &gEfiConsoleInDeviceGuid + ); + + // + // Close the Simple Input Protocol + // + gBS->CloseProtocol ( + ControllerHandle, + &gEfiSimpleTextInProtocolGuid, + This->DriverBindingHandle, + ControllerHandle + ); + + return EFI_SUCCESS; +} + +EFI_STATUS +EFIAPI +ConPlatformTextOutDriverBindingStop ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer + ) +/*++ + +Routine Description: + +Arguments: + (Standard DriverBinding Protocol Stop() function) + +Returns: + + None + +--*/ +{ + EFI_STATUS Status; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + + // + // hot plug device is not included into the console associated variables, + // so no need to check variable for those hot plug devices. + // + if (!IsHotPlugDevice (This->DriverBindingHandle, ControllerHandle)) { + // + // Get the Device Path Protocol so the environment variables can be updated + // + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiDevicePathProtocolGuid, + (VOID **) &DevicePath, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (!EFI_ERROR (Status)) { + // + // Remove DevicePath from ConOutDev, and StdErrDev + // ConPlatformUpdateDeviceVariable ( VarConsoleOutDev, DevicePath, @@ -465,12 +533,6 @@ Returns: // // Uninstall the Console Device GUIDs from Controller Handle // - ConPlatformUnInstallProtocol ( - This, - ControllerHandle, - &gEfiConsoleInDeviceGuid - ); - ConPlatformUnInstallProtocol ( This, ControllerHandle, @@ -484,15 +546,8 @@ Returns: ); // - // Close the Simple Input and Simple Text Output Protocols + // Close the Simple Text Output Protocol // - gBS->CloseProtocol ( - ControllerHandle, - &gEfiSimpleTextInProtocolGuid, - This->DriverBindingHandle, - ControllerHandle - ); - gBS->CloseProtocol ( ControllerHandle, &gEfiSimpleTextOutProtocolGuid, @@ -503,6 +558,7 @@ Returns: return EFI_SUCCESS; } + VOID ConPlatformUnInstallProtocol ( IN EFI_DRIVER_BINDING_PROTOCOL *This, diff --git a/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.h b/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.h index cedda9e0d1..c14a5ed16e 100644 --- a/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.h +++ b/EdkModulePkg/Universal/ConPlatform/Dxe/ConPlatform.h @@ -75,7 +75,16 @@ ConPlatformTextOutDriverBindingStart ( EFI_STATUS EFIAPI -ConPlatformDriverBindingStop ( +ConPlatformTextInDriverBindingStop ( + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Handle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer + ); + +EFI_STATUS +EFIAPI +ConPlatformTextOutDriverBindingStop ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Handle, IN UINTN NumberOfChildren, diff --git a/OldMdePkg/Include/Guid/HardwareErrorVariable.h b/OldMdePkg/Include/Guid/HardwareErrorVariable.h new file mode 100644 index 0000000000..afae5ec1e5 --- /dev/null +++ b/OldMdePkg/Include/Guid/HardwareErrorVariable.h @@ -0,0 +1,30 @@ +/** @file + GUID for hardware error record variables. + + Copyright (c) 2007, 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. + + Module Name: HardwareErrorVariable.h + + @par Revision Reference: + GUID defined in UEFI 2.1. + +**/ + +#ifndef _HARDWARE_ERROR_VARIABLE_GUID_H_ +#define _HARDWARE_ERROR_VARIABLE_GUID_H_ + +#define EFI_HARDWARE_ERROR_VARIABLE_GUID \ + { \ + 0x414E6BDD, 0xE47B, 0x47cc, {0xB2, 0x44, 0xBB, 0x61, 0x02, 0x0C, 0xF5, 0x16} \ + } + +extern EFI_GUID gEfiHardwareErrorVariableGuid; + +#endif diff --git a/OldMdePkg/Include/Protocol/AcpiTable.h b/OldMdePkg/Include/Protocol/AcpiTable.h new file mode 100644 index 0000000000..d46116d7b4 --- /dev/null +++ b/OldMdePkg/Include/Protocol/AcpiTable.h @@ -0,0 +1,97 @@ +/** @file + This protocol may be used to install or remove an ACPI table from a platform. + + Copyright (c) 2007, 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. + + Module Name: AcpiTable.h + + @par Revision Reference: + ACPI Table Protocol from the UEFI 2.1 specification. + +**/ + +#ifndef __ACPI_TABLE_H__ +#define __ACPI_TABLE_H__ + +// +// Global ID for the Acpi Table Protocol +// +#define EFI_ACPI_TABLE_PROTOCOL_GUID \ + { \ + 0xffe06bdd, 0x6107, 0x46a6, {0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \ + } + +typedef struct _EFI_ACPI_TABLE_PROTOCOL EFI_ACPI_TABLE_PROTOCOL; + +#define UEFI_ACPI_TABLE_SIGNATURE EFI_SIGNATURE_32 ('U', 'E', 'F', 'I') + +/** + Installs an ACPI table into the RSDT/XSDT. + + @param This Protocol instance pointer. + @param AcpiTableBuffer A pointer to a buffer containing the ACPI table + to be installed. + @param AcpiTableBufferSize Specifies the size, in bytes, of the + AcpiTableBuffer buffer. + @param TableKey Reurns a key to refer to the ACPI table. + + @retval EFI_SUCCESS The table was successfully inserted. + @retval EFI_INVALID_PARAMETER Either AcpiTableBuffer is NULL, TableKey is + NULL, or AcpiTableBufferSize and the size field + embedded in the ACPI table pointed to by + AcpiTableBuffer are not in sync. + @retval EFI_OUT_OF_RESOURCES Insufficient resources exist to complete the + request. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_ACPI_TABLE_INSTALL_ACPI_TABLE) ( + IN EFI_ACPI_TABLE_PROTOCOL *This, + IN VOID *AcpiTableBuffer, + IN UINTN AcpiTableBufferSize, + OUT UINTN *TableKey + ) +; + +/** + Removes an ACPI table from the RSDT/XSDT. + + @param This Protocol instance pointer. + @param TableKey Specifies the table to uninstall. The key was + returned from InstallAcpiTable(). + + @retval EFI_SUCCESS The table was successfully uninstalled. + @retval EFI_NOT_FOUND TableKey does not refer to a valid key for a + table entry. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE) ( + IN EFI_ACPI_TABLE_PROTOCOL *This, + IN UINTN TableKey + ) +; + +// +// Interface structure for the ACPI Table Protocol +// +struct _EFI_ACPI_TABLE_PROTOCOL { + EFI_ACPI_TABLE_INSTALL_ACPI_TABLE InstallAcpiTable; + EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE UninstallAcpiTable; +}; + +// +// Extern the GUID for protocol users. +// +extern EFI_GUID gEfiAcpiTableProtocolGuid; + +#endif diff --git a/OldMdePkg/Include/Protocol/ComponentName2.h b/OldMdePkg/Include/Protocol/ComponentName2.h new file mode 100644 index 0000000000..9187635025 --- /dev/null +++ b/OldMdePkg/Include/Protocol/ComponentName2.h @@ -0,0 +1,136 @@ +/** @file + EFI Component Name 2 Protocol + + Copyright (c) 2007, 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. + + Module Name: ComponentName2.h + + @par Revision Reference: + Component Name 2 Protocol from the UEFI 2.1 specification. + +**/ + +#ifndef _EFI_COMPONENT_NAME2_H_ +#define _EFI_COMPONENT_NAME2_H_ + +// +// Global ID for the Component Name Protocol +// + +#define EFI_COMPONENT_NAME2_PROTOCOL_GUID \ + { \ + 0x6a7a5cff, 0xe8d9, 0x4f70, {0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \ + } + +typedef struct _EFI_COMPONENT_NAME2_PROTOCOL EFI_COMPONENT_NAME2_PROTOCOL; + +/** + Retrieves a Unicode string that is the user readable name of the EFI Driver. + + @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL + instance. + @param Language A pointer to a Null-terminated ASCII string array indicating the + language. This is the language of the driver name that the caller + is requesting, and it must match one of the languages specified in + SupportedLanguages. The number of languages supported by a + driver is up to the driver writer. Language is specified in RFC + 3066 language code format. + @param DriverName A pointer to the Unicode string to return. This + Unicode string is the name of the driver + specified by This in the language specified by + Language. + + @retval EFI_SUCCESS The Unicode string for the Driver specified by + This and the language specified by Language was + returned in DriverName. + @retval EFI_INVALID_PARAMETER Language is NULL or DriverName is NULL. + @retval EFI_UNSUPPORTED The driver specified by This does not support + the language specified by Language. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ( + IN EFI_COMPONENT_NAME2_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName + ); + +/** + Retrieves a Unicode string that is the user readable name of the controller + that is being managed by an EFI Driver. + + @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL + instance. + @param ControllerHandle The handle of a controller that the driver + specified by This is managing. This handle + specifies the controller whose name is to be + returned. + @param ChildHandle The handle of the child controller to retrieve + the name of. This is an optional parameter + that may be NULL. It will be NULL for device + drivers. It will also be NULL for a bus + drivers that wish to retrieve the name of the + bus controller. It will not be NULL for a bus + driver that wishes to retrieve the name of a + child controller. + @param Language A pointer to a Null- terminated ASCII string array indicating the + language. This is the language of the controller name that the + caller is requesting, and it must match one of the languages + specified in SupportedLanguages. The number of languages + supported by a driver is up to the driver writer. Language is + specified in RFC 3066 language code format. + @param ControllerName A pointer to the Unicode string to return. This + Unicode string is the name of the controller + specified by ControllerHandle and ChildHandle + in the language specified by Language from the + point of view of the driver specified by This. + + @retval EFI_SUCCESS The Unicode string for the user readable name in + the language specified by Language for the + driver specified by This was returned in + DriverName. + @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE; + ChildHandle is not NULL and it is not a valid + EFI_HANDLE;Language is NULL;ControllerName is + NULL. + @retval EFI_UNSUPPORTED The driver specified by This is not currently + managing the controller specified by + ControllerHandle and ChildHandle;The driver + specified by This does not support the language + specified by Language. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ( + IN EFI_COMPONENT_NAME2_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName + ); + + +// +// Interface structure for the Component Name 2 Protocol +// +struct _EFI_COMPONENT_NAME2_PROTOCOL { + EFI_COMPONENT_NAME2_GET_DRIVER_NAME GetDriverName; + EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME GetControllerName; + CHAR8 *SupportedLanguages; +}; + +// +// Extern the GUID for protocol users. +// +extern EFI_GUID gEfiComponentName2ProtocolGuid; + +#endif diff --git a/OldMdePkg/Include/Uefi/UefiSpec.h b/OldMdePkg/Include/Uefi/UefiSpec.h index 15b3ac22d2..6f34077068 100644 --- a/OldMdePkg/Include/Uefi/UefiSpec.h +++ b/OldMdePkg/Include/Uefi/UefiSpec.h @@ -580,9 +580,10 @@ VOID // // Variable attributes // -#define EFI_VARIABLE_NON_VOLATILE 0x00000001 -#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 -#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 +#define EFI_VARIABLE_NON_VOLATILE 0x00000001 +#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 +#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 +#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008 /** Returns the value of a variable. @@ -2329,7 +2330,7 @@ typedef enum { // -// Protocols from EFI 1.10 that got thier names fixed in UEFI 2.0 +// Protocols from EFI 1.10 that got their names fixed in UEFI 2.0 // #include #include @@ -2409,8 +2410,11 @@ typedef enum { #include #include #include +#include +#include #include +#include #endif diff --git a/OldMdePkg/MdePkg.spd b/OldMdePkg/MdePkg.spd index e01c5840f4..0c109527f7 100644 --- a/OldMdePkg/MdePkg.spd +++ b/OldMdePkg/MdePkg.spd @@ -352,6 +352,10 @@ Include/Guid/EventGroup.h + + Include/Guid/HardwareErrorVariable.h + + Include/Guid/EventLegacyBios.h @@ -708,6 +712,10 @@ Include/Protocol/AcpiSupport.h + + Include/Protocol/AcpiTable.h + + Include/Protocol/Arp.h @@ -736,6 +744,10 @@ Include/Protocol/ComponentName.h + + Include/Protocol/ComponentName2.h + + Include/Protocol/CpuIo.h @@ -1305,6 +1317,11 @@ 1BA0062E-C779-4582-8566-336AE8F78F09 + + gEfiHardwareErrorVariableGuid + 414E6BDD-E47B-47CC-B244-BB61020CF516 + + gEfiHobListGuid 7739F24C-93D7-11D4-9A3A-0090273FC14D @@ -1657,6 +1674,11 @@ 107A772C-D5E1-11D4-9A46-0090273FC14D + + gEfiComponentName2ProtocolGuid + 6A7A5CFF-E8D9-4F70-BADA-75AB3025CE14 + + gEfiDebugPortProtocolGuid EBA4E8D2-3858-41EC-A281-2647BA9660D0 @@ -1997,6 +2019,11 @@ DBFF9D55-89B7-46DA-BDDF-677D3DC0241D + + gEfiAcpiTableProtocolGuid + FFE06BDD-6107-46A6-7BB2-5A9C7EC5275C + + gEfiBootScriptSaveProtocolGuid 470E1529-B79E-4E32-A0FE-6A156D29F9B2