File: FirmwarePerformance.h

package info (click to toggle)
edk2 2025.11-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 338,436 kB
  • sloc: ansic: 2,166,377; asm: 270,725; perl: 235,301; python: 149,900; sh: 34,744; cpp: 23,311; makefile: 3,334; pascal: 1,602; xml: 806; lisp: 35; ruby: 16; sed: 6; tcl: 4
file content (139 lines) | stat: -rw-r--r-- 4,573 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/** @file
  ACPI Firmware Performance Data Table (FPDT) implementation specific definitions.

  Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef _FIRMWARE_PERFORMANCE_GUID_H_
#define _FIRMWARE_PERFORMANCE_GUID_H_

#include <PiPei.h>
#include <IndustryStandard/Acpi.h>
#include <Ppi/SecPerformance.h>

///
/// This GUID is used for FPDT implementation specific EFI Variable, LockBox and Hob.
///
/// EFI Variable:
///   GUID - gEfiFirmwarePerformanceGuid
///   Name - EFI_FIRMWARE_PERFORMANCE_VARIABLE_NAME
///   Data - FIRMWARE_PERFORMANCE_VARIABLE
///
/// LockBox:
///   GUID - gEfiFirmwarePerformanceGuid
///   Data - EFI_ACPI_BASIC_S3_SUSPEND_PERFORMANCE_RECORD
///
/// Hob:
///   GUID - gEfiFirmwarePerformanceGuid
///   Data - FIRMWARE_SEC_PERFORMANCE (defined in <Ppi/SecPerformance.h>)
///
/// SMI:
///   GUID - gEfiFirmwarePerformanceGuid
///   Data - SMM_BOOT_RECORD_COMMUNICATE
///
/// StatusCodeData:
///   Type - gEfiFirmwarePerformanceGuid
///   Data - One or more boot record
///
#define EFI_FIRMWARE_PERFORMANCE_GUID \
  { \
    0xc095791a, 0x3001, 0x47b2, {0x80, 0xc9, 0xea, 0xc7, 0x31, 0x9f, 0x2f, 0xa4 } \
  }

#define EFI_FIRMWARE_PERFORMANCE_VARIABLE_NAME  L"FirmwarePerformance"

/// LockBox:
///   GUID - gFirmwarePerformanceS3PointerGuid
///   Data - S3 performance table pointer
///
#define FIRMWARE_PERFORMANCE_S3_POINTER_GUID \
  { \
    0xdc65adc, 0xa973, 0x4130, { 0x8d, 0xf0, 0x2a, 0xdb, 0xeb, 0x9e, 0x4a, 0x31 } \
  }

#pragma pack(1)

///
/// Firmware Performance Data Table.
/// This structure will be installed into ACPI table as FPDT in normal boot path.
///
typedef struct {
  EFI_ACPI_DESCRIPTION_HEADER                                Header;            ///< Common ACPI description table header.
  EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD    BootPointerRecord; ///< Basic Boot Performance Table Pointer record.
  EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD      S3PointerRecord;   ///< S3 Performance Table Pointer record.
} FIRMWARE_PERFORMANCE_TABLE;

///
/// S3 Performance Data Table.
/// This structure contains S3 performance records which will be updated in S3
/// suspend and S3 resume boot path.
///
typedef struct {
  EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER    Header;    ///< Common ACPI table header.
  EFI_ACPI_5_0_FPDT_S3_RESUME_RECORD            S3Resume;  ///< Basic S3 Resume performance record.
  EFI_ACPI_5_0_FPDT_S3_SUSPEND_RECORD           S3Suspend; ///< Basic S3 Suspend performance record.
} S3_PERFORMANCE_TABLE;

///
/// Basic Boot Performance Data Table.
/// This structure contains BasicBoot performance record.
///
typedef struct {
  EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER      Header;    ///< Common ACPI table header.
  EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD    BasicBoot; ///< Basic Boot Resume performance record.
  //
  // one or more boot performance records.
  //
} BOOT_PERFORMANCE_TABLE;

///
/// Boot performance table for the performance record in SMM phase.
///
///
typedef struct {
  EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER    Header;    ///< Common ACPI table header.
  //
  // one or more boot performance records.
  //
} SMM_BOOT_PERFORMANCE_TABLE;

///
/// Performance data pointed by Performance Pointer Record.
///
typedef struct {
  BOOT_PERFORMANCE_TABLE    BootPerformance;      ///< Basic Boot Performance.
  S3_PERFORMANCE_TABLE      S3Performance;        ///< S3 performance.
} FIRMWARE_PERFORMANCE_RUNTIME_DATA;

///
/// Variable defined for FPDT implementation.
/// This Variable is produced by FPDT DXE module.
///
typedef struct {
  EFI_PHYSICAL_ADDRESS    BootPerformanceTablePointer; ///< Pointer to Boot Performance Table.
  EFI_PHYSICAL_ADDRESS    S3PerformanceTablePointer;   ///< Pointer to S3 Performance Table.
} FIRMWARE_PERFORMANCE_VARIABLE;

#pragma pack()

//
// Log BOOT RECORD from SMM driver on boot time.
//
#define SMM_FPDT_FUNCTION_GET_BOOT_RECORD_SIZE            1
#define SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA            2
#define SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA_BY_OFFSET  3

typedef struct {
  UINTN         Function;
  EFI_STATUS    ReturnStatus;
  UINTN         BootRecordSize;
  VOID          *BootRecordData;
  UINTN         BootRecordOffset;
} SMM_BOOT_RECORD_COMMUNICATE;

extern EFI_GUID  gEfiFirmwarePerformanceGuid;
extern EFI_GUID  gFirmwarePerformanceS3PointerGuid;

#endif