diff options
Diffstat (limited to 'MdePkg/Include/Protocol/MpService.h')
-rw-r--r-- | MdePkg/Include/Protocol/MpService.h | 62 |
1 files changed, 53 insertions, 9 deletions
diff --git a/MdePkg/Include/Protocol/MpService.h b/MdePkg/Include/Protocol/MpService.h index e61caebc5816..697d99ebe531 100644 --- a/MdePkg/Include/Protocol/MpService.h +++ b/MdePkg/Include/Protocol/MpService.h @@ -27,14 +27,8 @@ APs to help test system memory in parallel with other device initialization. Diagnostics applications may also use this protocol for multi-processor. -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR> -This program and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License that 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. +Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR> +SPDX-License-Identifier: BSD-2-Clause-Patent @par Revision Reference: This Protocol is defined in the UEFI Platform Initialization Specification 1.2, @@ -54,6 +48,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. } /// +/// Value used in the NumberProcessors parameter of the GetProcessorInfo function +/// +#define CPU_V2_EXTENDED_TOPOLOGY BIT24 + +/// /// Forward declaration for the EFI_MP_SERVICES_PROTOCOL. /// typedef struct _EFI_MP_SERVICES_PROTOCOL EFI_MP_SERVICES_PROTOCOL; @@ -103,6 +102,47 @@ typedef struct { } EFI_CPU_PHYSICAL_LOCATION; /// +/// Structure that defines the 6-level physical location of the processor +/// +typedef struct { +/// +/// Package Zero-based physical package number that identifies the cartridge of the processor. +/// +UINT32 Package; +/// +/// Module Zero-based physical module number within package of the processor. +/// +UINT32 Module; +/// +/// Tile Zero-based physical tile number within module of the processor. +/// +UINT32 Tile; +/// +/// Die Zero-based physical die number within tile of the processor. +/// +UINT32 Die; +/// +/// Core Zero-based physical core number within die of the processor. +/// +UINT32 Core; +/// +/// Thread Zero-based logical thread number within core of the processor. +/// +UINT32 Thread; +} EFI_CPU_PHYSICAL_LOCATION2; + + +typedef union { + /// The 6-level physical location of the processor, including the + /// physical package number that identifies the cartridge, the physical + /// module number within package, the physical tile number within the module, + /// the physical die number within the tile, the physical core number within + /// package, and logical thread number within core. + EFI_CPU_PHYSICAL_LOCATION2 Location2; +} EXTENDED_PROCESSOR_INFORMATION; + + +/// /// Structure that describes information about a logical CPU. /// typedef struct { @@ -138,6 +178,10 @@ typedef struct { /// logical thread number within core. /// EFI_CPU_PHYSICAL_LOCATION Location; + /// + /// The extended information of the processor. This field is filled only when + /// CPU_V2_EXTENDED_TOPOLOGY is set in parameter ProcessorNumber. + EXTENDED_PROCESSOR_INFORMATION ExtendedInformation; } EFI_PROCESSOR_INFORMATION; /** @@ -491,7 +535,7 @@ EFI_STATUS @retval EFI_UNSUPPORTED Switching the BSP cannot be completed prior to this service returning. @retval EFI_UNSUPPORTED Switching the BSP is not supported. - @retval EFI_SUCCESS The calling processor is an AP. + @retval EFI_DEVICE_ERROR The calling processor is an AP. @retval EFI_NOT_FOUND The processor with the handle specified by ProcessorNumber does not exist. @retval EFI_INVALID_PARAMETER ProcessorNumber specifies the current BSP or |