From 15ac284815b1e1d5fe8dbc737129f82c9a92649b Mon Sep 17 00:00:00 2001 From: Robert Phelps Date: Tue, 12 May 2020 04:24:13 +0800 Subject: [PATCH] MdePkg: Update structures for MpServices Protocol Added EXTENDED_PROCESSOR_INFORMATION structure and supporting structures and definitions. The intent is to support updated topology layout for CPUs. (PI 1.7a Mantis 2071) Signed-off-by: Robert Phelps Reviewed-by: Ray Ni Reviewed-by: Liming Gao --- MdePkg/Include/Protocol/MpService.h | 50 +++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/MdePkg/Include/Protocol/MpService.h b/MdePkg/Include/Protocol/MpService.h index 10e2405daf..9445c5567f 100644 --- a/MdePkg/Include/Protocol/MpService.h +++ b/MdePkg/Include/Protocol/MpService.h @@ -47,6 +47,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} \ } +/// +/// Value used in the NumberProcessors parameter of the GetProcessorInfo function +/// +#define CPU_V2_EXTENDED_TOPOLOGY BIT24 + /// /// Forward declaration for the EFI_MP_SERVICES_PROTOCOL. /// @@ -96,6 +101,47 @@ typedef struct { UINT32 Thread; } 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. /// @@ -132,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; /** -- 2.39.2