If the system does not have ACPI setup use the configuration table
to get the performance info.
Signed-off-by: Jeff Brasen <jbrasen@nvidia.com>
---
ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf | 1 +
.../DpDynamicCommand/DpDynamicCommand.inf | 1 +
ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c | 11 ++++++++---
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf b/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
index 4a58286b8c1a..d9e1c23a1ee7 100644
--- a/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
+++ b/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
@@ -54,6 +54,7 @@ [LibraryClasses]
[Guids]
gPerformanceProtocolGuid ## CONSUMES ## SystemTable
+ gEdkiiFpdtExtendedFirmwarePerformanceGuid ## CONSUMES ## SystemTable
[Protocols]
gEfiLoadedImageProtocolGuid ## CONSUMES
diff --git a/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf b/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf
index 013bdbd4a07e..2723fee7066e 100644
--- a/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf
+++ b/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf
@@ -55,6 +55,7 @@ [LibraryClasses]
[Guids]
gPerformanceProtocolGuid ## CONSUMES ## SystemTable
+ gEdkiiFpdtExtendedFirmwarePerformanceGuid ## CONSUMES ## SystemTable
[Protocols]
gEfiLoadedImageProtocolGuid ## CONSUMES
diff --git a/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c b/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
index 512a146da6dd..98c84d2ef938 100644
--- a/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
+++ b/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
@@ -129,17 +129,22 @@ EFI_STATUS
GetBootPerformanceTable (
)
{
+ EFI_STATUS Status;
FIRMWARE_PERFORMANCE_TABLE *FirmwarePerformanceTable;
FirmwarePerformanceTable = (FIRMWARE_PERFORMANCE_TABLE *)EfiLocateFirstAcpiTable (
EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE
);
if (FirmwarePerformanceTable == NULL) {
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DP_GET_ACPI_FPDT_FAIL), mDpHiiHandle);
- return EFI_NOT_FOUND;
+ Status = EfiGetSystemConfigurationTable (&gEdkiiFpdtExtendedFirmwarePerformanceGuid, (VOID **)&mBootPerformanceTable);
+ if (EFI_ERROR (Status)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DP_GET_ACPI_FPDT_FAIL), mDpHiiHandle);
+ return EFI_NOT_FOUND;
+ }
+ } else {
+ mBootPerformanceTable = (UINT8 *)(UINTN)FirmwarePerformanceTable->BootPointerRecord.BootPerformanceTablePointer;
}
- mBootPerformanceTable = (UINT8 *)(UINTN)FirmwarePerformanceTable->BootPointerRecord.BootPerformanceTablePointer;
mBootPerformanceTableSize = ((BOOT_PERFORMANCE_TABLE *)mBootPerformanceTable)->Header.Length;
return EFI_SUCCESS;
--
2.25.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#106575): https://edk2.groups.io/g/devel/message/106575
Mute This Topic: https://groups.io/mt/99877763/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
Thanks,
Zhichao
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Jeff
> Brasen via groups.io
> Sent: Saturday, July 1, 2023 1:30 AM
> To: devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Gao, Liming
> <gaoliming@byosoft.com.cn>; Bi, Dandan <dandan.bi@intel.com>; Gao,
> Zhichao <zhichao.gao@intel.com>; Jeff Brasen <jbrasen@nvidia.com>
> Subject: [edk2-devel] [PATCH v2 2/2] ShellPkg/Dp: Allow dp command to
> work without ACPI
>
> If the system does not have ACPI setup use the configuration table to get the
> performance info.
>
> Signed-off-by: Jeff Brasen <jbrasen@nvidia.com>
> ---
> ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf | 1 +
> .../DpDynamicCommand/DpDynamicCommand.inf | 1 +
> ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c | 11 ++++++++-
> --
> 3 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
> b/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
> index 4a58286b8c1a..d9e1c23a1ee7 100644
> --- a/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
> +++ b/ShellPkg/DynamicCommand/DpDynamicCommand/DpApp.inf
> @@ -54,6 +54,7 @@ [LibraryClasses]
>
> [Guids]
> gPerformanceProtocolGuid ## CONSUMES ## SystemTable
> + gEdkiiFpdtExtendedFirmwarePerformanceGuid ## CONSUMES ##
> SystemTable
>
> [Protocols]
> gEfiLoadedImageProtocolGuid ## CONSUMES
> diff --git
> a/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.i
> nf
> b/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.i
> nf
> index 013bdbd4a07e..2723fee7066e 100644
> ---
> a/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.i
> nf
> +++
> b/ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.i
> nf
> @@ -55,6 +55,7 @@ [LibraryClasses]
>
> [Guids]
> gPerformanceProtocolGuid ## CONSUMES ## SystemTable
> + gEdkiiFpdtExtendedFirmwarePerformanceGuid ## CONSUMES ##
> SystemTable
>
> [Protocols]
> gEfiLoadedImageProtocolGuid ## CONSUMES
> diff --git a/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
> b/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
> index 512a146da6dd..98c84d2ef938 100644
> --- a/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
> +++ b/ShellPkg/DynamicCommand/DpDynamicCommand/Dp.c
> @@ -129,17 +129,22 @@ EFI_STATUS
> GetBootPerformanceTable (
> )
> {
> + EFI_STATUS Status;
> FIRMWARE_PERFORMANCE_TABLE *FirmwarePerformanceTable;
>
> FirmwarePerformanceTable = (FIRMWARE_PERFORMANCE_TABLE
> *)EfiLocateFirstAcpiTable (
>
> EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE
> );
> if (FirmwarePerformanceTable == NULL) {
> - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_DP_GET_ACPI_FPDT_FAIL), mDpHiiHandle);
> - return EFI_NOT_FOUND;
> + Status = EfiGetSystemConfigurationTable
> (&gEdkiiFpdtExtendedFirmwarePerformanceGuid, (VOID
> **)&mBootPerformanceTable);
> + if (EFI_ERROR (Status)) {
> + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_DP_GET_ACPI_FPDT_FAIL), mDpHiiHandle);
> + return EFI_NOT_FOUND;
> + }
> + } else {
> + mBootPerformanceTable = (UINT8
> + *)(UINTN)FirmwarePerformanceTable-
> >BootPointerRecord.BootPerformanceTa
> + blePointer;
> }
>
> - mBootPerformanceTable = (UINT8
> *)(UINTN)FirmwarePerformanceTable-
> >BootPointerRecord.BootPerformanceTablePointer;
> mBootPerformanceTableSize = ((BOOT_PERFORMANCE_TABLE
> *)mBootPerformanceTable)->Header.Length;
>
> return EFI_SUCCESS;
> --
> 2.25.1
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107288): https://edk2.groups.io/g/devel/message/107288
Mute This Topic: https://groups.io/mt/99877763/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.