aboutsummaryrefslogtreecommitdiff
path: root/MdePkg/Include/Protocol/MpService.h
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Include/Protocol/MpService.h')
-rw-r--r--MdePkg/Include/Protocol/MpService.h62
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