spec: document patches, reorder them a bit

This commit is contained in:
Cole Robinson 2016-05-21 09:04:07 -04:00
parent 8553aaf619
commit 6ac749e232
14 changed files with 32 additions and 1769 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,68 +0,0 @@
From dd48ac51d1df4f718b4401b188d2824aebcc341c Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Wed, 26 Nov 2014 16:32:06 +0100
Subject: [PATCH] OvmfPkg: disable multi-processor support for boot time
We have no useful workload for APs, so let's not start them up, because
they would spin indefinitely until ExitBootServices().
Setting gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber to 1
causes InitializeMpSupport() in "UefiCpuPkg/CpuDxe/CpuMp.c" to return
early.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
OvmfPkg/OvmfPkgIa32.dsc | 4 ++++
OvmfPkg/OvmfPkgIa32X64.dsc | 4 ++++
OvmfPkg/OvmfPkgX64.dsc | 4 ++++
3 files changed, 12 insertions(+)
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index 6598102..1730812 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -329,6 +329,10 @@
# IRQs 5, 9, 10, 11 are level-triggered
gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0E20
+ # We have no useful workload for APs, so let's not start them up, because
+ # they would spin indefinitely until ExitBootServices().
+ gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|1
+
################################################################################
#
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index 4de961f..370ae50 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -335,6 +335,10 @@
# IRQs 5, 9, 10, 11 are level-triggered
gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0E20
+ # We have no useful workload for APs, so let's not start them up, because
+ # they would spin indefinitely until ExitBootServices().
+ gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|1
+
################################################################################
#
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 6c38081..175d5f4 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -334,6 +334,10 @@
# IRQs 5, 9, 10, 11 are level-triggered
gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0E20
+ # We have no useful workload for APs, so let's not start them up, because
+ # they would spin indefinitely until ExitBootServices().
+ gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber|1
+
################################################################################
#
# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform
--
1.8.3.1

View File

@ -1,8 +1,6 @@
From 4475c02d63dda9e2da4c663593491a01ae8c6b5a Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Wed, 27 Jan 2016 03:05:18 +0100
Subject: [PATCH 1/5] OvmfPkg: silence EFI_D_VERBOSE (0x00400000) in
NvmExpressDxe
Subject: [PATCH] OvmfPkg: silence EFI_D_VERBOSE (0x00400000) in NvmExpressDxe
NvmExpressDxe logs all BlockIo read & write calls on the EFI_D_VERBOSE
level.
@ -63,6 +61,3 @@ index e88e70d..eb3ad3f 100644
MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf
MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
--
1.8.3.1

View File

@ -1,272 +0,0 @@
From 26146b77f6d54c44fbb984bacf8bf31683e8d477 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Wed, 5 Jun 2013 10:25:13 +0200
Subject: [PATCH 2/3] OvmfPkg/SmbiosPlatformDxe: install+patch default legacy
type0 table (X86)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c | 5 +-
OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h | 30 ++++
OvmfPkg/SmbiosPlatformDxe/QemuType0.c | 180 ++++++++++++++++++++++++
OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf | 1 +
4 files changed, 215 insertions(+), 1 deletion(-)
create mode 100644 OvmfPkg/SmbiosPlatformDxe/QemuType0.c
diff --git a/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c b/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c
index 9c57558..ed75a01 100644
--- a/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c
+++ b/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c
@@ -628,7 +628,10 @@ InstallDefaultTables (
IN OUT BUILD_CONTEXT *Context
)
{
- return EFI_SUCCESS;
+ EFI_STATUS Status;
+
+ Status = InstallSmbiosType0 (Smbios, ProducerHandle, Context);
+ return Status;
}
diff --git a/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h b/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h
index 8613407..ca776b5 100644
--- a/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h
+++ b/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h
@@ -218,4 +218,34 @@ PatchSmbiosUnformatted (
IN UINT8 *TableBase
);
+
+/**
+ Install default (fallback) table for SMBIOS Type 0.
+
+ In case QEMU has provided no Type 0 SMBIOS table in whole, prepare one here,
+ patch it with any referring saved patches, and install it.
+
+ @param[in] Smbios The EFI_SMBIOS_PROTOCOL instance used for
+ installing SMBIOS tables.
+ @param[in] ProducerHandle Passed on to Smbios->Add(), ProducerHandle
+ tracks the origin of installed SMBIOS tables.
+ @param[in,out] Context The BUILD_CONTEXT object tracking installed
+ tables and saved patches.
+
+ @retval EFI_SUCCESS A Type 0 table has already been installed from the
+ SMBIOS firmware configuration blob.
+ @retval EFI_SUCCESS No Type 0 table was installed previously, and installing
+ the default here has succeeded.
+ @return Error codes from the PATCH_FORMATTED() and
+ PATCH_UNFORMATTED() macros, except EFI_NOT_FOUND, which
+ is only an informative result of theirs.
+**/
+EFI_STATUS
+EFIAPI
+InstallSmbiosType0 (
+ IN EFI_SMBIOS_PROTOCOL *Smbios,
+ IN EFI_HANDLE ProducerHandle,
+ IN OUT BUILD_CONTEXT *Context
+ );
+
#endif
diff --git a/OvmfPkg/SmbiosPlatformDxe/QemuType0.c b/OvmfPkg/SmbiosPlatformDxe/QemuType0.c
new file mode 100644
index 0000000..9ec5d76
--- /dev/null
+++ b/OvmfPkg/SmbiosPlatformDxe/QemuType0.c
@@ -0,0 +1,180 @@
+/** @file
+ Install the default Type 0 SMBIOS table if QEMU doesn't provide one through
+ the firmware configuration interface.
+
+ Copyright (C) 2013, Red Hat, Inc.
+
+ This program and the accompanying materials are licensed and made available
+ under the terms and conditions of the BSD License which accompanies this
+ distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+**/
+
+#include "QemuLegacyInternal.h"
+
+
+//
+// Text strings (unformatted area) for the default Tpe 0 SMBIOS table.
+//
+// All possible strings must be provided because Smbios->UpdateString() can
+// only update existing strings, it can't introduce new ones.
+//
+#define OVMF_TYPE0_STRINGS \
+ "EFI Development Kit II / OVMF\0" /* Vendor */ \
+ "0.1\0" /* BiosVersion */ \
+ "06/03/2013\0" /* BiosReleaseDate */
+
+
+//
+// Type definition and contents of the default Type 0 SMBIOS table.
+//
+#pragma pack(1)
+OVMF_SMBIOS (0);
+#pragma pack()
+
+STATIC CONST OVMF_TYPE0 mOvmfType0 = {
+ {
+ // SMBIOS_STRUCTURE Hdr
+ {
+ EFI_SMBIOS_TYPE_BIOS_INFORMATION, // UINT8 Type
+ sizeof (SMBIOS_TABLE_TYPE0) // UINT8 Length
+ },
+ 1, // SMBIOS_TABLE_STRING Vendor
+ 2, // SMBIOS_TABLE_STRING BiosVersion
+ 0xE800,// UINT16 BiosSegment
+ 3, // SMBIOS_TABLE_STRING BiosReleaseDate
+ 0, // UINT8 BiosSize
+ { 0 }, // MISC_BIOS_CHARACTERISTICS BiosCharacteristics
+ { 0 }, // UINT8 BIOSCharacteristicsExtensionBytes[2]
+ 0, // UINT8 SystemBiosMajorRelease
+ 1, // UINT8 SystemBiosMinorRelease
+ 0xFF, // UINT8 EmbeddedControllerFirmwareMajorRelease
+ 0xFF // UINT8 EmbeddedControllerFirmwareMinorRelease
+ },
+ OVMF_TYPE0_STRINGS
+};
+
+
+/**
+ Install default (fallback) table for SMBIOS Type 0.
+
+ In case QEMU has provided no Type 0 SMBIOS table in whole, prepare one here,
+ patch it with any referring saved patches, and install it.
+
+ @param[in] Smbios The EFI_SMBIOS_PROTOCOL instance used for
+ installing SMBIOS tables.
+ @param[in] ProducerHandle Passed on to Smbios->Add(), ProducerHandle
+ tracks the origin of installed SMBIOS tables.
+ @param[in,out] Context The BUILD_CONTEXT object tracking installed
+ tables and saved patches.
+
+ @retval EFI_SUCCESS A Type 0 table has already been installed from the
+ SMBIOS firmware configuration blob.
+ @retval EFI_SUCCESS No Type 0 table was installed previously, and installing
+ the default here has succeeded.
+ @return Error codes from the PATCH_FORMATTED() and
+ PATCH_UNFORMATTED() macros, except EFI_NOT_FOUND, which
+ is only an informative result of theirs.
+**/
+EFI_STATUS
+EFIAPI
+InstallSmbiosType0 (
+ IN EFI_SMBIOS_PROTOCOL *Smbios,
+ IN EFI_HANDLE ProducerHandle,
+ IN OUT BUILD_CONTEXT *Context
+ )
+{
+ TABLE_CONTEXT *Table;
+ OVMF_TYPE0 OvmfType0;
+ MISC_BIOS_CHARACTERISTICS_EXTENSION *Ext;
+ EFI_STATUS Status;
+ EFI_SMBIOS_HANDLE SmbiosHandle;
+
+ Table = &Context->Table[0];
+ if (Table->Installed) {
+ return EFI_SUCCESS;
+ }
+
+ CopyMem (&OvmfType0, &mOvmfType0, sizeof OvmfType0);
+ Ext = (VOID *) &OvmfType0.Base.BIOSCharacteristicsExtensionBytes[0];
+
+ OvmfType0.Base.BiosCharacteristics.BiosCharacteristicsNotSupported = 1;
+ Ext->SystemReserved.UefiSpecificationSupported = 1;
+ Ext->SystemReserved.VirtualMachineSupported = 1;
+
+ //
+ // Default contents ready. Formatted fields must be patched before installing
+ // the table, while strings in the unformatted area will be patched
+ // afterwards.
+ //
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0, BiosSegment);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0, BiosSize);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0, BiosCharacteristics);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0,
+ BIOSCharacteristicsExtensionBytes);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0, SystemBiosMajorRelease);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0, SystemBiosMinorRelease);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0,
+ EmbeddedControllerFirmwareMajorRelease);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_FORMATTED (Context, 0, &OvmfType0,
+ EmbeddedControllerFirmwareMinorRelease);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+
+ //
+ // Install SMBIOS table with patched formatted area and default strings.
+ //
+ SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;
+ Status = Smbios->Add (Smbios, ProducerHandle, &SmbiosHandle,
+ (EFI_SMBIOS_TABLE_HEADER *) &OvmfType0);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "%a: Smbios->Add(): %r\n", __FUNCTION__, Status));
+ return Status;
+ }
+ Table->Installed = TRUE;
+
+ //
+ // Patch strings in the unformatted area of the installed table.
+ //
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 0, &OvmfType0,
+ Vendor);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 0, &OvmfType0,
+ BiosVersion);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 0, &OvmfType0,
+ BiosReleaseDate);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ return EFI_SUCCESS;
+}
diff --git a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf b/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
index 8c9f43c..3483b9c 100644
--- a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
+++ b/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
@@ -37,6 +37,7 @@
[Sources.IA32, Sources.X64]
X86Xen.c
QemuLegacy.c
+ QemuType0.c
[Sources.ARM, Sources.AARCH64]
ArmXen.c
--
1.8.3.1

View File

@ -1,8 +1,6 @@
From c6e5bbe0378662620e736c82bcd0d08db42e5979 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Wed, 27 Jan 2016 03:05:18 +0100
Subject: [PATCH 2/5] OvmfPkg: silence EFI_D_VERBOSE (0x00400000) in the DXE
core
Subject: [PATCH] OvmfPkg: silence EFI_D_VERBOSE (0x00400000) in the DXE core
The DXE core logs a bunch of Properties Table and Memory Attributes Table
related information, on the EFI_D_VERBOSE level, that I am at the moment
@ -55,6 +53,3 @@ index eb3ad3f..0e02ba8 100644
}
IntelFrameworkModulePkg/Universal/StatusCode/RuntimeDxe/StatusCodeRuntimeDxe.inf
--
1.8.3.1

View File

@ -1,270 +0,0 @@
From 1b10131728dd1cff48ef1ce46820d89f21708852 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Wed, 5 Jun 2013 10:28:09 +0200
Subject: [PATCH 3/3] OvmfPkg/SmbiosPlatformDxe: install+patch default legacy
type1 table (X86)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c | 5 +
OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h | 30 ++++
OvmfPkg/SmbiosPlatformDxe/QemuType1.c | 178 ++++++++++++++++++++++++
OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf | 1 +
4 files changed, 214 insertions(+)
create mode 100644 OvmfPkg/SmbiosPlatformDxe/QemuType1.c
diff --git a/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c b/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c
index ed75a01..6507cc0 100644
--- a/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c
+++ b/OvmfPkg/SmbiosPlatformDxe/QemuLegacy.c
@@ -631,6 +631,11 @@ InstallDefaultTables (
EFI_STATUS Status;
Status = InstallSmbiosType0 (Smbios, ProducerHandle, Context);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InstallSmbiosType1 (Smbios, ProducerHandle, Context);
return Status;
}
diff --git a/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h b/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h
index ca776b5..4a2e824 100644
--- a/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h
+++ b/OvmfPkg/SmbiosPlatformDxe/QemuLegacyInternal.h
@@ -248,4 +248,34 @@ InstallSmbiosType0 (
IN OUT BUILD_CONTEXT *Context
);
+
+/**
+ Install default (fallback) table for SMBIOS Type 1.
+
+ In case QEMU has provided no Type 1 SMBIOS table in whole, prepare one here,
+ patch it with any referring saved patches, and install it.
+
+ @param[in] Smbios The EFI_SMBIOS_PROTOCOL instance used for
+ installing SMBIOS tables.
+ @param[in] ProducerHandle Passed on to Smbios->Add(), ProducerHandle
+ tracks the origin of installed SMBIOS tables.
+ @param[in,out] Context The BUILD_CONTEXT object tracking installed
+ tables and saved patches.
+
+ @retval EFI_SUCCESS A Type 1 table has already been installed from the
+ SMBIOS firmware configuration blob.
+ @retval EFI_SUCCESS No Type 1 table was installed previously, and installing
+ the default here has succeeded.
+ @return Error codes from the PATCH_FORMATTED() and
+ PATCH_UNFORMATTED() macros, except EFI_NOT_FOUND, which
+ is only an informative result of theirs.
+**/
+EFI_STATUS
+EFIAPI
+InstallSmbiosType1 (
+ IN EFI_SMBIOS_PROTOCOL *Smbios,
+ IN EFI_HANDLE ProducerHandle,
+ IN OUT BUILD_CONTEXT *Context
+ );
+
#endif
diff --git a/OvmfPkg/SmbiosPlatformDxe/QemuType1.c b/OvmfPkg/SmbiosPlatformDxe/QemuType1.c
new file mode 100644
index 0000000..ff48164
--- /dev/null
+++ b/OvmfPkg/SmbiosPlatformDxe/QemuType1.c
@@ -0,0 +1,178 @@
+/** @file
+ Install the default Type 1 SMBIOS table if QEMU doesn't provide one through
+ the firmware configuration interface.
+
+ Copyright (C) 2013, Red Hat, Inc.
+
+ This program and the accompanying materials are licensed and made available
+ under the terms and conditions of the BSD License which accompanies this
+ distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+**/
+
+#include "QemuLegacyInternal.h"
+
+
+//
+// Text strings (unformatted area) for the default Tpe 1 SMBIOS table.
+//
+// All possible strings must be provided because Smbios->UpdateString() can
+// only update existing strings, it can't introduce new ones.
+//
+#define OVMF_TYPE1_STRINGS \
+ "QEMU\0" /* Manufacturer */ \
+ "QEMU Virtual Machine\0" /* ProductName */ \
+ "n/a\0" /* Version */ \
+ "n/a\0" /* SerialNumber */ \
+ "n/a\0" /* SKUNumber */ \
+ "n/a\0" /* Family */
+
+
+//
+// Type definition and contents of the default Type 1 SMBIOS table.
+//
+#pragma pack(1)
+OVMF_SMBIOS (1);
+#pragma pack()
+
+STATIC CONST OVMF_TYPE1 mOvmfType1 = {
+ {
+ // SMBIOS_STRUCTURE Hdr
+ {
+ EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, // UINT8 Type
+ sizeof (SMBIOS_TABLE_TYPE1) // UINT8 Length
+ },
+ 1, // SMBIOS_TABLE_STRING Manufacturer
+ 2, // SMBIOS_TABLE_STRING ProductName
+ 3, // SMBIOS_TABLE_STRING Version
+ 4, // SMBIOS_TABLE_STRING SerialNumber
+ { 0 }, // GUID Uuid
+ SystemWakeupTypePowerSwitch, // UINT8 WakeUpType
+ 5, // SMBIOS_TABLE_STRING SKUNumber
+ 6, // SMBIOS_TABLE_STRING Family
+ },
+ OVMF_TYPE1_STRINGS
+};
+
+
+/**
+ Install default (fallback) table for SMBIOS Type 1.
+
+ In case QEMU has provided no Type 1 SMBIOS table in whole, prepare one here,
+ patch it with any referring saved patches, and install it.
+
+ @param[in] Smbios The EFI_SMBIOS_PROTOCOL instance used for
+ installing SMBIOS tables.
+ @param[in] ProducerHandle Passed on to Smbios->Add(), ProducerHandle
+ tracks the origin of installed SMBIOS tables.
+ @param[in,out] Context The BUILD_CONTEXT object tracking installed
+ tables and saved patches.
+
+ @retval EFI_SUCCESS A Type 1 table has already been installed from the
+ SMBIOS firmware configuration blob.
+ @retval EFI_SUCCESS No Type 1 table was installed previously, and installing
+ the default here has succeeded.
+ @return Error codes from the PATCH_FORMATTED() and
+ PATCH_UNFORMATTED() macros, except EFI_NOT_FOUND, which
+ is only an informative result of theirs.
+**/
+EFI_STATUS
+EFIAPI
+InstallSmbiosType1 (
+ IN EFI_SMBIOS_PROTOCOL *Smbios,
+ IN EFI_HANDLE ProducerHandle,
+ IN OUT BUILD_CONTEXT *Context
+ )
+{
+ TABLE_CONTEXT *Table;
+ OVMF_TYPE1 OvmfType1;
+ EFI_STATUS Status;
+ EFI_SMBIOS_HANDLE SmbiosHandle;
+
+ Table = &Context->Table[1];
+ if (Table->Installed) {
+ return EFI_SUCCESS;
+ }
+
+ CopyMem (&OvmfType1, &mOvmfType1, sizeof OvmfType1);
+
+ QemuFwCfgSelectItem (QemuFwCfgItemSystemUuid);
+ OvmfType1.Base.Uuid.Data1 = SwapBytes32 (QemuFwCfgRead32 ());
+ OvmfType1.Base.Uuid.Data2 = SwapBytes16 (QemuFwCfgRead16 ());
+ OvmfType1.Base.Uuid.Data3 = SwapBytes16 (QemuFwCfgRead16 ());
+ QemuFwCfgReadBytes (sizeof OvmfType1.Base.Uuid.Data4,
+ &OvmfType1.Base.Uuid.Data4);
+
+ //
+ // Default contents ready. Formatted fields must be patched before installing
+ // the table, while strings in the unformatted area will be patched
+ // afterwards.
+ //
+ Status = PATCH_FORMATTED (Context, 1, &OvmfType1, Uuid);
+ switch (Status) {
+ case EFI_NOT_FOUND:
+ break;
+ case EFI_SUCCESS:
+ OvmfType1.Base.Uuid.Data1 = SwapBytes32 (OvmfType1.Base.Uuid.Data1);
+ OvmfType1.Base.Uuid.Data2 = SwapBytes16 (OvmfType1.Base.Uuid.Data2);
+ OvmfType1.Base.Uuid.Data3 = SwapBytes16 (OvmfType1.Base.Uuid.Data3);
+ break;
+ default:
+ return Status;
+ }
+
+ Status = PATCH_FORMATTED (Context, 1, &OvmfType1, WakeUpType);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+
+ //
+ // Install SMBIOS table with patched formatted area and default strings.
+ //
+ SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;
+ Status = Smbios->Add (Smbios, ProducerHandle, &SmbiosHandle,
+ (EFI_SMBIOS_TABLE_HEADER *) &OvmfType1);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "%a: Smbios->Add(): %r\n", __FUNCTION__, Status));
+ return Status;
+ }
+ Table->Installed = TRUE;
+
+ //
+ // Patch strings in the unformatted area of the installed table.
+ //
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 1, &OvmfType1,
+ Manufacturer);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 1, &OvmfType1,
+ ProductName);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 1, &OvmfType1,
+ Version);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 1, &OvmfType1,
+ SerialNumber);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 1, &OvmfType1,
+ SKUNumber);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ Status = PATCH_UNFORMATTED (Smbios, SmbiosHandle, Context, 1, &OvmfType1,
+ Family);
+ if (Status != EFI_NOT_FOUND && Status != EFI_SUCCESS) {
+ return Status;
+ }
+ return EFI_SUCCESS;
+}
diff --git a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf b/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
index 3483b9c..1f7dfca 100644
--- a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
+++ b/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
@@ -38,6 +38,7 @@
X86Xen.c
QemuLegacy.c
QemuType0.c
+ QemuType1.c
[Sources.ARM, Sources.AARCH64]
ArmXen.c
--
1.8.3.1

View File

@ -1,7 +1,6 @@
From 214090228fb08f03737ba90d29e23dc7b2235614 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Sun, 8 Jul 2012 14:26:07 +0200
Subject: [PATCH 3/5] OvmfPkg: enable DEBUG_VERBOSE
Subject: [PATCH] OvmfPkg: enable DEBUG_VERBOSE
Enable verbose debug logs.
@ -51,6 +50,3 @@ index 0e02ba8..1836c25 100644
!ifdef $(SOURCE_DEBUG_ENABLE)
gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17
--
1.8.3.1

View File

@ -1,7 +1,6 @@
From f468bab8fa61f7b7d0b0149f374945eb549af16e Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Thu, 20 Feb 2014 22:54:45 +0100
Subject: [PATCH 4/5] OvmfPkg: increase max debug message length to 512
Subject: [PATCH] OvmfPkg: increase max debug message length to 512
Contributed-under: TianoCore Contribution Agreement 1.0
---
@ -21,6 +20,3 @@ index 44850a9..b6927d0 100644
/**
This constructor function does not have to do anything.
--
1.8.3.1

View File

@ -1,7 +1,6 @@
From 82175ef201595d45a0959249a36f4ffd74047fdb Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Tue, 20 May 2014 23:41:56 +0200
Subject: [PATCH 5/5] OvmfPkg: QemuVideoDxe: enable debug messages in VbeShim
Subject: [PATCH] OvmfPkg: QemuVideoDxe: enable debug messages in VbeShim
Contributed-under: TianoCore Contribution Agreement 1.0
---
@ -519,6 +518,3 @@ index cc9b6e1..db37f1d 100644
+ /* 00000459 or al,[fs:bx+si] */ 0x64, 0x0A, 0x00,
};
#endif
--
1.8.3.1

View File

@ -1,4 +1,3 @@
From 144ac2186d46a9a6cbf4d4174b6db1865d7de1d7 Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Thu, 18 Feb 2016 10:52:44 +0100
Subject: [PATCH] EXCLUDE_SHELL_FROM_FD
@ -63,6 +62,3 @@ index 387b808..4e0c0ab 100644
FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
SECTION RAW = MdeModulePkg/Logo/Logo.bmp
--
1.8.3.1

View File

@ -1,4 +1,3 @@
From 89d722b43fba95708ba16ef676a989a6e02a55f5 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Mon, 6 Jul 2015 20:22:02 +0200
Subject: [PATCH] OvmfPkg: EnrollDefaultKeys: application for enrolling default
@ -55,7 +54,7 @@ Signed-off-by: Laszlo Ersek <lersek@redhat.com>
diff --git a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
new file mode 100644
index 000000000000..a1dddb2fb5be
index 0000000..081212b
--- /dev/null
+++ b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
@@ -0,0 +1,960 @@
@ -1021,7 +1020,7 @@ index 000000000000..a1dddb2fb5be
+}
diff --git a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf
new file mode 100644
index 000000000000..30c127f2ecb4
index 0000000..ac919bb
--- /dev/null
+++ b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.inf
@@ -0,0 +1,51 @@
@ -1077,10 +1076,10 @@ index 000000000000..30c127f2ecb4
+ UefiLib
+ UefiRuntimeServicesTableLib
diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
index 012e24817e5a..1e0e71aea606 100644
index aaaaaa8..90980d4 100644
--- a/OvmfPkg/OvmfPkgIa32.dsc
+++ b/OvmfPkg/OvmfPkgIa32.dsc
@@ -743,6 +743,10 @@ [Components]
@@ -725,6 +725,10 @@
!if $(SECURE_BOOT_ENABLE) == TRUE
SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
@ -1092,10 +1091,10 @@ index 012e24817e5a..1e0e71aea606 100644
OvmfPkg/PlatformDxe/Platform.inf
diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
index 23c09d1e6083..6346f2db0006 100644
index b4545b3..4d0ec9c 100644
--- a/OvmfPkg/OvmfPkgIa32X64.dsc
+++ b/OvmfPkg/OvmfPkgIa32X64.dsc
@@ -752,6 +752,10 @@ [Components.X64]
@@ -734,6 +734,10 @@
!if $(SECURE_BOOT_ENABLE) == TRUE
SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
@ -1107,10 +1106,10 @@ index 23c09d1e6083..6346f2db0006 100644
OvmfPkg/PlatformDxe/Platform.inf
diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index b0b6b3770e84..7a0d7eb7a75f 100644
index 1836c25..aca5476 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -750,6 +750,10 @@ [Components]
@@ -732,6 +732,10 @@
!if $(SECURE_BOOT_ENABLE) == TRUE
SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
@ -1121,6 +1120,3 @@ index b0b6b3770e84..7a0d7eb7a75f 100644
!endif
OvmfPkg/PlatformDxe/Platform.inf
--
1.8.3.1

View File

@ -1,4 +1,3 @@
From c8e5617ebaaa8be91a32be48dcf3dc7157b00d2c Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Tue, 25 Feb 2014 18:40:35 +0100
Subject: [PATCH] MdeModulePkg: TerminalDxe: add other text resolutions
@ -108,6 +107,3 @@ index 6fde3b2..787bd35 100644
//
// New modes can be added here.
//
--
1.8.3.1

View File

@ -1,4 +1,3 @@
From 71de9d92e78ae0a7c351f9daf84109bbbaca400a Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Thu, 13 Mar 2014 08:08:41 +0100
Subject: [PATCH] pick up any display device, not only vga
@ -8,10 +7,10 @@ Subject: [PATCH] pick up any display device, not only vga
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
index ab9c93e..d3f5908 100644
index 0bc02ba..5024caf 100644
--- a/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
+++ b/OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c
@@ -593,7 +593,7 @@ DetectAndPreparePlatformPciDevicePath (
@@ -586,7 +586,7 @@ DetectAndPreparePlatformPciDevicePath (
//
// Here we decide which VGA device to enable in PCI bus
//
@ -20,6 +19,3 @@ index ab9c93e..d3f5908 100644
//
// Add them to ConOut.
//
--
1.8.3.1

View File

@ -15,17 +15,22 @@ Source1: https://www.openssl.org/source/openssl-%{openssl_version}.tar.gz
Source3: build-iso.sh
Source9: update-tarball.sh
Patch1: 0001-pick-up-any-display-device-not-only-vga.patch
Patch2: 0001-MdeModulePkg-TerminalDxe-add-other-text-resolutions.patch
Patch3: 0001-EXCLUDE_SHELL_FROM_FD.patch
Patch10: 0001-OvmfPkg-silence-EFI_D_VERBOSE-0x00400000-in-NvmExpre.patch
Patch11: 0002-OvmfPkg-silence-EFI_D_VERBOSE-0x00400000-in-the-DXE-.patch
Patch12: 0003-OvmfPkg-enable-DEBUG_VERBOSE.patch
Patch13: 0004-OvmfPkg-increase-max-debug-message-length-to-512.patch
Patch14: 0005-OvmfPkg-QemuVideoDxe-enable-debug-messages-in-VbeShi.patch
Patch20: 0001-OvmfPkg-EnrollDefaultKeys-application-for-enrolling-.patch
# Debug output tweaks, not for upstream
Patch0001: 0001-OvmfPkg-silence-EFI_D_VERBOSE-0x00400000-in-NvmExpre.patch
Patch0002: 0002-OvmfPkg-silence-EFI_D_VERBOSE-0x00400000-in-the-DXE-.patch
Patch0003: 0003-OvmfPkg-enable-DEBUG_VERBOSE.patch
Patch0004: 0004-OvmfPkg-increase-max-debug-message-length-to-512.patch
Patch0005: 0005-OvmfPkg-QemuVideoDxe-enable-debug-messages-in-VbeShi.patch
# Exclude EFI shell from firmware, suggested by pjones re: secureboot.
# Not for upstream, see bug 1325023#c16
Patch0006: 0006-EXCLUDE_SHELL_FROM_FD.patch
# Ship EnrollDefaultKeys application.
# Not for upstream, see bug 1325023#c16
Patch0007: 0007-OvmfPkg-EnrollDefaultKeys-application-for-enrolling-.patch
# More text console resolutions. Upstreaming attempted, but failed
Patch0008: 0008-MdeModulePkg-TerminalDxe-add-other-text-resolutions.patch
# Support qemu 'secondary-vga'. Not send upstream yet
Patch0009: 0009-pick-up-any-display-device-not-only-vga.patch
#
# actual firmware builds are done on x86_64 and aarch64,
@ -101,17 +106,7 @@ AARCH64 UEFI Firmware
%prep
%setup -q -n tianocore-%{name}-%{edk2_githash}
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch20 -p1
%autopatch -p1
# add openssl
tar -C CryptoPkg/Library/OpensslLib -xf %{SOURCE1}