aboutsummaryrefslogtreecommitdiff
path: root/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest
diff options
context:
space:
mode:
authorLaszlo Ersek <lersek@redhat.com>2019-04-25 11:44:15 +0200
committerLaszlo Ersek <lersek@redhat.com>2019-05-03 10:52:20 +0200
commitb097ba371a68814e5ed85427ceec88f1e760ec96 (patch)
treea1815c7f798f81db95a627f31577853f1f4dcc83 /tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest
parent8482ff2eb3bb95020eb2f370a9b3ea26511e41df (diff)
downloadqemu-b097ba371a68814e5ed85427ceec88f1e760ec96.zip
qemu-b097ba371a68814e5ed85427ceec88f1e760ec96.tar.gz
qemu-b097ba371a68814e5ed85427ceec88f1e760ec96.tar.bz2
tests/uefi-test-tools: report the SMBIOS entry point structures
On UEFI systems, the SMBIOS entry point (a.k.a. anchor) structures are found similarly to the ACPI RSD PTR table(s): by scanning the ConfigurationTable array in the EFI system table for well-known GUIDs. Locate the SMBIOS 2.1 (32-bit) and 3.0 (64-bit) anchors in the BiosTablesTest UEFI application, and report the addresses in new fields appended to the BIOS_TABLES_TEST structure. Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> Cc: Igor Mammedov <imammedo@redhat.com> Launchpad: https://bugs.launchpad.net/qemu/+bug/1821884 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Igor Mammedov <imammedo@redhat.com>
Diffstat (limited to 'tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest')
-rw-r--r--tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.c23
-rw-r--r--tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.inf2
2 files changed, 21 insertions, 4 deletions
diff --git a/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.c b/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.c
index b208e17..75891e6 100644
--- a/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.c
+++ b/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.c
@@ -14,6 +14,7 @@
#include <Guid/Acpi.h>
#include <Guid/BiosTablesTest.h>
+#include <Guid/SmBios.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
@@ -55,6 +56,8 @@ BiosTablesTestMain (
volatile BIOS_TABLES_TEST *BiosTablesTest;
CONST VOID *Rsdp10;
CONST VOID *Rsdp20;
+ CONST VOID *Smbios21;
+ CONST VOID *Smbios30;
CONST EFI_CONFIGURATION_TABLE *ConfigTable;
CONST EFI_CONFIGURATION_TABLE *ConfigTablesEnd;
volatile EFI_GUID *InverseSignature;
@@ -77,31 +80,43 @@ BiosTablesTestMain (
}
//
- // Locate both gEfiAcpi10TableGuid and gEfiAcpi20TableGuid config tables in
- // one go.
+ // Locate all the gEfiAcpi10TableGuid, gEfiAcpi20TableGuid,
+ // gEfiSmbiosTableGuid, gEfiSmbios3TableGuid config tables in one go.
//
Rsdp10 = NULL;
Rsdp20 = NULL;
+ Smbios21 = NULL;
+ Smbios30 = NULL;
ConfigTable = gST->ConfigurationTable;
ConfigTablesEnd = gST->ConfigurationTable + gST->NumberOfTableEntries;
- while ((Rsdp10 == NULL || Rsdp20 == NULL) && ConfigTable < ConfigTablesEnd) {
+ while ((Rsdp10 == NULL || Rsdp20 == NULL ||
+ Smbios21 == NULL || Smbios30 == NULL) &&
+ ConfigTable < ConfigTablesEnd) {
if (CompareGuid (&ConfigTable->VendorGuid, &gEfiAcpi10TableGuid)) {
Rsdp10 = ConfigTable->VendorTable;
} else if (CompareGuid (&ConfigTable->VendorGuid, &gEfiAcpi20TableGuid)) {
Rsdp20 = ConfigTable->VendorTable;
+ } else if (CompareGuid (&ConfigTable->VendorGuid, &gEfiSmbiosTableGuid)) {
+ Smbios21 = ConfigTable->VendorTable;
+ } else if (CompareGuid (&ConfigTable->VendorGuid, &gEfiSmbios3TableGuid)) {
+ Smbios30 = ConfigTable->VendorTable;
}
++ConfigTable;
}
AsciiPrint ("%a: BiosTablesTest=%p Rsdp10=%p Rsdp20=%p\n",
gEfiCallerBaseName, Pages, Rsdp10, Rsdp20);
+ AsciiPrint ("%a: Smbios21=%p Smbios30=%p\n", gEfiCallerBaseName, Smbios21,
+ Smbios30);
//
- // Store the RSD PTR address(es) first, then the signature second.
+ // Store the config table addresses first, then the signature second.
//
BiosTablesTest = Pages;
BiosTablesTest->Rsdp10 = (UINTN)Rsdp10;
BiosTablesTest->Rsdp20 = (UINTN)Rsdp20;
+ BiosTablesTest->Smbios21 = (UINTN)Smbios21;
+ BiosTablesTest->Smbios30 = (UINTN)Smbios30;
MemoryFence();
diff --git a/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.inf b/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.inf
index 924d8a8..708bc1e 100644
--- a/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.inf
+++ b/tests/uefi-test-tools/UefiTestToolsPkg/BiosTablesTest/BiosTablesTest.inf
@@ -35,6 +35,8 @@
gBiosTablesTestGuid
gEfiAcpi10TableGuid
gEfiAcpi20TableGuid
+ gEfiSmbios3TableGuid
+ gEfiSmbiosTableGuid
[Packages]
MdePkg/MdePkg.dec