]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h
UefiCpuPkg: Apply uncrustify changes
[mirror_edk2.git] / UefiCpuPkg / Library / RegisterCpuFeaturesLib / RegisterCpuFeatures.h
index 0a67a0581ad31fce6a078f17c0d761d0550897c6..4a84954cac9d6a2be778051ad0cd4cb4628f9040 100644 (file)
@@ -1,19 +1,17 @@
 /** @file\r
   CPU Register Table Library definitions.\r
 \r
-  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>\r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #ifndef _REGISTER_CPU_FEATURES_H_\r
 #define _REGISTER_CPU_FEATURES_H_\r
+#include <PiPei.h>\r
+#include <PiDxe.h>\r
+#include <Ppi/MpServices2.h>\r
+#include <Protocol/MpService.h>\r
 \r
 #include <Library/BaseLib.h>\r
 #include <Library/DebugLib.h>\r
 \r
 #define CPU_FEATURE_ENTRY_SIGNATURE  SIGNATURE_32 ('C', 'F', 'E', 'S')\r
 \r
-#define CPU_FEATURE_NAME_SIZE        128\r
+#define CPU_FEATURE_NAME_SIZE  128\r
 \r
 typedef struct {\r
-  REGISTER_CPU_FEATURE_INFORMATION     CpuInfo;\r
-  UINT8                                *FeaturesSupportedMask;\r
-  LIST_ENTRY                           OrderList;\r
+  REGISTER_CPU_FEATURE_INFORMATION    CpuInfo;\r
+  UINT8                               *FeaturesSupportedMask;\r
+  LIST_ENTRY                          OrderList;\r
 } CPU_FEATURES_INIT_ORDER;\r
 \r
 typedef struct {\r
-  UINT32                       Signature;\r
-  LIST_ENTRY                   Link;\r
-  UINT8                        *FeatureMask;\r
-  CHAR8                        *FeatureName;\r
-  CPU_FEATURE_GET_CONFIG_DATA  GetConfigDataFunc;\r
-  CPU_FEATURE_SUPPORT          SupportFunc;\r
-  CPU_FEATURE_INITIALIZE       InitializeFunc;\r
-  UINT8                        *BeforeFeatureBitMask;\r
-  UINT8                        *AfterFeatureBitMask;\r
-  UINT8                        *CoreBeforeFeatureBitMask;\r
-  UINT8                        *CoreAfterFeatureBitMask;\r
-  UINT8                        *PackageBeforeFeatureBitMask;\r
-  UINT8                        *PackageAfterFeatureBitMask;\r
-  VOID                         *ConfigData;\r
-  BOOLEAN                      BeforeAll;\r
-  BOOLEAN                      AfterAll;\r
+  UINT32                         Signature;\r
+  LIST_ENTRY                     Link;\r
+  UINT8                          *FeatureMask;\r
+  CHAR8                          *FeatureName;\r
+  CPU_FEATURE_GET_CONFIG_DATA    GetConfigDataFunc;\r
+  CPU_FEATURE_SUPPORT            SupportFunc;\r
+  CPU_FEATURE_INITIALIZE         InitializeFunc;\r
+  UINT8                          *ThreadBeforeFeatureBitMask;\r
+  UINT8                          *ThreadAfterFeatureBitMask;\r
+  UINT8                          *CoreBeforeFeatureBitMask;\r
+  UINT8                          *CoreAfterFeatureBitMask;\r
+  UINT8                          *PackageBeforeFeatureBitMask;\r
+  UINT8                          *PackageAfterFeatureBitMask;\r
+  VOID                           *ConfigData;\r
+  BOOLEAN                        BeforeAll;\r
+  BOOLEAN                        AfterAll;\r
 } CPU_FEATURES_ENTRY;\r
 \r
 //\r
 // Flags used when program the register.\r
 //\r
 typedef struct {\r
-  volatile UINTN           ConsoleLogLock;       // Spinlock used to control console.\r
-  volatile UINTN           MemoryMappedLock;     // Spinlock used to program mmio\r
-  volatile UINT32          *SemaphoreCount;      // Semaphore used to program semaphore.\r
+  volatile UINTN     MemoryMappedLock;              // Spinlock used to program mmio\r
+  volatile UINT32    *CoreSemaphoreCount;           // Semaphore containers used to program Core semaphore.\r
+  volatile UINT32    *PackageSemaphoreCount;        // Semaphore containers used to program Package semaphore.\r
 } PROGRAM_CPU_REGISTER_FLAGS;\r
 \r
+typedef union {\r
+  EFI_MP_SERVICES_PROTOCOL      *Protocol;\r
+  EDKII_PEI_MP_SERVICES2_PPI    *Ppi;\r
+} MP_SERVICES;\r
+\r
 typedef struct {\r
-  UINTN                    FeaturesCount;\r
-  UINT32                   BitMaskSize;\r
-  LIST_ENTRY               FeatureList;\r
+  UINTN                         FeaturesCount;\r
+  UINT32                        BitMaskSize;\r
+  LIST_ENTRY                    FeatureList;\r
 \r
-  CPU_FEATURES_INIT_ORDER  *InitOrder;\r
-  UINT8                    *SupportPcd;\r
-  UINT8                    *CapabilityPcd;\r
-  UINT8                    *ConfigurationPcd;\r
-  UINT8                    *SettingPcd;\r
+  CPU_FEATURES_INIT_ORDER       *InitOrder;\r
+  UINT8                         *CapabilityPcd;\r
+  UINT8                         *SettingPcd;\r
 \r
-  UINT32                   NumberOfCpus;\r
-  ACPI_CPU_DATA            *AcpiCpuData;\r
+  UINT32                        NumberOfCpus;\r
+  ACPI_CPU_DATA                 *AcpiCpuData;\r
 \r
-  CPU_REGISTER_TABLE       *RegisterTable;\r
-  CPU_REGISTER_TABLE       *PreSmmRegisterTable;\r
-  UINTN                    BspNumber;\r
+  CPU_REGISTER_TABLE            *RegisterTable;\r
+  CPU_REGISTER_TABLE            *PreSmmRegisterTable;\r
+  UINTN                         BspNumber;\r
 \r
-  PROGRAM_CPU_REGISTER_FLAGS  CpuFlags;\r
+  PROGRAM_CPU_REGISTER_FLAGS    CpuFlags;\r
+\r
+  MP_SERVICES                   MpService;\r
 } CPU_FEATURES_DATA;\r
 \r
 #define CPU_FEATURE_ENTRY_FROM_LINK(a) \\r
@@ -107,11 +110,13 @@ GetCpuFeaturesData (
 /**\r
   Worker function to return processor index.\r
 \r
+  @param  CpuFeaturesData    Cpu Feature Data structure.\r
+\r
   @return  The processor index.\r
 **/\r
 UINTN\r
 GetProcessorIndex (\r
-  VOID\r
+  IN CPU_FEATURES_DATA  *CpuFeaturesData\r
   );\r
 \r
 /**\r
@@ -126,8 +131,8 @@ GetProcessorIndex (
 **/\r
 EFI_STATUS\r
 GetProcessorInformation (\r
-  IN  UINTN                            ProcessorNumber,\r
-  OUT EFI_PROCESSOR_INFORMATION        *ProcessorInfoBuffer\r
+  IN  UINTN                      ProcessorNumber,\r
+  OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfoBuffer\r
   );\r
 \r
 /**\r
@@ -139,9 +144,9 @@ GetProcessorInformation (
                                       to check whether procedure has done.\r
 **/\r
 VOID\r
-StartupAPsWorker (\r
-  IN  EFI_AP_PROCEDURE                 Procedure,\r
-  IN  EFI_EVENT                        MpEvent\r
+StartupAllAPsWorker (\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  EFI_EVENT         MpEvent\r
   );\r
 \r
 /**\r
@@ -156,8 +161,8 @@ StartupAPsWorker (
 **/\r
 VOID\r
 GetNumberOfProcessor (\r
-  OUT UINTN                            *NumberOfCpus,\r
-  OUT UINTN                            *NumberOfEnabledProcessors\r
+  OUT UINTN  *NumberOfCpus,\r
+  OUT UINTN  *NumberOfEnabledProcessors\r
   );\r
 \r
 /**\r
@@ -167,27 +172,33 @@ GetNumberOfProcessor (
 **/\r
 VOID\r
 SwitchNewBsp (\r
-  IN  UINTN                            ProcessorNumber\r
+  IN  UINTN  ProcessorNumber\r
   );\r
 \r
 /**\r
   Function that uses DEBUG() macros to display the contents of a a CPU feature bit mask.\r
 \r
   @param[in]  FeatureMask  A pointer to the CPU feature bit mask.\r
+  @param[in]  BitMaskSize  CPU feature bits mask buffer size.\r
+\r
 **/\r
 VOID\r
 DumpCpuFeatureMask (\r
-  IN UINT8               *FeatureMask\r
+  IN UINT8   *FeatureMask,\r
+  IN UINT32  BitMaskSize\r
   );\r
 \r
 /**\r
   Dump CPU feature name or CPU feature bit mask.\r
 \r
   @param[in]  CpuFeature   Pointer to CPU_FEATURES_ENTRY\r
+  @param[in]  BitMaskSize  CPU feature bits mask buffer size.\r
+\r
 **/\r
 VOID\r
 DumpCpuFeature (\r
-  IN CPU_FEATURES_ENTRY  *CpuFeature\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature,\r
+  IN UINT32              BitMaskSize\r
   );\r
 \r
 /**\r
@@ -201,9 +212,9 @@ DumpCpuFeature (
 **/\r
 CPU_FEATURE_DEPENDENCE_TYPE\r
 DetectFeatureScope (\r
-  IN CPU_FEATURES_ENTRY         *CpuFeature,\r
-  IN BOOLEAN                    Before,\r
-  IN UINT8                      *NextCpuFeatureMask\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature,\r
+  IN BOOLEAN             Before,\r
+  IN UINT8               *NextCpuFeatureMask\r
   );\r
 \r
 /**\r
@@ -217,9 +228,9 @@ DetectFeatureScope (
 **/\r
 CPU_FEATURE_DEPENDENCE_TYPE\r
 DetectNoneNeighborhoodFeatureScope (\r
-  IN CPU_FEATURES_ENTRY         *CpuFeature,\r
-  IN BOOLEAN                    Before,\r
-  IN LIST_ENTRY                 *FeatureList\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature,\r
+  IN BOOLEAN             Before,\r
+  IN LIST_ENTRY          *FeatureList\r
   );\r
 \r
 /**\r
@@ -231,7 +242,7 @@ DetectNoneNeighborhoodFeatureScope (
 VOID\r
 EFIAPI\r
 SetProcessorRegister (\r
-  IN OUT VOID            *Buffer\r
+  IN OUT VOID  *Buffer\r
   );\r
 \r
 /**\r
@@ -244,4 +255,14 @@ GetAcpiCpuData (
   VOID\r
   );\r
 \r
+/**\r
+  Worker function to get MP service pointer.\r
+\r
+  @return MP_SERVICES variable.\r
+**/\r
+MP_SERVICES\r
+GetMpService (\r
+  VOID\r
+  );\r
+\r
 #endif\r