mirror of https://github.com/acidanthera/audk.git
59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
/** @file
|
|
EFI MP information protocol provides a lightweight MP_SERVICES_PROTOCOL.
|
|
|
|
MP information protocol only provides static information of MP processor.
|
|
|
|
If SwitchBSP or Enable/DisableAP in MP service is called between the HOB
|
|
production and HOB consumption, EFI_PROCESSOR_INFORMATION.StatusFlag field
|
|
in this HOB may be invalidated.
|
|
|
|
Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef MP_INFORMATION2_H_
|
|
#define MP_INFORMATION2_H_
|
|
|
|
#include <Protocol/MpService.h>
|
|
#include <PiPei.h>
|
|
#include <Ppi/SecPlatformInformation.h>
|
|
|
|
#define MP_INFORMATION2_HOB_REVISION 1
|
|
|
|
#define MP_INFORMATION2_GUID \
|
|
{ \
|
|
0x417a7f64, 0xf4e9, 0x4b32, {0x84, 0x6a, 0x5c, 0xc4, 0xd8, 0x62, 0x18, 0x79} \
|
|
}
|
|
|
|
typedef struct {
|
|
EFI_PROCESSOR_INFORMATION ProcessorInfo;
|
|
UINT8 CoreType;
|
|
UINT8 Reserved[7];
|
|
//
|
|
// Add more fields in future
|
|
//
|
|
} MP_INFORMATION2_ENTRY;
|
|
|
|
typedef struct {
|
|
UINT16 NumberOfProcessors;
|
|
UINT16 EntrySize;
|
|
UINT8 Version;
|
|
UINT8 Reserved[3];
|
|
UINT64 ProcessorIndex;
|
|
MP_INFORMATION2_ENTRY Entry[0];
|
|
} MP_INFORMATION2_HOB_DATA;
|
|
|
|
//
|
|
// Producer of MP_INFORMATION2_HOB_DATA should assign sizeof (MP_INFORMATION2_ENTRY) to MP_INFORMATION2_HOB_DATA.EntrySize
|
|
// Consumer of MP_INFORMATION2_HOB_DATA should use below macro or similar logic to get the individual entry
|
|
// as the entry structure might be updated to include more information.
|
|
//
|
|
#define GET_MP_INFORMATION_ENTRY(MpInfoHobData, Index) \
|
|
(MP_INFORMATION2_ENTRY *)((UINTN)&((MP_INFORMATION2_HOB_DATA *)(MpInfoHobData))->Entry + (MpInfoHobData)->EntrySize * Index)
|
|
|
|
extern EFI_GUID gMpInformation2HobGuid;
|
|
|
|
#endif
|