X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=UefiCpuPkg%2FCpuFeatures%2FCpuFeaturesDxe.c;fp=UefiCpuPkg%2FCpuFeatures%2FCpuFeaturesDxe.c;h=b0b186d36d6d4e2affe24db47bc14130b6648490;hp=f4f70cf32076e24507a48a0deb93332d71288650;hb=80c4b236389fb246dfd5c4f28e625600974a575d;hpb=028db58d1f5aebb973a00dd30118f05f6284e5c4 diff --git a/UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c b/UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c index f4f70cf320..b0b186d36d 100644 --- a/UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c +++ b/UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c @@ -1,122 +1,122 @@ -/** @file - CPU Features DXE driver to initialize CPU features. - - Copyright (c) 2017, 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. - -**/ - -#include - -#include -#include -#include -#include -#include - -#include -#include - - -/** - Worker function to perform CPU feature initialization. - -**/ -VOID -CpuFeaturesInitializeWorker ( - VOID - ) -{ - EFI_STATUS Status; - EFI_HANDLE Handle; - - CpuFeaturesDetect (); - - CpuFeaturesInitialize (); - - // - // Install CPU Features Init Done Protocol - // - Handle = NULL; - Status = gBS->InstallProtocolInterface ( - &Handle, - &gEdkiiCpuFeaturesInitDoneGuid, - EFI_NATIVE_INTERFACE, - NULL - ); - ASSERT_EFI_ERROR (Status); -} - -/** - Event notification that initialize CPU features when gEfiSmmConfigurationProtocol installs. - - @param[in] Event The Event that is being processed, not used. - @param[in] Context Event Context, not used. -**/ -VOID -EFIAPI -SmmConfigurationEventNotify ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - EFI_STATUS Status; - EFI_SMM_CONFIGURATION_PROTOCOL *SmmConfiguration; - - // - // Make sure this notification is for this handler - // - Status = gBS->LocateProtocol (&gEfiSmmConfigurationProtocolGuid, NULL, (VOID **)&SmmConfiguration); - if (EFI_ERROR (Status)) { - return; - } - - CpuFeaturesInitializeWorker (); -} - -/** - CPU Features driver entry point function. - - If PcdCpuFeaturesInitAfterSmmRelocation is TRUE, it will register one - SMM Configuration Protocol notify function to perform CPU features - initialization. Otherwise, it will perform CPU features initialization - directly. - - @param ImageHandle Image handle this driver. - @param SystemTable Pointer to the System Table. - - @retval EFI_SUCCESS CPU Features is initialized successfully. -**/ -EFI_STATUS -EFIAPI -CpuFeaturesDxeInitialize ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - VOID *Registration; - - if (PcdGetBool (PcdCpuFeaturesInitAfterSmmRelocation)) { - // - // Install notification callback on SMM Configuration Protocol - // - EfiCreateProtocolNotifyEvent ( - &gEfiSmmConfigurationProtocolGuid, - TPL_CALLBACK, - SmmConfigurationEventNotify, - NULL, - &Registration - ); - } else { - CpuFeaturesInitializeWorker (); - } - - return EFI_SUCCESS; -} - +/** @file + CPU Features DXE driver to initialize CPU features. + + Copyright (c) 2017, 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. + +**/ + +#include + +#include +#include +#include +#include +#include + +#include +#include + + +/** + Worker function to perform CPU feature initialization. + +**/ +VOID +CpuFeaturesInitializeWorker ( + VOID + ) +{ + EFI_STATUS Status; + EFI_HANDLE Handle; + + CpuFeaturesDetect (); + + CpuFeaturesInitialize (); + + // + // Install CPU Features Init Done Protocol + // + Handle = NULL; + Status = gBS->InstallProtocolInterface ( + &Handle, + &gEdkiiCpuFeaturesInitDoneGuid, + EFI_NATIVE_INTERFACE, + NULL + ); + ASSERT_EFI_ERROR (Status); +} + +/** + Event notification that initialize CPU features when gEfiSmmConfigurationProtocol installs. + + @param[in] Event The Event that is being processed, not used. + @param[in] Context Event Context, not used. +**/ +VOID +EFIAPI +SmmConfigurationEventNotify ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + EFI_STATUS Status; + EFI_SMM_CONFIGURATION_PROTOCOL *SmmConfiguration; + + // + // Make sure this notification is for this handler + // + Status = gBS->LocateProtocol (&gEfiSmmConfigurationProtocolGuid, NULL, (VOID **)&SmmConfiguration); + if (EFI_ERROR (Status)) { + return; + } + + CpuFeaturesInitializeWorker (); +} + +/** + CPU Features driver entry point function. + + If PcdCpuFeaturesInitAfterSmmRelocation is TRUE, it will register one + SMM Configuration Protocol notify function to perform CPU features + initialization. Otherwise, it will perform CPU features initialization + directly. + + @param ImageHandle Image handle this driver. + @param SystemTable Pointer to the System Table. + + @retval EFI_SUCCESS CPU Features is initialized successfully. +**/ +EFI_STATUS +EFIAPI +CpuFeaturesDxeInitialize ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + VOID *Registration; + + if (PcdGetBool (PcdCpuFeaturesInitAfterSmmRelocation)) { + // + // Install notification callback on SMM Configuration Protocol + // + EfiCreateProtocolNotifyEvent ( + &gEfiSmmConfigurationProtocolGuid, + TPL_CALLBACK, + SmmConfigurationEventNotify, + NULL, + &Registration + ); + } else { + CpuFeaturesInitializeWorker (); + } + + return EFI_SUCCESS; +} +