<p>Lijian Zhao has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28688">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">[DoNotMerge]Local changes to make a platform working<br><br>Change-Id: I5449981baabcbb891e1036177307c58f5e2008ac<br>Signed-off-by: Lijian Zhao <lijian.zhao@intel.com><br>---<br>D payloads/external/tianocore/patches/01_CorebootPayloadPkg_pcinoenum.patch<br>D payloads/external/tianocore/patches/02_CorebootPayloadPkg_bds.patch<br>D payloads/external/tianocore/patches/03_Library_EndofDXE.patch<br>D payloads/external/tianocore/patches/04_CorebootPayloadPkg_addps2.patch<br>D payloads/external/tianocore/patches/05_CorebootPayloadPkg_noserial.patch<br>D payloads/external/tianocore/patches/06_CorebootPayloadPkg_keep_cb_table.patch<br>D payloads/external/tianocore/patches/07_CorebootPayloadPkg-Use-correct-BytesPerScanLine.patch<br>D payloads/external/tianocore/patches/08_BaseTools-Fix-building-with-Werror-stringop-truncati.patch<br>D payloads/external/tianocore/patches/09_gcc7-Fix-building-with-fpermissive.patch<br>M src/mainboard/intel/cannonlake_rvp/chromeos.fmd<br>M src/mainboard/intel/coffeelake_rvp/Makefile.inc<br>M src/mainboard/intel/coffeelake_rvp/bootblock.c<br>A src/mainboard/intel/coffeelake_rvp/early_init.c<br>M src/mainboard/intel/coffeelake_rvp/memory.c<br>M src/mainboard/intel/coffeelake_rvp/variants/baseboard/include/baseboard/variants.h<br>M src/mainboard/intel/coffeelake_rvp/variants/cfl_u/devicetree.cb<br>M src/soc/intel/cannonlake/Kconfig<br>17 files changed, 74 insertions(+), 2,951 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/88/28688/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/payloads/external/tianocore/patches/01_CorebootPayloadPkg_pcinoenum.patch b/payloads/external/tianocore/patches/01_CorebootPayloadPkg_pcinoenum.patch</span><br><span>deleted file mode 100644</span><br><span>index 448da4a..0000000</span><br><span>--- a/payloads/external/tianocore/patches/01_CorebootPayloadPkg_pcinoenum.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,65 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">->From 4f9d41e69356ce7486b0c74a754ff494256723de Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: CoolStar <coolstarorganization@gmail.com></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Sun, 4 Dec 2016 11:23:38 -0800</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] PCI: use Duet's PciNoEnumeration</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>----</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkg.fdf | 4 ++--</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc | 7 ++-----</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc | 7 ++-----</span><br><span style="color: hsl(0, 100%, 40%);">- 3 files changed, 6 insertions(+), 12 deletions(-)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkg.fdf b/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-index 303e626842..a39e3999ba 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -124,8 +124,8 @@ INF MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # PCI Support
</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">--INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">--INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+INF DuetPkg/PciRootBridgeNoEnumerationDxe/PciRootBridgeNoEnumeration.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+INF DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # ISA Support
</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index cdfcb75b59..e838aca61d 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -450,11 +450,8 @@</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # PCI Support
</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
</span><br><span style="color: hsl(0, 100%, 40%);">-- <LibraryClasses>
</span><br><span style="color: hsl(0, 100%, 40%);">-- PciHostBridgeLib|CorebootPayloadPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- }
</span><br><span style="color: hsl(0, 100%, 40%);">-+ DuetPkg/PciRootBridgeNoEnumerationDxe/PciRootBridgeNoEnumeration.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # SCSI/ATA/IDE/DISK Support
</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index 6b16af63ba..c25d821fd4 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -451,11 +451,8 @@</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # PCI Support
</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
</span><br><span style="color: hsl(0, 100%, 40%);">-- <LibraryClasses>
</span><br><span style="color: hsl(0, 100%, 40%);">-- PciHostBridgeLib|CorebootPayloadPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- }
</span><br><span style="color: hsl(0, 100%, 40%);">-+ DuetPkg/PciRootBridgeNoEnumerationDxe/PciRootBridgeNoEnumeration.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # SCSI/ATA/IDE/DISK Support
</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.13.2.725.g09c95d1e9-goog</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/payloads/external/tianocore/patches/02_CorebootPayloadPkg_bds.patch b/payloads/external/tianocore/patches/02_CorebootPayloadPkg_bds.patch</span><br><span>deleted file mode 100644</span><br><span>index 8013ccd..0000000</span><br><span>--- a/payloads/external/tianocore/patches/02_CorebootPayloadPkg_bds.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,2551 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From 5121087836c1ad2a08857d494c0d9ecb183f4f98 Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: CoolStar <coolstarorganization@gmail.com></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Tue, 18 Jul 2017 15:50:38 -0600</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] Rebasing</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>----</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootModulePkg/CorebootModulePkg.dec | 8 +</span><br><span style="color: hsl(0, 100%, 40%);">- .../Include/Guid/LdrMemoryDescriptor.h | 33 +</span><br><span style="color: hsl(0, 100%, 40%);">- .../Include/Guid/PciExpressBaseAddress.h | 46 +</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootModulePkg/Include/Guid/PciOptionRomTable.h | 41 +</span><br><span style="color: hsl(0, 100%, 40%);">- .../Library/CorebootBdsLib/BdsPlatform.c | 1731 ++++++++++++++++++++</span><br><span style="color: hsl(0, 100%, 40%);">- .../Library/CorebootBdsLib/BdsPlatform.h | 288 ++++</span><br><span style="color: hsl(0, 100%, 40%);">- .../Library/CorebootBdsLib/PlatformBds.inf | 65 +</span><br><span style="color: hsl(0, 100%, 40%);">- .../Library/CorebootBdsLib/PlatformData.c | 161 ++</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkg.fdf | 5 +-</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc | 12 +-</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc | 12 +-</span><br><span style="color: hsl(0, 100%, 40%);">- 11 files changed, 2388 insertions(+), 14 deletions(-)</span><br><span style="color: hsl(0, 100%, 40%);">- create mode 100644 CorebootModulePkg/Include/Guid/LdrMemoryDescriptor.h</span><br><span style="color: hsl(0, 100%, 40%);">- create mode 100644 CorebootModulePkg/Include/Guid/PciExpressBaseAddress.h</span><br><span style="color: hsl(0, 100%, 40%);">- create mode 100644 CorebootModulePkg/Include/Guid/PciOptionRomTable.h</span><br><span style="color: hsl(0, 100%, 40%);">- create mode 100644 CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">- create mode 100644 CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.h</span><br><span style="color: hsl(0, 100%, 40%);">- create mode 100644 CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf</span><br><span style="color: hsl(0, 100%, 40%);">- create mode 100644 CorebootModulePkg/Library/CorebootBdsLib/PlatformData.c</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/CorebootModulePkg.dec b/CorebootModulePkg/CorebootModulePkg.dec</span><br><span style="color: hsl(0, 100%, 40%);">-index 7f1309bdae..20932a1d04 100644</span><br><span>---- a/CorebootModulePkg/CorebootModulePkg.dec</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/CorebootModulePkg.dec</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -33,8 +33,16 @@</span><br><span style="color: hsl(0, 100%, 40%);">- gUefiCorebootModulePkgTokenSpaceGuid = {0xe6ff49a0, 0x15df, 0x48fd, {0x9a, 0xcf, 0xd7, 0xdc, 0x27, 0x1b, 0x39, 0xd5}}
</span><br><span style="color: hsl(0, 100%, 40%);">- gUefiSystemTableInfoGuid = {0x16c8a6d0, 0xfe8a, 0x4082, {0xa2, 0x8, 0xcf, 0x89, 0xc4, 0x29, 0x4, 0x33}}
</span><br><span style="color: hsl(0, 100%, 40%);">- gUefiFrameBufferInfoGuid = {0xdc2cd8bd, 0x402c, 0x4dc4, {0x9b, 0xe0, 0xc, 0x43, 0x2b, 0x7, 0xfa, 0x34}}
</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiPciExpressBaseAddressGuid = {0x3677d529, 0x326f, 0x4603, {0xa9, 0x26, 0xea, 0xac, 0xe0, 0x1d, 0xcb, 0xb0 }}
</span><br><span style="color: hsl(0, 100%, 40%);">- gUefiAcpiBoardInfoGuid = {0xad3d31b, 0xb3d8, 0x4506, {0xae, 0x71, 0x2e, 0xf1, 0x10, 0x6, 0xd9, 0xf}}
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-+ ## Include/Guid/PciOptionRomTable.h
</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiPciOptionRomTableGuid = { 0x7462660F, 0x1CBD, 0x48DA, { 0xAD, 0x11, 0x91, 0x71, 0x79, 0x13, 0x83, 0x1C }}
</span><br><span style="color: hsl(0, 100%, 40%);">-+
</span><br><span style="color: hsl(0, 100%, 40%);">-+ ## Include/Guid/LdrMemoryDescriptor.h
</span><br><span style="color: hsl(0, 100%, 40%);">-+ gLdrMemoryDescriptorGuid = { 0x7701d7e5, 0x7d1d, 0x4432, { 0xa4, 0x68, 0x67, 0x3d, 0xab, 0x8a, 0xde, 0x60 }}
</span><br><span style="color: hsl(0, 100%, 40%);">-+
</span><br><span style="color: hsl(0, 100%, 40%);">-+
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- [Ppis]
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Include/Guid/LdrMemoryDescriptor.h b/CorebootModulePkg/Include/Guid/LdrMemoryDescriptor.h</span><br><span style="color: hsl(0, 100%, 40%);">-new file mode 100644</span><br><span style="color: hsl(0, 100%, 40%);">-index 0000000000..38a997deea</span><br><span>---- /dev/null</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Include/Guid/LdrMemoryDescriptor.h</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -0,0 +1,33 @@</span><br><span style="color: hsl(0, 100%, 40%);">-+/** @file</span><br><span style="color: hsl(0, 100%, 40%);">-+ Guid is for GUIDED HOB of LDR memory descriptor.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Copyright (c) 2011, Intel Corporation. All rights reserved.<BR></span><br><span style="color: hsl(0, 100%, 40%);">-+This program and the accompanying materials </span><br><span style="color: hsl(0, 100%, 40%);">-+are licensed and made available under the terms and conditions of the BSD License </span><br><span style="color: hsl(0, 100%, 40%);">-+which accompanies this distribution. The full text of the license may be found at </span><br><span style="color: hsl(0, 100%, 40%);">-+http://opensource.org/licenses/bsd-license.php </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, </span><br><span style="color: hsl(0, 100%, 40%);">-+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+**/</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#ifndef __LDR_MEMORY_DESCRIPTOR__</span><br><span style="color: hsl(0, 100%, 40%);">-+#define __LDR_MEMORY_DESCRIPTOR__</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define LDR_MEMORY_DESCRIPTOR_GUID \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { 0x7701d7e5, 0x7d1d, 0x4432, {0xa4, 0x68, 0x67, 0x3d, 0xab, 0x8a, 0xde, 0x60}}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#pragma pack(1)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_HOB_GUID_TYPE Hob;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN MemDescCount;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_MEMORY_DESCRIPTOR *MemDesc;</span><br><span style="color: hsl(0, 100%, 40%);">-+} MEMORY_DESC_HOB;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#pragma pack()</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+extern EFI_GUID gLdrMemoryDescriptorGuid;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#endif</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Include/Guid/PciExpressBaseAddress.h b/CorebootModulePkg/Include/Guid/PciExpressBaseAddress.h</span><br><span style="color: hsl(0, 100%, 40%);">-new file mode 100644</span><br><span style="color: hsl(0, 100%, 40%);">-index 0000000000..ff554383c1</span><br><span>---- /dev/null</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Include/Guid/PciExpressBaseAddress.h</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -0,0 +1,46 @@</span><br><span style="color: hsl(0, 100%, 40%);">-+/** @file</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Copyright (c) 2006, Intel Corporation. All rights reserved.<BR></span><br><span style="color: hsl(0, 100%, 40%);">-+This program and the accompanying materials </span><br><span style="color: hsl(0, 100%, 40%);">-+are licensed and made available under the terms and conditions of the BSD License </span><br><span style="color: hsl(0, 100%, 40%);">-+which accompanies this distribution. The full text of the license may be found at </span><br><span style="color: hsl(0, 100%, 40%);">-+http://opensource.org/licenses/bsd-license.php </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, </span><br><span style="color: hsl(0, 100%, 40%);">-+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Module Name:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ PciExpressBaseAddress.h</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Abstract:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ GUIDs used for PciExpress Base Address</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+**/</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#ifndef _EFI_PCI_EXPRESS_BASE_ADDRESS_H_</span><br><span style="color: hsl(0, 100%, 40%);">-+#define _EFI_PCI_EXPRESS_BASE_ADDRESS_H_</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define EFI_PCI_EXPRESS_BASE_ADDRESS_GUID \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0x3677d529, 0x326f, 0x4603, {0xa9, 0x26, 0xea, 0xac, 0xe0, 0x1d, 0xcb, 0xb0} \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Following structure defines PCI Express Base Address information.</span><br><span style="color: hsl(0, 100%, 40%);">-+// This information is platform specific, and built into hob in PEI phase.</span><br><span style="color: hsl(0, 100%, 40%);">-+// It can be consumed by PEI PCI driver and DXE PCI driver.</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+#pragma pack(1)</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct _EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION {</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 HostBridgeNumber;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 RootBridgeNumber;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT64 PciExpressBaseAddress;</span><br><span style="color: hsl(0, 100%, 40%);">-+} EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION;</span><br><span style="color: hsl(0, 100%, 40%);">-+#pragma pack()</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+extern EFI_GUID gEfiPciExpressBaseAddressGuid;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#endif</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Include/Guid/PciOptionRomTable.h b/CorebootModulePkg/Include/Guid/PciOptionRomTable.h</span><br><span style="color: hsl(0, 100%, 40%);">-new file mode 100644</span><br><span style="color: hsl(0, 100%, 40%);">-index 0000000000..a2fb99710a</span><br><span>---- /dev/null</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Include/Guid/PciOptionRomTable.h</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -0,0 +1,41 @@</span><br><span style="color: hsl(0, 100%, 40%);">-+/** @file</span><br><span style="color: hsl(0, 100%, 40%);">-+ GUID and data structure used to describe the list of PCI Option ROMs present in a system.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Copyright (c) 2006, Intel Corporation. All rights reserved.<BR></span><br><span style="color: hsl(0, 100%, 40%);">-+This program and the accompanying materials </span><br><span style="color: hsl(0, 100%, 40%);">-+are licensed and made available under the terms and conditions of the BSD License </span><br><span style="color: hsl(0, 100%, 40%);">-+which accompanies this distribution. The full text of the license may be found at </span><br><span style="color: hsl(0, 100%, 40%);">-+http://opensource.org/licenses/bsd-license.php </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, </span><br><span style="color: hsl(0, 100%, 40%);">-+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+**/</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#ifndef __PCI_OPTION_ROM_TABLE_GUID_H_</span><br><span style="color: hsl(0, 100%, 40%);">-+#define __PCI_OPTION_ROM_TABLE_GUID_H_</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define EFI_PCI_OPTION_ROM_TABLE_GUID \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { 0x7462660f, 0x1cbd, 0x48da, {0xad, 0x11, 0x91, 0x71, 0x79, 0x13, 0x83, 0x1c } }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+extern EFI_GUID gEfiPciOptionRomTableGuid;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PHYSICAL_ADDRESS RomAddress; </span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_MEMORY_TYPE MemoryType;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 RomLength; </span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 Seg; </span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT8 Bus; </span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT8 Dev; </span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT8 Func; </span><br><span style="color: hsl(0, 100%, 40%);">-+ BOOLEAN ExecutedLegacyBiosImage; </span><br><span style="color: hsl(0, 100%, 40%);">-+ BOOLEAN DontLoadEfiRom;</span><br><span style="color: hsl(0, 100%, 40%);">-+} EFI_PCI_OPTION_ROM_DESCRIPTOR;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT64 PciOptionRomCount;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PCI_OPTION_ROM_DESCRIPTOR *PciOptionRomDescriptors;</span><br><span style="color: hsl(0, 100%, 40%);">-+} EFI_PCI_OPTION_ROM_TABLE;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#endif // __PCI_OPTION_ROM_TABLE_GUID_H_</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">-new file mode 100644</span><br><span style="color: hsl(0, 100%, 40%);">-index 0000000000..b6253a17f8</span><br><span>---- /dev/null</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -0,0 +1,1731 @@</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR></span><br><span style="color: hsl(0, 100%, 40%);">-+This program and the accompanying materials </span><br><span style="color: hsl(0, 100%, 40%);">-+are licensed and made available under the terms and conditions of the BSD License </span><br><span style="color: hsl(0, 100%, 40%);">-+which accompanies this distribution. The full text of the license may be found at </span><br><span style="color: hsl(0, 100%, 40%);">-+http://opensource.org/licenses/bsd-license.php </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, </span><br><span style="color: hsl(0, 100%, 40%);">-+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Module Name:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Abstract:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ This file include all platform action which can be customized</span><br><span style="color: hsl(0, 100%, 40%);">-+ by IBV/OEM.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#include "BdsPlatform.h"</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define IS_PCI_ISA_PDECODE(_p) IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_ISA_PDECODE, 0)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+extern BOOLEAN gConnectAllHappened;</span><br><span style="color: hsl(0, 100%, 40%);">-+extern USB_CLASS_FORMAT_DEVICE_PATH gUsbClassKeyboardDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_GUID *gTableGuidArray[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiAcpi20TableGuid, &gEfiAcpiTableGuid, &gEfiSmbiosTableGuid, &gEfiMpsTableGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ };</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// BDS Platform Functions</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+GetSystemTablesFromHob (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ Find GUID'ed HOBs that contain EFI_PHYSICAL_ADDRESS of ACPI, SMBIOS, MPs tables</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ None</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PEI_HOB_POINTERS GuidHob;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PEI_HOB_POINTERS HobStart;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PHYSICAL_ADDRESS *Table;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get Hob List</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ HobStart.Raw = GetHobList ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Iteratively add ACPI Table, SMBIOS Table, MPS Table to EFI System Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; Index < ARRAY_SIZE (gTableGuidArray); ++Index) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ GuidHob.Raw = GetNextGuidHob (gTableGuidArray[Index], HobStart.Raw);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (GuidHob.Raw != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Table = GET_GUID_HOB_DATA (GuidHob.Guid);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (Table != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Check if Mps Table/Smbios Table/Acpi Table exists in E/F seg,</span><br><span style="color: hsl(0, 100%, 40%);">-+ // According to UEFI Spec, we should make sure Smbios table, </span><br><span style="color: hsl(0, 100%, 40%);">-+ // ACPI table and Mps tables kept in memory of specified type</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ ConvertSystemTable(gTableGuidArray[Index], (VOID**)&Table);</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->InstallConfigurationTable (gTableGuidArray[Index], (VOID *)Table);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ return ;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#if 0</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PrintMemoryMap (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_MEMORY_DESCRIPTOR *MemMap;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_MEMORY_DESCRIPTOR *MemMapPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN MemMapSize;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN MapKey, DescriptorSize;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 DescriptorVersion;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT64 Bytes;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMapSize = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMap = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->GetMemoryMap (&MemMapSize, MemMap, &MapKey, &DescriptorSize, &DescriptorVersion);</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT (Status == EFI_BUFFER_TOO_SMALL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMapSize += EFI_PAGE_SIZE;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->AllocatePool (EfiBootServicesData, MemMapSize, &MemMap);</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT (Status == EFI_SUCCESS);</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->GetMemoryMap (&MemMapSize, MemMap, &MapKey, &DescriptorSize, &DescriptorVersion);</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT (Status == EFI_SUCCESS);</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMapPtr = MemMap;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT (DescriptorVersion == EFI_MEMORY_DESCRIPTOR_VERSION);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; Index < MemMapSize / DescriptorSize; Index ++) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Bytes = LShiftU64 (MemMap->NumberOfPages, 12);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "%lX-%lX %lX %lX %X\n",</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMap->PhysicalStart, </span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMap->PhysicalStart + Bytes - 1,</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMap->NumberOfPages, </span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMap->Attribute,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINTN)MemMap->Type));</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemMap = (EFI_MEMORY_DESCRIPTOR *)((UINTN)MemMap + DescriptorSize);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->FreePool (MemMapPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+#endif</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+UpdateMemoryMap (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PEI_HOB_POINTERS GuidHob;</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID *Table;</span><br><span style="color: hsl(0, 100%, 40%);">-+ MEMORY_DESC_HOB MemoryDescHob;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PHYSICAL_ADDRESS Memory;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_GCD_MEMORY_SPACE_DESCRIPTOR Descriptor;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ GuidHob.Raw = GetFirstGuidHob (&gLdrMemoryDescriptorGuid);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (GuidHob.Raw == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "Fail to get gEfiLdrMemoryDescriptorGuid from GUID HOB LIST!\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+ return;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ Table = GET_GUID_HOB_DATA (GuidHob.Guid);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (Table == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "Fail to get gEfiLdrMemoryDescriptorGuid from GUID HOB LIST!\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+ return;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDescCount = *(UINTN *)Table;</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDesc = *(EFI_MEMORY_DESCRIPTOR **)((UINTN)Table + sizeof(UINTN));</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Add ACPINVS, ACPIReclaim, and Reserved memory to MemoryMap</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; Index < MemoryDescHob.MemDescCount; Index++) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (MemoryDescHob.MemDesc[Index].PhysicalStart < 0x100000) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (MemoryDescHob.MemDesc[Index].PhysicalStart >= 0x100000000ULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((MemoryDescHob.MemDesc[Index].Type == EfiReservedMemoryType) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ (MemoryDescHob.MemDesc[Index].Type == EfiRuntimeServicesData) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ (MemoryDescHob.MemDesc[Index].Type == EfiRuntimeServicesCode) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ (MemoryDescHob.MemDesc[Index].Type == EfiACPIReclaimMemory) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ (MemoryDescHob.MemDesc[Index].Type == EfiACPIMemoryNVS)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "PhysicalStart - 0x%016lx, ", MemoryDescHob.MemDesc[Index].PhysicalStart));</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "PageNumber - 0x%016lx, ", MemoryDescHob.MemDesc[Index].NumberOfPages));</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "Attribute - 0x%016lx, ", MemoryDescHob.MemDesc[Index].Attribute));</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "Type - 0x%08x\n", MemoryDescHob.MemDesc[Index].Type));</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((MemoryDescHob.MemDesc[Index].Type == EfiRuntimeServicesData) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ (MemoryDescHob.MemDesc[Index].Type == EfiRuntimeServicesCode)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // For RuntimeSevicesData and RuntimeServicesCode, they are BFV or DxeCore.</span><br><span style="color: hsl(0, 100%, 40%);">-+ // The memory type is assigned in EfiLdr</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gDS->GetMemorySpaceDescriptor (MemoryDescHob.MemDesc[Index].PhysicalStart, &Descriptor);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (Descriptor.GcdMemoryType != EfiGcdMemoryTypeReserved) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // BFV or tested DXE core</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Untested DXE Core region, free and remove</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gDS->FreeMemorySpace (</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDesc[Index].PhysicalStart,</span><br><span style="color: hsl(0, 100%, 40%);">-+ LShiftU64 (MemoryDescHob.MemDesc[Index].NumberOfPages, EFI_PAGE_SHIFT)</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "FreeMemorySpace fail - %r!\n", Status));</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gDS->RemoveMemorySpace (</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDesc[Index].PhysicalStart,</span><br><span style="color: hsl(0, 100%, 40%);">-+ LShiftU64 (MemoryDescHob.MemDesc[Index].NumberOfPages, EFI_PAGE_SHIFT)</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "RemoveMemorySpace fail - %r!\n", Status));</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Convert Runtime type to BootTime type</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (MemoryDescHob.MemDesc[Index].Type == EfiRuntimeServicesData) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDesc[Index].Type = EfiBootServicesData;</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDesc[Index].Type = EfiBootServicesCode;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // PassThrough, let below code add and alloate.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // ACPI or reserved memory</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gDS->AddMemorySpace (</span><br><span style="color: hsl(0, 100%, 40%);">-+ EfiGcdMemoryTypeSystemMemory,</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDesc[Index].PhysicalStart,</span><br><span style="color: hsl(0, 100%, 40%);">-+ LShiftU64 (MemoryDescHob.MemDesc[Index].NumberOfPages, EFI_PAGE_SHIFT),</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryDescHob.MemDesc[Index].Attribute</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "AddMemorySpace fail - %r!\n", Status));</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((MemoryDescHob.MemDesc[Index].Type == EfiACPIReclaimMemory) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ (MemoryDescHob.MemDesc[Index].Type == EfiACPIMemoryNVS)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // For EfiACPIReclaimMemory and EfiACPIMemoryNVS, it must success.</span><br><span style="color: hsl(0, 100%, 40%);">-+ // For EfiReservedMemoryType, there maybe overlap. So skip check here.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+// ASSERT_EFI_ERROR (Status);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Memory = MemoryDescHob.MemDesc[Index].PhysicalStart;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->AllocatePages (</span><br><span style="color: hsl(0, 100%, 40%);">-+ AllocateAddress,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (EFI_MEMORY_TYPE)MemoryDescHob.MemDesc[Index].Type,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINTN)MemoryDescHob.MemDesc[Index].NumberOfPages,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &Memory</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "AllocatePages fail - %r!\n", Status));</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // For the page added, it must be allocated.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+// ASSERT_EFI_ERROR (Status);</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+DisableUsbLegacySupport(</span><br><span style="color: hsl(0, 100%, 40%);">-+ void</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ Disabble the USB legacy Support in all Ehci and Uhci.</span><br><span style="color: hsl(0, 100%, 40%);">-+ This function assume all PciIo handles have been created in system.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ None</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_NOT_FOUND</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_HANDLE *HandleArray;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN HandleArrayCount;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PCI_IO_PROTOCOL *PciIo;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT8 Class[3];</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT16 Command;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 HcCapParams;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 ExtendCap;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 Value;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 TimeOut;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Find the usb host controller </span><br><span style="color: hsl(0, 100%, 40%);">-+ // </span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->LocateHandleBuffer (</span><br><span style="color: hsl(0, 100%, 40%);">-+ ByProtocol,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiPciIoProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &HandleArrayCount,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &HandleArray</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (!EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; Index < HandleArrayCount; Index++) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->HandleProtocol (</span><br><span style="color: hsl(0, 100%, 40%);">-+ HandleArray[Index],</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiPciIoProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (VOID **)&PciIo</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (!EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Find the USB host controller controller</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint8, 0x09, 3, &Class);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (!EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((PCI_CLASS_SERIAL == Class[2]) &&</span><br><span style="color: hsl(0, 100%, 40%);">-+ (PCI_CLASS_SERIAL_USB == Class[1])) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (PCI_IF_UHCI == Class[0]) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Found the UHCI, then disable the legacy support</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Command = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = PciIo->Pci.Write (PciIo, EfiPciIoWidthUint16, 0xC0, 1, &Command);</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else if (PCI_IF_EHCI == Class[0]) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Found the EHCI, then disable the legacy support</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = PciIo->Mem.Read (</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciIo,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EfiPciIoWidthUint32,</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0, //EHC_BAR_INDEX</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT64) 0x08, //EHC_HCCPARAMS_OFFSET</span><br><span style="color: hsl(0, 100%, 40%);">-+ 1,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &HcCapParams</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ ExtendCap = (HcCapParams >> 8) & 0xFF;</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Disable the SMI in USBLEGCTLSTS firstly</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, ExtendCap + 0x4, 1, &Value);</span><br><span style="color: hsl(0, 100%, 40%);">-+ Value &= 0xFFFF0000;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciIo->Pci.Write (PciIo, EfiPciIoWidthUint32, ExtendCap + 0x4, 1, &Value);</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get EHCI Ownership from legacy bios</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, ExtendCap, 1, &Value);</span><br><span style="color: hsl(0, 100%, 40%);">-+ Value |= (0x1 << 24);</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciIo->Pci.Write (PciIo, EfiPciIoWidthUint32, ExtendCap, 1, &Value);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ TimeOut = 40;</span><br><span style="color: hsl(0, 100%, 40%);">-+ while (TimeOut--) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->Stall (500);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, ExtendCap, 1, &Value);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((Value & 0x01010000) == 0x01000000) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ break;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ } </span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->FreePool (HandleArray);</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsInit (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Platform Bds init. Include the platform firmware vendor, revision</span><br><span style="color: hsl(0, 100%, 40%);">-+ and so crc check.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ GetSystemTablesFromHob ();</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ UpdateMemoryMap ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Append Usb Keyboard short form DevicePath into "ConInDev" </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VarConsoleInpDev,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (EFI_DEVICE_PATH_PROTOCOL *) &gUsbClassKeyboardDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+UINT64</span><br><span style="color: hsl(0, 100%, 40%);">-+GetPciExpressBaseAddressForRootBridge (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINTN HostBridgeNumber,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINTN RootBridgeNumber</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ This routine is to get PciExpress Base Address for this RootBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ HostBridgeNumber - The number of HostBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+ RootBridgeNumber - The number of RootBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT64 - PciExpressBaseAddress for this HostBridge and RootBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION *PciExpressBaseAddressInfo;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN BufferSize;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 Number;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PEI_HOB_POINTERS GuidHob;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get PciExpressAddressInfo Hob</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciExpressBaseAddressInfo = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferSize = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ GuidHob.Raw = GetFirstGuidHob (&gEfiPciExpressBaseAddressGuid);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (GuidHob.Raw != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciExpressBaseAddressInfo = GET_GUID_HOB_DATA (GuidHob.Guid);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferSize = GET_GUID_HOB_DATA_SIZE (GuidHob.Guid);</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Search the PciExpress Base Address in the Hob for current RootBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Number = (UINT32)(BufferSize / sizeof(EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION));</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; Index < Number; Index++) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((PciExpressBaseAddressInfo[Index].HostBridgeNumber == HostBridgeNumber) &&</span><br><span style="color: hsl(0, 100%, 40%);">-+ (PciExpressBaseAddressInfo[Index].RootBridgeNumber == RootBridgeNumber)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return PciExpressBaseAddressInfo[Index].PciExpressBaseAddress;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Do not find the PciExpress Base Address in the Hob</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ return 0; </span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PatchPciRootBridgeDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINTN HostBridgeNumber,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINTN RootBridgeNumber,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN PLATFORM_ROOT_BRIDGE_DEVICE_PATH *RootBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT64 PciExpressBase;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciExpressBase = GetPciExpressBaseAddressForRootBridge (HostBridgeNumber, RootBridgeNumber);</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_INFO, "Get PciExpress Address from Hob: 0x%X\n", PciExpressBase));</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ if (PciExpressBase != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ RootBridge->PciRootBridge.HID = EISA_PNP_ID(0x0A08);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConnectRootBridge (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Connect RootBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS - Connect RootBridge successfully.</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS - Connect RootBridge fail.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_HANDLE RootHandle;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Patch Pci Root Bridge Device Path</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PatchPciRootBridgeDevicePath (0, 0, &gPlatformRootBridge0);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Make all the PCI_IO protocols on PCI Seg 0 show up</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibConnectDevicePath (gPlatformRootBridges[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->LocateDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiDevicePathProtocolGuid, </span><br><span style="color: hsl(0, 100%, 40%);">-+ &gPlatformRootBridges[0], </span><br><span style="color: hsl(0, 100%, 40%);">-+ &RootHandle</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_INFO, "Pci Root bridge handle is 0x%X\n", RootHandle));</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->ConnectController (RootHandle, NULL, NULL, FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PrepareLpcBridgeDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_HANDLE DeviceHandle</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Add IsaKeyboard to ConIn,</span><br><span style="color: hsl(0, 100%, 40%);">-+ add IsaSerial to ConOut, ConIn, ErrOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ LPC Bridge: 06 01 00</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DeviceHandle - Handle of PCIIO protocol.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS - LPC bridge is added to ConOut, ConIn, and ErrOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS - No LPC bridge is added.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->HandleProtocol (</span><br><span style="color: hsl(0, 100%, 40%);">-+ DeviceHandle,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiDevicePathProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (VOID*)&DevicePath</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ TempDevicePath = DevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Register Keyboard</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gPnpPs2KeyboardDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleInp, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Register COM1</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = TempDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPnp16550ComPortDeviceNode.UID = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gPnp16550ComPortDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleOut, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleInp, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarErrorOut, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Register COM2</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = TempDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPnp16550ComPortDeviceNode.UID = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gPnp16550ComPortDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleOut, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleInp, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarErrorOut, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+GetGopDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_DEVICE_PATH_PROTOCOL *PciDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+ OUT EFI_DEVICE_PATH_PROTOCOL **GopDevicePath</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_HANDLE PciDeviceHandle;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *TempPciDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN GopHandleCount;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_HANDLE *GopHandleBuffer;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (PciDevicePath == NULL || GopDevicePath == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_INVALID_PARAMETER;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Initialize the GopDevicePath to be PciDevicePath</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ *GopDevicePath = PciDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ TempPciDevicePath = PciDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->LocateDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiDevicePathProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &TempPciDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &PciDeviceHandle</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Try to connect this handle, so that GOP driver could start on this </span><br><span style="color: hsl(0, 100%, 40%);">-+ // device and create child handles with GraphicsOutput Protocol installed</span><br><span style="color: hsl(0, 100%, 40%);">-+ // on them, then we get device paths of these child handles and select </span><br><span style="color: hsl(0, 100%, 40%);">-+ // them as possible console device.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->ConnectController (PciDeviceHandle, NULL, NULL, FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->LocateHandleBuffer (</span><br><span style="color: hsl(0, 100%, 40%);">-+ ByProtocol,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiGraphicsOutputProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &GopHandleCount,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &GopHandleBuffer</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (!EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Add all the child handles as possible Console Device</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; Index < GopHandleCount; Index++) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->HandleProtocol (GopHandleBuffer[Index], &gEfiDevicePathProtocolGuid, (VOID*)&TempDevicePath);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (CompareMem (</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+ TempDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+ GetDevicePathSize (PciDevicePath) - END_DEVICE_PATH_LENGTH</span><br><span style="color: hsl(0, 100%, 40%);">-+ ) == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // In current implementation, we only enable one of the child handles</span><br><span style="color: hsl(0, 100%, 40%);">-+ // as console device, i.e. sotre one of the child handle's device</span><br><span style="color: hsl(0, 100%, 40%);">-+ // path to variable "ConOut"</span><br><span style="color: hsl(0, 100%, 40%);">-+ // In future, we could select all child handles to be console device</span><br><span style="color: hsl(0, 100%, 40%);">-+ // </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ *GopDevicePath = TempDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Delete the PCI device's path that added by GetPlugInPciVgaDevicePath()</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Add the integrity GOP device path.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleOutDev, NULL, PciDevicePath);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleOutDev, TempDevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->FreePool (GopHandleBuffer);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PreparePciVgaDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_HANDLE DeviceHandle</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Add PCI VGA to ConOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI VGA: 03 00 00</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DeviceHandle - Handle of PCIIO protocol.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS - PCI VGA is added to ConOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS - No PCI VGA device is added.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ GopDevicePath = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->HandleProtocol (</span><br><span style="color: hsl(0, 100%, 40%);">-+ DeviceHandle,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiDevicePathProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (VOID*)&DevicePath</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ GetGopDevicePath (DevicePath, &GopDevicePath);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = GopDevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleOut, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PreparePciSerialDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_HANDLE DeviceHandle</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Add PCI Serial to ConOut, ConIn, ErrOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI Serial: 07 00 02</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DeviceHandle - Handle of PCIIO protocol.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS - PCI Serial is added to ConOut, ConIn, and ErrOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS - No PCI Serial device is added.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->HandleProtocol (</span><br><span style="color: hsl(0, 100%, 40%);">-+ DeviceHandle,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiDevicePathProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ (VOID*)&DevicePath</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gUartDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&gTerminalTypeDeviceNode);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleOut, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleInp, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarErrorOut, DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+DetectAndPreparePlatformPciDevicePath (</span><br><span style="color: hsl(0, 100%, 40%);">-+ BOOLEAN DetectVgaOnly</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DetectVgaOnly - Only detect VGA device if it's TRUE.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS - PCI Device check and Console variable update successfully.</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS - PCI Device check or Console variable update fail.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN HandleCount;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_HANDLE *HandleBuffer;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PCI_IO_PROTOCOL *PciIo;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_TYPE00 Pci;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Start to check all the PciIo to find all possible device</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ HandleCount = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ HandleBuffer = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->LocateHandleBuffer (</span><br><span style="color: hsl(0, 100%, 40%);">-+ ByProtocol,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiPciIoProtocolGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &HandleCount,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &HandleBuffer</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; Index < HandleCount; Index++) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->HandleProtocol (HandleBuffer[Index], &gEfiPciIoProtocolGuid, (VOID*)&PciIo);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Check for all PCI device</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = PciIo->Pci.Read (</span><br><span style="color: hsl(0, 100%, 40%);">-+ PciIo,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EfiPciIoWidthUint32,</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0,</span><br><span style="color: hsl(0, 100%, 40%);">-+ sizeof (Pci) / sizeof (UINT32),</span><br><span style="color: hsl(0, 100%, 40%);">-+ &Pci</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (!DetectVgaOnly) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Here we decide whether it is LPC Bridge</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((IS_PCI_LPC (&Pci)) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ ((IS_PCI_ISA_PDECODE (&Pci)) && (Pci.Hdr.VendorId == 0x8086) && (Pci.Hdr.DeviceId == 0x7110))) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Add IsaKeyboard to ConIn,</span><br><span style="color: hsl(0, 100%, 40%);">-+ // add IsaSerial to ConOut, ConIn, ErrOut</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_INFO, "Find the LPC Bridge device\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+ PrepareLpcBridgeDevicePath (HandleBuffer[Index]);</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Here we decide which Serial device to enable in PCI bus </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (IS_PCI_16550SERIAL (&Pci)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Add them to ConOut, ConIn, ErrOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_INFO, "Find the 16550 SERIAL device\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+ PreparePciSerialDevicePath (HandleBuffer[Index]);</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Here we decide which VGA device to enable in PCI bus </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (IS_PCI_VGA (&Pci)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Add them to ConOut.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_INFO, "Find the VGA device\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+ PreparePciVgaDevicePath (HandleBuffer[Index]);</span><br><span style="color: hsl(0, 100%, 40%);">-+ continue;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->FreePool (HandleBuffer);</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsConnectConsole (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Connect the predefined platform default console device. Always try to find</span><br><span style="color: hsl(0, 100%, 40%);">-+ and enable the vga device if have.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformConsole - Predefined platform default console device array.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS - Success connect at least one ConIn and ConOut </span><br><span style="color: hsl(0, 100%, 40%);">-+ device, there must have one ConOut device is </span><br><span style="color: hsl(0, 100%, 40%);">-+ active vga device.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS - Return the status of </span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibConnectAllDefaultConsoles ()</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *VarConout;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL *VarConin;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN DevicePathSize;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Connect RootBridge</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ ConnectRootBridge ();</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ VarConout = BdsLibGetVariableAndSize (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VarConsoleOut,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiGlobalVariableGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &DevicePathSize</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ VarConin = BdsLibGetVariableAndSize (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VarConsoleInp,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiGlobalVariableGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &DevicePathSize</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ if (VarConout == NULL || VarConin == NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DetectAndPreparePlatformPciDevicePath (FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Have chance to connect the platform default console,</span><br><span style="color: hsl(0, 100%, 40%);">-+ // the platform default console is the minimum device group</span><br><span style="color: hsl(0, 100%, 40%);">-+ // the platform should support</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ for (Index = 0; PlatformConsole[Index].DevicePath != NULL; ++Index) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Update the console variable with the connect type</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((PlatformConsole[Index].ConnectType & CONSOLE_IN) == CONSOLE_IN) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleInp, PlatformConsole[Index].DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((PlatformConsole[Index].ConnectType & CONSOLE_OUT) == CONSOLE_OUT) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarConsoleOut, PlatformConsole[Index].DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((PlatformConsole[Index].ConnectType & STD_ERROR) == STD_ERROR) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibUpdateConsoleVariable (VarErrorOut, PlatformConsole[Index].DevicePath, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Only detect VGA device and add them to ConOut</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ DetectAndPreparePlatformPciDevicePath (TRUE);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // The ConIn devices connection will start the USB bus, should disable all</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Usb legacy support firstly.</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Caution: Must ensure the PCI bus driver has been started. Since the </span><br><span style="color: hsl(0, 100%, 40%);">-+ // ConnectRootBridge() will create all the PciIo protocol, it's safe here now</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = DisableUsbLegacySupport();</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Connect the all the default console with current cosole variable</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = BdsLibConnectAllDefaultConsoles ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsConnectSequence (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Connect with predefined platform connect sequence,</span><br><span style="color: hsl(0, 100%, 40%);">-+ the OEM/IBV can customize with their own connect sequence.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Index = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Here we can get the customized platform connect sequence</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Notes: we can connect with new variable which record the</span><br><span style="color: hsl(0, 100%, 40%);">-+ // last time boots connect device path sequence</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ while (gPlatformConnectSequence[Index] != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Build the platform boot option</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibConnectDevicePath (gPlatformConnectSequence[Index]);</span><br><span style="color: hsl(0, 100%, 40%);">-+ Index++;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsGetDriverOption (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT LIST_ENTRY *BdsDriverLists</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Load the predefined driver option, OEM/IBV can customize this</span><br><span style="color: hsl(0, 100%, 40%);">-+ to load their own drivers</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsDriverLists - The header of the driver option link list.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Index = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Here we can get the customized platform driver option</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ while (gPlatformDriverOption[Index] != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Build the platform boot option</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibRegisterNewOption (BdsDriverLists, gPlatformDriverOption[Index], NULL, L"DriverOrder");</span><br><span style="color: hsl(0, 100%, 40%);">-+ Index++;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsDiagnostics (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EXTENDMEM_COVERAGE_LEVEL MemoryTestLevel,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BOOLEAN QuietBoot,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BASEM_MEMORY_TEST BaseMemoryTest</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Perform the platform diagnostic, such like test memory. OEM/IBV also</span><br><span style="color: hsl(0, 100%, 40%);">-+ can customize this fuction to support specific platform diagnostic.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryTestLevel - The memory test intensive level</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ QuietBoot - Indicate if need to enable the quiet boot</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BaseMemoryTest - A pointer to BdsMemoryTest()</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Here we can decide if we need to show</span><br><span style="color: hsl(0, 100%, 40%);">-+ // the diagnostics screen</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Notes: this quiet boot code should be remove</span><br><span style="color: hsl(0, 100%, 40%);">-+ // from the graphic lib</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (QuietBoot) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = EnableQuietBoot (PcdGetPtr(PcdLogoFile));</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DisableQuietBoot ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ return;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Perform system diagnostic</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = BaseMemoryTest (MemoryTestLevel);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ DisableQuietBoot ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ return ;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Perform system diagnostic</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = BaseMemoryTest (MemoryTestLevel);</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsPolicyBehavior (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT LIST_ENTRY *DriverOptionList,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT LIST_ENTRY *BootOptionList,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN PROCESS_CAPSULES ProcessCapsules,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BASEM_MEMORY_TEST BaseMemoryTest</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ The function will execute with as the platform policy, current policy</span><br><span style="color: hsl(0, 100%, 40%);">-+ is driven by boot mode. IBV/OEM can customize this code for their specific</span><br><span style="color: hsl(0, 100%, 40%);">-+ policy action.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DriverOptionList - The header of the driver option link list</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ BootOptionList - The header of the boot option link list</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT16 Timeout;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_EVENT UserInputDurationTime;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Index;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_INPUT_KEY Key;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_BOOT_MODE BootMode;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Init the time out value</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Timeout = PcdGet16 (PcdPlatformBootTimeOut);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Load the driver option as the driver option list</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsGetDriverOption (DriverOptionList);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get current Boot Mode</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = BdsLibGetBootMode (&BootMode);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG ((EFI_D_ERROR, "Boot Mode:%x\n", BootMode));</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Go the different platform policy with different boot mode</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Notes: this part code can be change with the table policy</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT (BootMode == BOOT_WITH_FULL_CONFIGURATION);</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Connect platform console</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = PlatformBdsConnectConsole (gPlatformConsole);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Here OEM/IBV can customize with defined action</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsNoConsoleAction ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Create a 300ms duration event to ensure user has enough input time to enter Setup</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->CreateEvent (</span><br><span style="color: hsl(0, 100%, 40%);">-+ EVT_TIMER,</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &UserInputDurationTime</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT (Status == EFI_SUCCESS);</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->SetTimer (UserInputDurationTime, TimerRelative, 3000000);</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT (Status == EFI_SUCCESS);</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Memory test and Logo show</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsDiagnostics (IGNORE, TRUE, BaseMemoryTest);</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Perform some platform specific connect sequence</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsConnectSequence ();</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Give one chance to enter the setup if we</span><br><span style="color: hsl(0, 100%, 40%);">-+ // have the time out</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // BUGBUG: hard code timeout to 5 second to show logo in graphic mode.</span><br><span style="color: hsl(0, 100%, 40%);">-+ Timeout = 5; </span><br><span style="color: hsl(0, 100%, 40%);">-+ if (Timeout != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsEnterFrontPage (Timeout, FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ //BdsLibConnectAll ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ //BdsLibEnumerateAllBootOption (BootOptionList); </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Please uncomment above ConnectAll and EnumerateAll code and remove following first boot</span><br><span style="color: hsl(0, 100%, 40%);">-+ // checking code in real production tip.</span><br><span style="color: hsl(0, 100%, 40%);">-+ // </span><br><span style="color: hsl(0, 100%, 40%);">-+ // In BOOT_WITH_FULL_CONFIGURATION boot mode, should always connect every device </span><br><span style="color: hsl(0, 100%, 40%);">-+ // and do enumerate all the default boot options. But in development system board, the boot mode </span><br><span style="color: hsl(0, 100%, 40%);">-+ // cannot be BOOT_ASSUMING_NO_CONFIGURATION_CHANGES because the machine box</span><br><span style="color: hsl(0, 100%, 40%);">-+ // is always open. So the following code only do the ConnectAll and EnumerateAll at first boot.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = BdsLibBuildOptionFromVar (BootOptionList, L"BootOrder");</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (EFI_ERROR(Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If cannot find "BootOrder" variable, it may be first boot. </span><br><span style="color: hsl(0, 100%, 40%);">-+ // Try to connect all devices and enumerate all boot options here.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibConnectAll ();</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibEnumerateAllBootOption (BootOptionList);</span><br><span style="color: hsl(0, 100%, 40%);">-+ } </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // To give the User a chance to enter Setup here, if user set TimeOut is 0.</span><br><span style="color: hsl(0, 100%, 40%);">-+ // BDS should still give user a chance to enter Setup</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Check whether the user input after the duration time has expired </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->WaitForEvent (1, &UserInputDurationTime, &Index);</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->CloseEvent (UserInputDurationTime);</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ if (!EFI_ERROR (Status)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Enter Setup if user input </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Timeout = 0xffff;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsEnterFrontPage (Timeout, FALSE);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return ;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsBootSuccess (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BDS_COMMON_OPTION *Option</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ Hook point after a boot attempt succeeds. We don't expect a boot option to</span><br><span style="color: hsl(0, 100%, 40%);">-+ return, so the EFI 1.0 specification defines that you will default to an</span><br><span style="color: hsl(0, 100%, 40%);">-+ interactive mode and stop processing the BootOrder list in this case. This</span><br><span style="color: hsl(0, 100%, 40%);">-+ is alos a platform implementation and can be customized by IBV/OEM.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Option - Pointer to Boot Option that succeeded to boot.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ CHAR16 *TmpStr;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If Boot returned with EFI_SUCCESS and there is not in the boot device</span><br><span style="color: hsl(0, 100%, 40%);">-+ // select loop then we need to pop up a UI and wait for user input.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ TmpStr = Option->StatusString;</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (TmpStr != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibOutputStrings (gST->ConOut, TmpStr, Option->Description, L"\n\r", NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->FreePool (TmpStr);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsBootFail (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BDS_COMMON_OPTION *Option,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_STATUS Status,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN CHAR16 *ExitData,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINTN ExitDataSize</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ Hook point after a boot attempt fails.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ Option - Pointer to Boot Option that failed to boot.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status - Status returned from failed boot.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ ExitData - Exit data returned from failed boot.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ ExitDataSize - Exit data size returned from failed boot.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ CHAR16 *TmpStr;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If Boot returned with failed status then we need to pop up a UI and wait</span><br><span style="color: hsl(0, 100%, 40%);">-+ // for user input.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ TmpStr = Option->StatusString;</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (TmpStr != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsLibOutputStrings (gST->ConOut, TmpStr, Option->Description, L"\n\r", NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->FreePool (TmpStr);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsNoConsoleAction (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ This function is remained for IBV/OEM to do some platform action,</span><br><span style="color: hsl(0, 100%, 40%);">-+ if there no console device can be connected.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ None.</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCCESS - Direct return success now.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertSystemTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_GUID *TableGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ Convert ACPI Table /Smbios Table /MP Table if its location is lower than Address:0x100000</span><br><span style="color: hsl(0, 100%, 40%);">-+ Assumption here:</span><br><span style="color: hsl(0, 100%, 40%);">-+ As in legacy Bios, ACPI/Smbios/MP table is required to place in E/F Seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ So here we just check if the range is E/F seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ and if Not, assume the Memory type is EfiACPIReclaimMemory/EfiACPIMemoryNVS</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ TableGuid - Guid of the table</span><br><span style="color: hsl(0, 100%, 40%);">-+ Table - pointer to the table </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCEESS - Convert Table successfully</span><br><span style="color: hsl(0, 100%, 40%);">-+ Other - Failed</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID *AcpiHeader;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN AcpiTableLen;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If match acpi guid (1.0, 2.0, or later), Convert ACPI table according to version. </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ AcpiHeader = (VOID*)(UINTN)(*(UINT64 *)(*Table));</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ if (CompareGuid(TableGuid, &gEfiAcpiTableGuid) || CompareGuid(TableGuid, &gEfiAcpi20TableGuid)){</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (((EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER *)AcpiHeader)->Reserved == 0x00){</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If Acpi 1.0 Table, then RSDP structure doesn't contain Length field, use structure size</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ AcpiTableLen = sizeof (EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER);</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else if (((EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER *)AcpiHeader)->Reserved >= 0x02){</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If Acpi 2.0 or later, use RSDP Length fied.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ AcpiTableLen = ((EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *)AcpiHeader)->Length;</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Invalid Acpi Version, return</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_UNSUPPORTED;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = ConvertAcpiTable (AcpiTableLen, Table);</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status; </span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If matches smbios guid, convert Smbios table.</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (CompareGuid(TableGuid, &gEfiSmbiosTableGuid)){</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = ConvertSmbiosTable (Table);</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If the table is MP table?</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (CompareGuid(TableGuid, &gEfiMpsTableGuid)){</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = ConvertMpsTable (Table);</span><br><span style="color: hsl(0, 100%, 40%);">-+ return Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_UNSUPPORTED;</span><br><span style="color: hsl(0, 100%, 40%);">-+} </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertAcpiTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINTN TableLen,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+ Convert RSDP of ACPI Table if its location is lower than Address:0x100000</span><br><span style="color: hsl(0, 100%, 40%);">-+ Assumption here:</span><br><span style="color: hsl(0, 100%, 40%);">-+ As in legacy Bios, ACPI table is required to place in E/F Seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ So here we just check if the range is E/F seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ and if Not, assume the Memory type is EfiACPIReclaimMemory/EfiACPIMemoryNVS</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ TableLen - Acpi RSDP length</span><br><span style="color: hsl(0, 100%, 40%);">-+ Table - pointer to the table </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCEESS - Convert Table successfully</span><br><span style="color: hsl(0, 100%, 40%);">-+ Other - Failed</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID *AcpiTableOri;</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID *AcpiTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PHYSICAL_ADDRESS BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ AcpiTableOri = (VOID *)(UINTN)(*(UINT64*)(*Table));</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (((UINTN)AcpiTableOri < 0x100000) && ((UINTN)AcpiTableOri > 0xE0000)) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferPtr = EFI_SYSTEM_TABLE_MAX_ADDRESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->AllocatePages (</span><br><span style="color: hsl(0, 100%, 40%);">-+ AllocateMaxAddress,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EfiACPIMemoryNVS,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SIZE_TO_PAGES(TableLen),</span><br><span style="color: hsl(0, 100%, 40%);">-+ &BufferPtr</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT_EFI_ERROR (Status);</span><br><span style="color: hsl(0, 100%, 40%);">-+ AcpiTableNew = (VOID *)(UINTN)BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ CopyMem (AcpiTableNew, AcpiTableOri, TableLen);</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ AcpiTableNew = AcpiTableOri;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Change configuration table Pointer</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ *Table = AcpiTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertSmbiosTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Convert Smbios Table if the Location of the SMBios Table is lower than Addres 0x100000</span><br><span style="color: hsl(0, 100%, 40%);">-+ Assumption here:</span><br><span style="color: hsl(0, 100%, 40%);">-+ As in legacy Bios, Smbios table is required to place in E/F Seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ So here we just check if the range is F seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ and if Not, assume the Memory type is EfiACPIMemoryNVS/EfiRuntimeServicesData</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ Table - pointer to the table</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCEESS - Convert Table successfully</span><br><span style="color: hsl(0, 100%, 40%);">-+ Other - Failed</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ SMBIOS_TABLE_ENTRY_POINT *SmbiosTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ SMBIOS_TABLE_ENTRY_POINT *SmbiosTableOri;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 SmbiosEntryLen;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 BufferLen;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PHYSICAL_ADDRESS BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableNew = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableOri = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get Smibos configuration Table </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableOri = (SMBIOS_TABLE_ENTRY_POINT *)(UINTN)(*(UINT64*)(*Table));</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((SmbiosTableOri == NULL) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ ((UINTN)SmbiosTableOri > 0x100000) ||</span><br><span style="color: hsl(0, 100%, 40%);">-+ ((UINTN)SmbiosTableOri < 0xF0000)){</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Relocate the Smibos memory</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferPtr = EFI_SYSTEM_TABLE_MAX_ADDRESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (SmbiosTableOri->SmbiosBcdRevision != 0x21) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosEntryLen = SmbiosTableOri->EntryPointLength;</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // According to Smbios Spec 2.4, we should set entry point length as 0x1F if version is 2.1</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosEntryLen = 0x1F;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferLen = SmbiosEntryLen + SYS_TABLE_PAD(SmbiosEntryLen) + SmbiosTableOri->TableLength;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->AllocatePages (</span><br><span style="color: hsl(0, 100%, 40%);">-+ AllocateMaxAddress,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EfiACPIMemoryNVS,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SIZE_TO_PAGES(BufferLen),</span><br><span style="color: hsl(0, 100%, 40%);">-+ &BufferPtr</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT_EFI_ERROR (Status);</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableNew = (SMBIOS_TABLE_ENTRY_POINT *)(UINTN)BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ CopyMem (</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableNew, </span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableOri,</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosEntryLen</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ // </span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get Smbios Structure table address, and make sure the start address is 32-bit align</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferPtr += SmbiosEntryLen + SYS_TABLE_PAD(SmbiosEntryLen);</span><br><span style="color: hsl(0, 100%, 40%);">-+ CopyMem (</span><br><span style="color: hsl(0, 100%, 40%);">-+ (VOID *)(UINTN)BufferPtr, </span><br><span style="color: hsl(0, 100%, 40%);">-+ (VOID *)(UINTN)(SmbiosTableOri->TableAddress),</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableOri->TableLength</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableNew->TableAddress = (UINT32)BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableNew->IntermediateChecksum = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ SmbiosTableNew->IntermediateChecksum = </span><br><span style="color: hsl(0, 100%, 40%);">-+ CalculateCheckSum8 ((UINT8*)SmbiosTableNew + 0x10, SmbiosEntryLen -0x10);</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Change the SMBIOS pointer</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ *Table = SmbiosTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS; </span><br><span style="color: hsl(0, 100%, 40%);">-+} </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertMpsTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Routine Description:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Convert MP Table if the Location of the SMBios Table is lower than Addres 0x100000</span><br><span style="color: hsl(0, 100%, 40%);">-+ Assumption here:</span><br><span style="color: hsl(0, 100%, 40%);">-+ As in legacy Bios, MP table is required to place in E/F Seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ So here we just check if the range is E/F seg, </span><br><span style="color: hsl(0, 100%, 40%);">-+ and if Not, assume the Memory type is EfiACPIMemoryNVS/EfiRuntimeServicesData</span><br><span style="color: hsl(0, 100%, 40%);">-+Arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-+ Table - pointer to the table</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Returns:</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SUCEESS - Convert Table successfully</span><br><span style="color: hsl(0, 100%, 40%);">-+ Other - Failed</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 Data32;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINT32 FPLength;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_LEGACY_MP_TABLE_FLOATING_POINTER *MpsFloatingPointerOri;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_LEGACY_MP_TABLE_FLOATING_POINTER *MpsFloatingPointerNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_LEGACY_MP_TABLE_HEADER *MpsTableOri;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_LEGACY_MP_TABLE_HEADER *MpsTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID *OemTableOri;</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID *OemTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_PHYSICAL_ADDRESS BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get MP configuration Table </span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsFloatingPointerOri = (EFI_LEGACY_MP_TABLE_FLOATING_POINTER *)(UINTN)(*(UINT64*)(*Table));</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (!(((UINTN)MpsFloatingPointerOri <= 0x100000) && </span><br><span style="color: hsl(0, 100%, 40%);">-+ ((UINTN)MpsFloatingPointerOri >= 0xF0000))){</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get Floating pointer structure length</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ FPLength = MpsFloatingPointerOri->Length * 16;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Data32 = FPLength + SYS_TABLE_PAD (FPLength);</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsTableOri = (EFI_LEGACY_MP_TABLE_HEADER *)(UINTN)(MpsFloatingPointerOri->PhysicalAddress);</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (MpsTableOri != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Data32 += MpsTableOri->BaseTableLength;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Data32 += MpsTableOri->ExtendedTableLength;</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (MpsTableOri->OemTablePointer != 0x00) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ Data32 += SYS_TABLE_PAD (Data32);</span><br><span style="color: hsl(0, 100%, 40%);">-+ Data32 += MpsTableOri->OemTableSize;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ } else {</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Relocate memory</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferPtr = EFI_SYSTEM_TABLE_MAX_ADDRESS;</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->AllocatePages (</span><br><span style="color: hsl(0, 100%, 40%);">-+ AllocateMaxAddress,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EfiACPIMemoryNVS,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_SIZE_TO_PAGES(Data32),</span><br><span style="color: hsl(0, 100%, 40%);">-+ &BufferPtr</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT_EFI_ERROR (Status); </span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsFloatingPointerNew = (EFI_LEGACY_MP_TABLE_FLOATING_POINTER *)(UINTN)BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ CopyMem (MpsFloatingPointerNew, MpsFloatingPointerOri, FPLength);</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // If Mp Table exists</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (MpsTableOri != NULL) {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Get Mps table length, including Ext table</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferPtr = BufferPtr + FPLength + SYS_TABLE_PAD (FPLength);</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsTableNew = (EFI_LEGACY_MP_TABLE_HEADER *)(UINTN)BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ CopyMem (MpsTableNew, MpsTableOri, MpsTableOri->BaseTableLength + MpsTableOri->ExtendedTableLength);</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ if ((MpsTableOri->OemTableSize != 0x0000) && (MpsTableOri->OemTablePointer != 0x0000)){</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferPtr += MpsTableOri->BaseTableLength + MpsTableOri->ExtendedTableLength;</span><br><span style="color: hsl(0, 100%, 40%);">-+ BufferPtr += SYS_TABLE_PAD (BufferPtr);</span><br><span style="color: hsl(0, 100%, 40%);">-+ OemTableNew = (VOID *)(UINTN)BufferPtr;</span><br><span style="color: hsl(0, 100%, 40%);">-+ OemTableOri = (VOID *)(UINTN)MpsTableOri->OemTablePointer;</span><br><span style="color: hsl(0, 100%, 40%);">-+ CopyMem (OemTableNew, OemTableOri, MpsTableOri->OemTableSize);</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsTableNew->OemTablePointer = (UINT32)(UINTN)OemTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsTableNew->Checksum = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsTableNew->Checksum = CalculateCheckSum8 ((UINT8*)MpsTableNew, MpsTableOri->BaseTableLength);</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsFloatingPointerNew->PhysicalAddress = (UINT32)(UINTN)MpsTableNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsFloatingPointerNew->Checksum = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-+ MpsFloatingPointerNew->Checksum = CalculateCheckSum8 ((UINT8*)MpsFloatingPointerNew, FPLength);</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Change the pointer</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ *Table = MpsFloatingPointerNew;</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_SUCCESS; </span><br><span style="color: hsl(0, 100%, 40%);">-+} </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+/**</span><br><span style="color: hsl(0, 100%, 40%);">-+ Lock the ConsoleIn device in system table. All key</span><br><span style="color: hsl(0, 100%, 40%);">-+ presses will be ignored until the Password is typed in. The only way to</span><br><span style="color: hsl(0, 100%, 40%);">-+ disable the password is to type it in to a ConIn device.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ @param Password Password used to lock ConIn device.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ @retval EFI_SUCCESS lock the Console In Spliter virtual handle successfully.</span><br><span style="color: hsl(0, 100%, 40%);">-+ @retval EFI_UNSUPPORTED Password not found</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+**/</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">-+LockKeyboards (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN CHAR16 *Password</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ return EFI_UNSUPPORTED;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+/**</span><br><span style="color: hsl(0, 100%, 40%);">-+ This function locks platform flash that is not allowed to be updated during normal boot path.</span><br><span style="color: hsl(0, 100%, 40%);">-+ The flash layout is platform specific.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ **/</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsLockNonUpdatableFlash (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ return;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.h b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.h</span><br><span style="color: hsl(0, 100%, 40%);">-new file mode 100644</span><br><span style="color: hsl(0, 100%, 40%);">-index 0000000000..d447f77747</span><br><span>---- /dev/null</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.h</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -0,0 +1,288 @@</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR></span><br><span style="color: hsl(0, 100%, 40%);">-+This program and the accompanying materials </span><br><span style="color: hsl(0, 100%, 40%);">-+are licensed and made available under the terms and conditions of the BSD License </span><br><span style="color: hsl(0, 100%, 40%);">-+which accompanies this distribution. The full text of the license may be found at </span><br><span style="color: hsl(0, 100%, 40%);">-+http://opensource.org/licenses/bsd-license.php </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, </span><br><span style="color: hsl(0, 100%, 40%);">-+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Module Name: </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsPlatform.h</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Abstract:</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ Head file for BDS Platform specific code</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#ifndef _PLATFORM_SPECIFIC_BDS_PLATFORM_H_</span><br><span style="color: hsl(0, 100%, 40%);">-+#define _PLATFORM_SPECIFIC_BDS_PLATFORM_H_</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#include <PiDxe.h></span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#include <IndustryStandard/Pci.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <IndustryStandard/Acpi.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <IndustryStandard/SmBios.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <IndustryStandard/LegacyBiosMpTable.h></span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/DebugLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/BaseMemoryLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/UefiBootServicesTableLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/MemoryAllocationLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/BaseLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/PcdLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/GenericBdsLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/PlatformBdsLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/HobLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/UefiLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/DxeServicesTableLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Library/DevicePathLib.h></span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Protocol/PciIo.h></span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Guid/Acpi.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Guid/SmBios.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Guid/Mps.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Guid/HobList.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Guid/PciExpressBaseAddress.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Guid/GlobalVariable.h></span><br><span style="color: hsl(0, 100%, 40%);">-+#include <Guid/LdrMemoryDescriptor.h></span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[];</span><br><span style="color: hsl(0, 100%, 40%);">-+extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[];</span><br><span style="color: hsl(0, 100%, 40%);">-+extern EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[];</span><br><span style="color: hsl(0, 100%, 40%);">-+extern EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges[];</span><br><span style="color: hsl(0, 100%, 40%);">-+extern ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode;</span><br><span style="color: hsl(0, 100%, 40%);">-+extern ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode;</span><br><span style="color: hsl(0, 100%, 40%);">-+extern UART_DEVICE_PATH gUartDeviceNode;</span><br><span style="color: hsl(0, 100%, 40%);">-+extern VENDOR_DEVICE_PATH gTerminalTypeDeviceNode;</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+#define VarConsoleInpDev L"ConInDev"</span><br><span style="color: hsl(0, 100%, 40%);">-+#define VarConsoleInp L"ConIn"</span><br><span style="color: hsl(0, 100%, 40%);">-+#define VarConsoleOutDev L"ConOutDev"</span><br><span style="color: hsl(0, 100%, 40%);">-+#define VarConsoleOut L"ConOut"</span><br><span style="color: hsl(0, 100%, 40%);">-+#define VarErrorOutDev L"ErrOutDev"</span><br><span style="color: hsl(0, 100%, 40%);">-+#define VarErrorOut L"ErrOut"</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define PCI_DEVICE_PATH_NODE(Func, Dev) \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ HARDWARE_DEVICE_PATH, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ HW_PCI_DP, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) (sizeof (PCI_DEVICE_PATH)), \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \</span><br><span style="color: hsl(0, 100%, 40%);">-+ } \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (Func), \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (Dev) \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define PNPID_DEVICE_PATH_NODE(PnpId) \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_DEVICE_PATH, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_DP, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \</span><br><span style="color: hsl(0, 100%, 40%);">-+ } \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ EISA_PNP_ID((PnpId)), \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0 \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gPciRootBridge \</span><br><span style="color: hsl(0, 100%, 40%);">-+ PNPID_DEVICE_PATH_NODE(0x0A03)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gPciIsaBridge \</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH_NODE(0, 0x1f)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gP2PBridge \</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH_NODE(0, 0x1e)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gPnpPs2Keyboard \</span><br><span style="color: hsl(0, 100%, 40%);">-+ PNPID_DEVICE_PATH_NODE(0x0303)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gPnp16550ComPort \</span><br><span style="color: hsl(0, 100%, 40%);">-+ PNPID_DEVICE_PATH_NODE(0x0501)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gUart \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ MESSAGING_DEVICE_PATH, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ MSG_UART_DP, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) (sizeof (UART_DEVICE_PATH)), \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \</span><br><span style="color: hsl(0, 100%, 40%);">-+ } \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 115200, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 8, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 1, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 1 \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gPcAnsiTerminal \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ MESSAGING_DEVICE_PATH, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ MSG_VENDOR_DP, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \</span><br><span style="color: hsl(0, 100%, 40%);">-+ } \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEVICE_PATH_MESSAGING_PC_ANSI \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define gEndEntire \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ END_DEVICE_PATH_TYPE, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ END_ENTIRE_DEVICE_PATH_SUBTYPE, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ { \</span><br><span style="color: hsl(0, 100%, 40%);">-+ END_DEVICE_PATH_LENGTH, \</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0 \</span><br><span style="color: hsl(0, 100%, 40%);">-+ } \</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define PCI_CLASS_SCC 0x07</span><br><span style="color: hsl(0, 100%, 40%);">-+#define PCI_SUBCLASS_SERIAL 0x00</span><br><span style="color: hsl(0, 100%, 40%);">-+#define PCI_IF_16550 0x02</span><br><span style="color: hsl(0, 100%, 40%);">-+#define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#define EFI_SYSTEM_TABLE_MAX_ADDRESS 0xFFFFFFFF</span><br><span style="color: hsl(0, 100%, 40%);">-+#define SYS_TABLE_PAD(ptr) (((~ptr) +1) & 0x07 )</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Platform Root Bridge</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_HID_DEVICE_PATH PciRootBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL End;</span><br><span style="color: hsl(0, 100%, 40%);">-+} PLATFORM_ROOT_BRIDGE_DEVICE_PATH;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_HID_DEVICE_PATH PciRootBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH IsaBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_HID_DEVICE_PATH Keyboard;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL End;</span><br><span style="color: hsl(0, 100%, 40%);">-+} PLATFORM_DUMMY_ISA_KEYBOARD_DEVICE_PATH;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_HID_DEVICE_PATH PciRootBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH IsaBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_HID_DEVICE_PATH IsaSerial;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UART_DEVICE_PATH Uart;</span><br><span style="color: hsl(0, 100%, 40%);">-+ VENDOR_DEVICE_PATH TerminalType;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL End;</span><br><span style="color: hsl(0, 100%, 40%);">-+} PLATFORM_DUMMY_ISA_SERIAL_DEVICE_PATH;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_HID_DEVICE_PATH PciRootBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH VgaDevice;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL End;</span><br><span style="color: hsl(0, 100%, 40%);">-+} PLATFORM_DUMMY_PCI_VGA_DEVICE_PATH;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ ACPI_HID_DEVICE_PATH PciRootBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH PciBridge;</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH SerialDevice;</span><br><span style="color: hsl(0, 100%, 40%);">-+ UART_DEVICE_PATH Uart;</span><br><span style="color: hsl(0, 100%, 40%);">-+ VENDOR_DEVICE_PATH TerminalType;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL End;</span><br><span style="color: hsl(0, 100%, 40%);">-+} PLATFORM_DUMMY_PCI_SERIAL_DEVICE_PATH;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// the short form device path for Usb keyboard</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+#define CLASS_HID 3</span><br><span style="color: hsl(0, 100%, 40%);">-+#define SUBCLASS_BOOT 1</span><br><span style="color: hsl(0, 100%, 40%);">-+#define PROTOCOL_KEYBOARD 1</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+typedef struct {</span><br><span style="color: hsl(0, 100%, 40%);">-+ USB_CLASS_DEVICE_PATH UsbClass;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_DEVICE_PATH_PROTOCOL End;</span><br><span style="color: hsl(0, 100%, 40%);">-+} USB_CLASS_FORMAT_DEVICE_PATH; </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+extern PLATFORM_ROOT_BRIDGE_DEVICE_PATH gPlatformRootBridge0;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Platform BDS Functions</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsGetDriverOption (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN LIST_ENTRY *BdsDriverLists</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+BdsMemoryTest (</span><br><span style="color: hsl(0, 100%, 40%);">-+ EXTENDMEM_COVERAGE_LEVEL Level</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsShowProgress (</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,</span><br><span style="color: hsl(0, 100%, 40%);">-+ CHAR16 *Title,</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN Progress,</span><br><span style="color: hsl(0, 100%, 40%);">-+ UINTN PreviousValue</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsConnectSequence (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ProcessCapsules (</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_BOOT_MODE BootMode</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsConnectConsole (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsNoConsoleAction (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertMpsTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertSmbiosTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertAcpiTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINTN TableLen,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_STATUS</span><br><span style="color: hsl(0, 100%, 40%);">-+ConvertSystemTable (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_GUID *TableGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN OUT VOID **Table</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+PlatformBdsEnterFrontPage (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN UINT16 TimeoutDefault,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN BOOLEAN ConnectAllHappened</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf b/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf</span><br><span style="color: hsl(0, 100%, 40%);">-new file mode 100644</span><br><span style="color: hsl(0, 100%, 40%);">-index 0000000000..578c74afae</span><br><span>---- /dev/null</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -0,0 +1,65 @@</span><br><span style="color: hsl(0, 100%, 40%);">-+## @file</span><br><span style="color: hsl(0, 100%, 40%);">-+#</span><br><span style="color: hsl(0, 100%, 40%);">-+# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR></span><br><span style="color: hsl(0, 100%, 40%);">-+# This program and the accompanying materials </span><br><span style="color: hsl(0, 100%, 40%);">-+# are licensed and made available under the terms and conditions of the BSD License </span><br><span style="color: hsl(0, 100%, 40%);">-+# which accompanies this distribution. The full text of the license may be found at </span><br><span style="color: hsl(0, 100%, 40%);">-+# http://opensource.org/licenses/bsd-license.php </span><br><span style="color: hsl(0, 100%, 40%);">-+# </span><br><span style="color: hsl(0, 100%, 40%);">-+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, </span><br><span style="color: hsl(0, 100%, 40%);">-+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. </span><br><span style="color: hsl(0, 100%, 40%);">-+# </span><br><span style="color: hsl(0, 100%, 40%);">-+# Module Name:</span><br><span style="color: hsl(0, 100%, 40%);">-+#</span><br><span style="color: hsl(0, 100%, 40%);">-+# PlatformBds.inf</span><br><span style="color: hsl(0, 100%, 40%);">-+#</span><br><span style="color: hsl(0, 100%, 40%);">-+# Abstract:</span><br><span style="color: hsl(0, 100%, 40%);">-+#</span><br><span style="color: hsl(0, 100%, 40%);">-+# Component description file for Bds module.</span><br><span style="color: hsl(0, 100%, 40%);">-+#</span><br><span style="color: hsl(0, 100%, 40%);">-+##</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+[Defines]</span><br><span style="color: hsl(0, 100%, 40%);">-+ INF_VERSION = 0x00010005</span><br><span style="color: hsl(0, 100%, 40%);">-+ BASE_NAME = CorebootBds</span><br><span style="color: hsl(0, 100%, 40%);">-+ FILE_GUID = A6F691AC-31C8-4444-854C-E2C1A6950F92</span><br><span style="color: hsl(0, 100%, 40%);">-+ MODULE_TYPE = DXE_DRIVER</span><br><span style="color: hsl(0, 100%, 40%);">-+ VERSION_STRING = 1.0</span><br><span style="color: hsl(0, 100%, 40%);">-+ LIBRARY_CLASS = PlatformBdsLib|DXE_DRIVER</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+[Sources]</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformData.c</span><br><span style="color: hsl(0, 100%, 40%);">-+ BdsPlatform.h</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+[Packages]</span><br><span style="color: hsl(0, 100%, 40%);">-+ MdePkg/MdePkg.dec</span><br><span style="color: hsl(0, 100%, 40%);">-+ MdeModulePkg/MdeModulePkg.dec</span><br><span style="color: hsl(0, 100%, 40%);">-+ CorebootModulePkg/CorebootModulePkg.dec</span><br><span style="color: hsl(0, 100%, 40%);">-+ IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+[LibraryClasses]</span><br><span style="color: hsl(0, 100%, 40%);">-+ BaseLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ MemoryAllocationLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ UefiBootServicesTableLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ BaseMemoryLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ DebugLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ PcdLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ GenericBdsLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ HobLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ UefiLib</span><br><span style="color: hsl(0, 100%, 40%);">-+ DevicePathLib</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+[Guids]</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiGlobalVariableGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiPciExpressBaseAddressGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiAcpi20TableGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiMpsTableGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiSmbiosTableGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiAcpiTableGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ gLdrMemoryDescriptorGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+[Pcd]</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Library/CorebootBdsLib/PlatformData.c b/CorebootModulePkg/Library/CorebootBdsLib/PlatformData.c</span><br><span style="color: hsl(0, 100%, 40%);">-new file mode 100644</span><br><span style="color: hsl(0, 100%, 40%);">-index 0000000000..fbdcc7de81</span><br><span>---- /dev/null</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Library/CorebootBdsLib/PlatformData.c</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -0,0 +1,161 @@</span><br><span style="color: hsl(0, 100%, 40%);">-+/*++</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR></span><br><span style="color: hsl(0, 100%, 40%);">-+This program and the accompanying materials </span><br><span style="color: hsl(0, 100%, 40%);">-+are licensed and made available under the terms and conditions of the BSD License </span><br><span style="color: hsl(0, 100%, 40%);">-+which accompanies this distribution. The full text of the license may be found at </span><br><span style="color: hsl(0, 100%, 40%);">-+http://opensource.org/licenses/bsd-license.php </span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, </span><br><span style="color: hsl(0, 100%, 40%);">-+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Module Name: </span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformData.c</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+Abstract:</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ Defined the platform specific device path which will be used by</span><br><span style="color: hsl(0, 100%, 40%);">-+ platform Bbd to perform the platform policy connect.</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+--*/</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+#include "BdsPlatform.h"</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Predefined platform default time out value</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+UINT16 gPlatformBootTimeOutDefault = 3;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode = gPnpPs2Keyboard;</span><br><span style="color: hsl(0, 100%, 40%);">-+ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode = gPnp16550ComPort;</span><br><span style="color: hsl(0, 100%, 40%);">-+UART_DEVICE_PATH gUartDeviceNode = gUart;</span><br><span style="color: hsl(0, 100%, 40%);">-+VENDOR_DEVICE_PATH gTerminalTypeDeviceNode = gPcAnsiTerminal;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Predefined platform root bridge</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+PLATFORM_ROOT_BRIDGE_DEVICE_PATH gPlatformRootBridge0 = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPciRootBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEndEntire</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ (EFI_DEVICE_PATH_PROTOCOL *) &gPlatformRootBridge0,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+USB_CLASS_FORMAT_DEVICE_PATH gUsbClassKeyboardDevicePath = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ {</span><br><span style="color: hsl(0, 100%, 40%);">-+ {</span><br><span style="color: hsl(0, 100%, 40%);">-+ MESSAGING_DEVICE_PATH,</span><br><span style="color: hsl(0, 100%, 40%);">-+ MSG_USB_CLASS_DP,</span><br><span style="color: hsl(0, 100%, 40%);">-+ {</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) (sizeof (USB_CLASS_DEVICE_PATH)),</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT8) ((sizeof (USB_CLASS_DEVICE_PATH)) >> 8)</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ },</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0xffff, // VendorId </span><br><span style="color: hsl(0, 100%, 40%);">-+ 0xffff, // ProductId </span><br><span style="color: hsl(0, 100%, 40%);">-+ CLASS_HID, // DeviceClass </span><br><span style="color: hsl(0, 100%, 40%);">-+ SUBCLASS_BOOT, // DeviceSubClass</span><br><span style="color: hsl(0, 100%, 40%);">-+ PROTOCOL_KEYBOARD // DeviceProtocol</span><br><span style="color: hsl(0, 100%, 40%);">-+ },</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ { </span><br><span style="color: hsl(0, 100%, 40%);">-+ END_DEVICE_PATH_TYPE, </span><br><span style="color: hsl(0, 100%, 40%);">-+ END_ENTIRE_DEVICE_PATH_SUBTYPE, </span><br><span style="color: hsl(0, 100%, 40%);">-+ {</span><br><span style="color: hsl(0, 100%, 40%);">-+ END_DEVICE_PATH_LENGTH, </span><br><span style="color: hsl(0, 100%, 40%);">-+ 0</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+/*</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Platform specific Dummy ISA keyboard device path</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+PLATFORM_DUMMY_ISA_KEYBOARD_DEVICE_PATH gDummyIsaKeyboardDevicePath = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPciRootBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPciIsaBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPnpPs2Keyboard,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEndEntire</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Platform specific Dummy ISA serial device path</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+PLATFORM_DUMMY_ISA_SERIAL_DEVICE_PATH gDummyIsaSerialDevicePath = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPciRootBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPciIsaBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPnp16550ComPort,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gUart,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPcAnsiTerminal,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEndEntire</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Platform specific Dummy PCI VGA device path</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+PLATFORM_DUMMY_PCI_VGA_DEVICE_PATH gDummyPciVgaDevicePath = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPciRootBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH_NODE(0, 0x2),</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEndEntire</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Platform specific Dummy PCI serial device path</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+PLATFORM_DUMMY_PCI_SERIAL_DEVICE_PATH gDummyPciSerialDevicePath = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPciRootBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gP2PBridge,</span><br><span style="color: hsl(0, 100%, 40%);">-+ PCI_DEVICE_PATH_NODE(0, 0x0),</span><br><span style="color: hsl(0, 100%, 40%);">-+ gUart,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gPcAnsiTerminal,</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEndEntire</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+*/</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Predefined platform default console device path</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // need update dynamically</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+// {</span><br><span style="color: hsl(0, 100%, 40%);">-+// (EFI_DEVICE_PATH_PROTOCOL *) &gDummyIsaSerialDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+// (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)</span><br><span style="color: hsl(0, 100%, 40%);">-+// },</span><br><span style="color: hsl(0, 100%, 40%);">-+// {</span><br><span style="color: hsl(0, 100%, 40%);">-+// (EFI_DEVICE_PATH_PROTOCOL *) &gDummyIsaKeyboardDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+// (CONSOLE_IN | STD_ERROR)</span><br><span style="color: hsl(0, 100%, 40%);">-+// },</span><br><span style="color: hsl(0, 100%, 40%);">-+// {</span><br><span style="color: hsl(0, 100%, 40%);">-+// (EFI_DEVICE_PATH_PROTOCOL *) &gDummyPciVgaDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+// CONSOLE_OUT</span><br><span style="color: hsl(0, 100%, 40%);">-+// },</span><br><span style="color: hsl(0, 100%, 40%);">-+// {</span><br><span style="color: hsl(0, 100%, 40%);">-+// (EFI_DEVICE_PATH_PROTOCOL *) &gDummyPciSerialDevicePath,</span><br><span style="color: hsl(0, 100%, 40%);">-+// (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)</span><br><span style="color: hsl(0, 100%, 40%);">-+// },</span><br><span style="color: hsl(0, 100%, 40%);">-+ {</span><br><span style="color: hsl(0, 100%, 40%);">-+ (EFI_DEVICE_PATH_PROTOCOL*) &gUsbClassKeyboardDevicePath, </span><br><span style="color: hsl(0, 100%, 40%);">-+ CONSOLE_IN</span><br><span style="color: hsl(0, 100%, 40%);">-+ },</span><br><span style="color: hsl(0, 100%, 40%);">-+ {</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ 0</span><br><span style="color: hsl(0, 100%, 40%);">-+ }</span><br><span style="color: hsl(0, 100%, 40%);">-+};</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Predefined platform specific driver option</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[] = { NULL };</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+// Predefined platform connect sequence</span><br><span style="color: hsl(0, 100%, 40%);">-+//</span><br><span style="color: hsl(0, 100%, 40%);">-+EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[] = { NULL };</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkg.fdf b/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-index a39e3999ba..623ff9c344 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -95,8 +95,9 @@ INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntime</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- INF UefiCpuPkg/CpuDxe/CpuDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">--INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">--INF MdeModulePkg/Application/UiApp/UiApp.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+
</span><br><span style="color: hsl(0, 100%, 40%);">-+INF IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+
</span><br><span style="color: hsl(0, 100%, 40%);">- !if $(USE_HPET_TIMER) == TRUE
</span><br><span style="color: hsl(0, 100%, 40%);">- INF PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- !else
</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index e838aca61d..a329b78f08 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -165,6 +165,7 @@</span><br><span style="color: hsl(0, 100%, 40%);">- UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -183,7 +184,7 @@</span><br><span style="color: hsl(0, 100%, 40%);">- ResetSystemLib|CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- SerialPortLib|CorebootModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- PlatformHookLib|CorebootPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- PlatformBootManagerLib|CorebootPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsLib|CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- IoApicLib|PcAtChipsetPkg/Library/BaseIoApicLib/BaseIoApicLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- CbPlatformSupportLib|CorebootModulePkg/Library/CbPlatformSupportLibNull/CbPlatformSupportLibNull.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-@@ -396,13 +397,12 @@</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- UefiCpuPkg/CpuDxe/CpuDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Application/UiApp/UiApp.inf {
</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf {
</span><br><span style="color: hsl(0, 100%, 40%);">- <LibraryClasses>
</span><br><span style="color: hsl(0, 100%, 40%);">-- NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- }
</span><br><span style="color: hsl(0, 100%, 40%);">-+
</span><br><span style="color: hsl(0, 100%, 40%);">- !if $(USE_HPET_TIMER) == TRUE
</span><br><span style="color: hsl(0, 100%, 40%);">- PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- !else
</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index c25d821fd4..790efd7810 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -165,6 +165,7 @@</span><br><span style="color: hsl(0, 100%, 40%);">- UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- UefiScsiLib|MdePkg/Library/UefiScsiLib/UefiScsiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ GenericBdsLib|IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- UefiBootManagerLib|MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -183,7 +184,7 @@</span><br><span style="color: hsl(0, 100%, 40%);">- ResetSystemLib|CorebootPayloadPkg/Library/ResetSystemLib/ResetSystemLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- SerialPortLib|CorebootModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- PlatformHookLib|CorebootPayloadPkg/Library/PlatformHookLib/PlatformHookLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- PlatformBootManagerLib|CorebootPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ PlatformBdsLib|CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- IoApicLib|PcAtChipsetPkg/Library/BaseIoApicLib/BaseIoApicLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- CbPlatformSupportLib|CorebootModulePkg/Library/CbPlatformSupportLibNull/CbPlatformSupportLibNull.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-@@ -397,13 +398,12 @@</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- UefiCpuPkg/CpuDxe/CpuDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- MdeModulePkg/Application/UiApp/UiApp.inf {
</span><br><span style="color: hsl(0, 100%, 40%);">-+ </span><br><span style="color: hsl(0, 100%, 40%);">-+ IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf {
</span><br><span style="color: hsl(0, 100%, 40%);">- <LibraryClasses>
</span><br><span style="color: hsl(0, 100%, 40%);">-- NULL|MdeModulePkg/Library/DeviceManagerUiLib/DeviceManagerUiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- NULL|MdeModulePkg/Library/BootManagerUiLib/BootManagerUiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-- NULL|MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- }
</span><br><span style="color: hsl(0, 100%, 40%);">-+
</span><br><span style="color: hsl(0, 100%, 40%);">- !if $(USE_HPET_TIMER) == TRUE
</span><br><span style="color: hsl(0, 100%, 40%);">- PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- !else
</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.13.2.932.g7449e964c-goog</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/payloads/external/tianocore/patches/03_Library_EndofDXE.patch b/payloads/external/tianocore/patches/03_Library_EndofDXE.patch</span><br><span>deleted file mode 100644</span><br><span>index 02ba42b..0000000</span><br><span>--- a/payloads/external/tianocore/patches/03_Library_EndofDXE.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,86 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From 760f1cafdd689beedc8418ab89e856b54296389c Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: CoolStar <coolstarorganization@gmail.com></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Sun, 4 Dec 2016 12:07:30 -0800</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] CorebootBdsLib: Call End of DXE event to allow booting 3rd</span><br><span style="color: hsl(0, 100%, 40%);">- party efi binaries.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>----</span><br><span style="color: hsl(0, 100%, 40%);">- .../Library/CorebootBdsLib/BdsPlatform.c | 42 ++++++++++++++++++++++</span><br><span style="color: hsl(0, 100%, 40%);">- .../Library/CorebootBdsLib/PlatformBds.inf | 1 +</span><br><span style="color: hsl(0, 100%, 40%);">- 2 files changed, 43 insertions(+)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">-index b6253a17f8..cf3e5320cb 100644</span><br><span>---- a/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -1129,6 +1129,46 @@ Returns:</span><br><span style="color: hsl(0, 100%, 40%);">- Status = BaseMemoryTest (MemoryTestLevel);</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">-+InternalBdsEmptyCallbackFuntion (</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN EFI_EVENT Event,</span><br><span style="color: hsl(0, 100%, 40%);">-+ IN VOID *Context</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ return;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+InstallReadyToLock (</span><br><span style="color: hsl(0, 100%, 40%);">-+ VOID</span><br><span style="color: hsl(0, 100%, 40%);">-+ )</span><br><span style="color: hsl(0, 100%, 40%);">-+{</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_STATUS Status;</span><br><span style="color: hsl(0, 100%, 40%);">-+ EFI_EVENT EndOfDxeEvent;</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG((DEBUG_INFO,"InstallReadyToLock entering......\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Inform the SMM infrastructure that we're entering BDS and may run 3rd party code hereafter</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Since PI1.2.1, we need signal EndOfDxe as ExitPmAuth</span><br><span style="color: hsl(0, 100%, 40%);">-+ //</span><br><span style="color: hsl(0, 100%, 40%);">-+ Status = gBS->CreateEventEx (</span><br><span style="color: hsl(0, 100%, 40%);">-+ EVT_NOTIFY_SIGNAL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ TPL_CALLBACK,</span><br><span style="color: hsl(0, 100%, 40%);">-+ InternalBdsEmptyCallbackFuntion,</span><br><span style="color: hsl(0, 100%, 40%);">-+ NULL,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &gEfiEndOfDxeEventGroupGuid,</span><br><span style="color: hsl(0, 100%, 40%);">-+ &EndOfDxeEvent</span><br><span style="color: hsl(0, 100%, 40%);">-+ );</span><br><span style="color: hsl(0, 100%, 40%);">-+ ASSERT_EFI_ERROR (Status);</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->SignalEvent (EndOfDxeEvent);</span><br><span style="color: hsl(0, 100%, 40%);">-+ gBS->CloseEvent (EndOfDxeEvent);</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG((DEBUG_INFO,"All EndOfDxe callbacks have returned successfully\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">-+ DEBUG((DEBUG_INFO,"InstallReadyToLock end\n"));</span><br><span style="color: hsl(0, 100%, 40%);">-+ return;</span><br><span style="color: hsl(0, 100%, 40%);">-+}</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">- VOID</span><br><span style="color: hsl(0, 100%, 40%);">- EFIAPI</span><br><span style="color: hsl(0, 100%, 40%);">- PlatformBdsPolicyBehavior (</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -1164,6 +1204,8 @@ Returns:</span><br><span style="color: hsl(0, 100%, 40%);">- EFI_INPUT_KEY Key;</span><br><span style="color: hsl(0, 100%, 40%);">- EFI_BOOT_MODE BootMode;</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-+ InstallReadyToLock();</span><br><span style="color: hsl(0, 100%, 40%);">-+</span><br><span style="color: hsl(0, 100%, 40%);">- //</span><br><span style="color: hsl(0, 100%, 40%);">- // Init the time out value</span><br><span style="color: hsl(0, 100%, 40%);">- //</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf b/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf</span><br><span style="color: hsl(0, 100%, 40%);">-index 578c74afae..992bd846bd 100644</span><br><span>---- a/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -58,6 +58,7 @@</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiSmbiosTableGuid</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiAcpiTableGuid</span><br><span style="color: hsl(0, 100%, 40%);">- gLdrMemoryDescriptorGuid</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiEndOfDxeEventGroupGuid</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- [Pcd]</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.13.2.725.g09c95d1e9-goog</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/payloads/external/tianocore/patches/04_CorebootPayloadPkg_addps2.patch b/payloads/external/tianocore/patches/04_CorebootPayloadPkg_addps2.patch</span><br><span>deleted file mode 100644</span><br><span>index e90b70e..0000000</span><br><span>--- a/payloads/external/tianocore/patches/04_CorebootPayloadPkg_addps2.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,56 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From 77c5dfcce842819215490fe63c481860fa7d752d Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: CoolStar <coolstarorganization@gmail.com></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Sun, 4 Dec 2016 11:50:00 -0800</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] CorebootPayloadPkg: Add PS/2 keyboard drivers.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>----</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkg.fdf | 3 +++</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc | 3 +++</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc | 3 +++</span><br><span style="color: hsl(0, 100%, 40%);">- 3 files changed, 9 insertions(+)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkg.fdf b/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-index 347e9c75ce..a347af0c9a 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkg.fdf</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -132,6 +132,9 @@ INF DuetPkg/PciBusNoEnumerationDxe/PciBusNoEnumeration.inf</span><br><span style="color: hsl(0, 100%, 40%);">- # ISA Support
</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+INF PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+INF IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+INF IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # Console Support
</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index 5ce823bb95..60ee064c59 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -492,6 +492,9 @@</span><br><span style="color: hsl(0, 100%, 40%);">- # ISA Support
</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # Console Support
</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index fea297a77a..167329c897 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -493,6 +493,9 @@</span><br><span style="color: hsl(0, 100%, 40%);">- # ISA Support
</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ PcAtChipsetPkg/IsaAcpiDxe/IsaAcpi.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">-+ IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2keyboardDxe.inf
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- # Console Support
</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.13.2.725.g09c95d1e9-goog</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/payloads/external/tianocore/patches/05_CorebootPayloadPkg_noserial.patch b/payloads/external/tianocore/patches/05_CorebootPayloadPkg_noserial.patch</span><br><span>deleted file mode 100644</span><br><span>index 0e84b7d..0000000</span><br><span>--- a/payloads/external/tianocore/patches/05_CorebootPayloadPkg_noserial.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,39 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From 77f75370d6fbfefb04456f6e1c32c85d4bac8bf5 Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: Matt Devo <matt.devillier@gmail.com></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Thu, 23 Feb 2017 14:11:14 -0600</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] CorebootPayloadPkg: don't use serial output</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>----</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc | 2 +-</span><br><span style="color: hsl(0, 100%, 40%);">- CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc | 2 +-</span><br><span style="color: hsl(0, 100%, 40%);">- 2 files changed, 2 insertions(+), 2 deletions(-)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index 1d80fc4f5c..ce360c9e9e 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -261,7 +261,7 @@</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- ################################################################################
</span><br><span style="color: hsl(0, 100%, 40%);">- [PcdsFeatureFlag]
</span><br><span style="color: hsl(0, 100%, 40%);">-- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE
</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE
</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE
</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|FALSE
</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-index 52b26eb3d0..a27b0873a1 100644</span><br><span>---- a/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -261,7 +261,7 @@</span><br><span style="color: hsl(0, 100%, 40%);">- #
</span><br><span style="color: hsl(0, 100%, 40%);">- ################################################################################
</span><br><span style="color: hsl(0, 100%, 40%);">- [PcdsFeatureFlag]
</span><br><span style="color: hsl(0, 100%, 40%);">-- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE
</span><br><span style="color: hsl(0, 100%, 40%);">-+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|FALSE
</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE
</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode|TRUE
</span><br><span style="color: hsl(0, 100%, 40%);">- gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.13.2.725.g09c95d1e9-goog</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/payloads/external/tianocore/patches/06_CorebootPayloadPkg_keep_cb_table.patch b/payloads/external/tianocore/patches/06_CorebootPayloadPkg_keep_cb_table.patch</span><br><span>deleted file mode 100644</span><br><span>index e75052b..0000000</span><br><span>--- a/payloads/external/tianocore/patches/06_CorebootPayloadPkg_keep_cb_table.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,26 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From ef89b11ce6f93c96fbd1753a8006dd9c3da212e0 Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: ReddestDream <reddestdream@gmail.com></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Wed, 3 May 2017 00:13:28 -0400</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] CbSupportPei: prevent lower coreboot table from being</span><br><span style="color: hsl(0, 100%, 40%);">- overwritten</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Exclude the bottom 4kb from being included in System Memory HoB</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootModulePkg/CbSupportPei/CbSupportPei.c b/CorebootModulePkg/CbSupportPei/CbSupportPei.c</span><br><span style="color: hsl(0, 100%, 40%);">-index 262e6b9..d3c5723 100755</span><br><span>---- a/CorebootModulePkg/CbSupportPei/CbSupportPei.c</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootModulePkg/CbSupportPei/CbSupportPei.c</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -261,8 +261,9 @@ CbPeiEntryPoint (</span><br><span style="color: hsl(0, 100%, 40%);">- EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |</span><br><span style="color: hsl(0, 100%, 40%);">- EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE</span><br><span style="color: hsl(0, 100%, 40%);">- ),</span><br><span style="color: hsl(0, 100%, 40%);">-- (EFI_PHYSICAL_ADDRESS)(0),</span><br><span style="color: hsl(0, 100%, 40%);">-- (UINT64)(0xA0000)</span><br><span style="color: hsl(0, 100%, 40%);">-+ // Lower 640KB, except for first 4KB where the lower coreboot pointer ("LBIO") resides</span><br><span style="color: hsl(0, 100%, 40%);">-+ (EFI_PHYSICAL_ADDRESS)(0 + 0x1000),</span><br><span style="color: hsl(0, 100%, 40%);">-+ (UINT64)(0xA0000 - 0x1000)</span><br><span style="color: hsl(0, 100%, 40%);">- );</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>---</span><br><span style="color: hsl(0, 100%, 40%);">-2.14.0</span><br><span>diff --git a/payloads/external/tianocore/patches/07_CorebootPayloadPkg-Use-correct-BytesPerScanLine.patch b/payloads/external/tianocore/patches/07_CorebootPayloadPkg-Use-correct-BytesPerScanLine.patch</span><br><span>deleted file mode 100644</span><br><span>index 6370efc..0000000</span><br><span>--- a/payloads/external/tianocore/patches/07_CorebootPayloadPkg-Use-correct-BytesPerScanLine.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,31 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From 07dec11fe965e73cfef7df38af70c945b6ff21a2 Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: Arthur Heymans <arthur@aheymans.xyz></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Wed, 24 Jan 2018 10:07:08 +0100</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] CorebootPayloadPkg: Use correct BytesPerScanLine</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Fetch BytesPerScanLine from coreboot table to reflect how the actual</span><br><span style="color: hsl(0, 100%, 40%);">-framebuffer is set up instead of guessing it from the horizontal</span><br><span style="color: hsl(0, 100%, 40%);">-resolution.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This fixes a garbled display when HorizontalResolution * (BitsPerPixel</span><br><span style="color: hsl(0, 100%, 40%);">-/ 8) and pFbInfo->BytesPerScanLine don't match.</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Contributed-under: TianoCore Contribution Agreement 1.1</span><br><span style="color: hsl(0, 100%, 40%);">-Signed-off-by: Arthur Heymans <arthur@aheymans.xyz></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/CorebootPayloadPkg/FbGop/FbGop.c b/CorebootPayloadPkg/FbGop/FbGop.c</span><br><span style="color: hsl(0, 100%, 40%);">-index 37d6def7f7..6790617033 100644</span><br><span>---- a/CorebootPayloadPkg/FbGop/FbGop.c</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/CorebootPayloadPkg/FbGop/FbGop.c</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -822,7 +822,7 @@ FbGopCheckForVbe (</span><br><span style="color: hsl(0, 100%, 40%);">- BitsPerPixel = pFbInfo->BitsPerPixel;
</span><br><span style="color: hsl(0, 100%, 40%);">- HorizontalResolution = pFbInfo->HorizontalResolution;
</span><br><span style="color: hsl(0, 100%, 40%);">- VerticalResolution = pFbInfo->VerticalResolution;
</span><br><span style="color: hsl(0, 100%, 40%);">-- BytesPerScanLine = HorizontalResolution * (BitsPerPixel / 8);
</span><br><span style="color: hsl(0, 100%, 40%);">-+ BytesPerScanLine = pFbInfo->BytesPerScanLine;
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- ModeBuffer = (FB_VIDEO_MODE_DATA *) AllocatePool (
</span><br><span style="color: hsl(0, 100%, 40%);">- ModeNumber * sizeof (FB_VIDEO_MODE_DATA)
</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.16.1</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/payloads/external/tianocore/patches/08_BaseTools-Fix-building-with-Werror-stringop-truncati.patch b/payloads/external/tianocore/patches/08_BaseTools-Fix-building-with-Werror-stringop-truncati.patch</span><br><span>deleted file mode 100644</span><br><span>index 06ddd56..0000000</span><br><span>--- a/payloads/external/tianocore/patches/08_BaseTools-Fix-building-with-Werror-stringop-truncati.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,38 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From b652262ed0dd554c44e7b1bf7134d3458f5edef1 Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: Patrick Rudolph <siro@das-labor.org></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Sun, 17 Jun 2018 08:44:51 +0200</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] BaseTools: Fix building with -Werror=stringop-truncation</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Signed-off-by: Patrick Rudolph <siro@das-labor.org></span><br><span>----</span><br><span style="color: hsl(0, 100%, 40%);">- BaseTools/Source/C/GenVtf/GenVtf.c | 6 +++---</span><br><span style="color: hsl(0, 100%, 40%);">- 1 file changed, 3 insertions(+), 3 deletions(-)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c</span><br><span style="color: hsl(0, 100%, 40%);">-index acc142a6d1..5d77016eba 100644</span><br><span>---- a/BaseTools/Source/C/GenVtf/GenVtf.c</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/BaseTools/Source/C/GenVtf/GenVtf.c</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -129,9 +129,9 @@ Returns:</span><br><span style="color: hsl(0, 100%, 40%);">- } else {
</span><br><span style="color: hsl(0, 100%, 40%);">- Length = strlen(Str);
</span><br><span style="color: hsl(0, 100%, 40%);">- if (Length < 4) {
</span><br><span style="color: hsl(0, 100%, 40%);">-- strncpy (TemStr + 4 - Length, Str, Length);
</span><br><span style="color: hsl(0, 100%, 40%);">-+ memcpy (TemStr + 4 - Length, Str, Length);
</span><br><span style="color: hsl(0, 100%, 40%);">- } else {
</span><br><span style="color: hsl(0, 100%, 40%);">-- strncpy (TemStr, Str + Length - 4, 4);
</span><br><span style="color: hsl(0, 100%, 40%);">-+ memcpy (TemStr, Str + Length - 4, 4);
</span><br><span style="color: hsl(0, 100%, 40%);">- }
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- sscanf (
</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -1529,7 +1529,7 @@ Returns:</span><br><span style="color: hsl(0, 100%, 40%);">- //
</span><br><span style="color: hsl(0, 100%, 40%);">- FitStartPtr = (FIT_TABLE *) RelativeAddress;
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-- strncpy ((CHAR8 *) &FitStartPtr->CompAddress, FIT_SIGNATURE, 8); // "_FIT_ "
</span><br><span style="color: hsl(0, 100%, 40%);">-+ memcpy ((CHAR8 *) &FitStartPtr->CompAddress, FIT_SIGNATURE, 8); // "_FIT_ "
</span><br><span style="color: hsl(0, 100%, 40%);">- assert (((VtfInfo->CompSize & 0x00FFFFFF) % 16) == 0);
</span><br><span style="color: hsl(0, 100%, 40%);">- FitStartPtr->CompSize = (VtfInfo->CompSize & 0x00FFFFFF) / 16;
</span><br><span style="color: hsl(0, 100%, 40%);">- FitStartPtr->CompVersion = MAKE_VERSION (VtfInfo->MajorVer, VtfInfo->MinorVer);
</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.17.0</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/payloads/external/tianocore/patches/09_gcc7-Fix-building-with-fpermissive.patch b/payloads/external/tianocore/patches/09_gcc7-Fix-building-with-fpermissive.patch</span><br><span>deleted file mode 100644</span><br><span>index 7016759..0000000</span><br><span>--- a/payloads/external/tianocore/patches/09_gcc7-Fix-building-with-fpermissive.patch</span><br><span>+++ /dev/null</span><br><span>@@ -1,40 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-From 5546ab29b2c0c2fc3a963bc71221918dc77b6152 Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(0, 100%, 40%);">-From: Patrick Rudolph <siro@das-labor.org></span><br><span style="color: hsl(0, 100%, 40%);">-Date: Sun, 17 Jun 2018 08:53:25 +0200</span><br><span style="color: hsl(0, 100%, 40%);">-Subject: [PATCH] gcc7: Fix building with -fpermissive</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-Signed-off-by: Patrick Rudolph <siro@das-labor.org></span><br><span>----</span><br><span style="color: hsl(0, 100%, 40%);">- BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp | 2 +-</span><br><span style="color: hsl(0, 100%, 40%);">- MdeModulePkg/Library/UefiHiiLib/HiiLib.c | 2 +-</span><br><span style="color: hsl(0, 100%, 40%);">- 2 files changed, 2 insertions(+), 2 deletions(-)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp b/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp</span><br><span style="color: hsl(0, 100%, 40%);">-index 3ca57ed741..4fa066dd9f 100644</span><br><span>---- a/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -3372,7 +3372,7 @@ CVfrStringDB::GetVarStoreNameFormStringId (</span><br><span style="color: hsl(0, 100%, 40%);">- UINT8 BlockType;
</span><br><span style="color: hsl(0, 100%, 40%);">- EFI_HII_STRING_PACKAGE_HDR *PkgHeader;
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-- if (mStringFileName == '\0' ) {
</span><br><span style="color: hsl(0, 100%, 40%);">-+ if (mStringFileName == NULL ) {
</span><br><span style="color: hsl(0, 100%, 40%);">- return NULL;
</span><br><span style="color: hsl(0, 100%, 40%);">- }
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c</span><br><span style="color: hsl(0, 100%, 40%);">-index 857950118f..de0aa5f7bc 100644</span><br><span>---- a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c</span><br><span style="color: hsl(0, 100%, 40%);">-+++ b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c</span><br><span style="color: hsl(0, 100%, 40%);">-@@ -2181,7 +2181,7 @@ InternalHiiIfrValueAction (</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">- StringPtr = ConfigAltResp;
</span><br><span style="color: hsl(0, 100%, 40%);">- </span><br><span style="color: hsl(0, 100%, 40%);">-- while (StringPtr != L'\0') {
</span><br><span style="color: hsl(0, 100%, 40%);">-+ while (StringPtr != NULL) {
</span><br><span style="color: hsl(0, 100%, 40%);">- //
</span><br><span style="color: hsl(0, 100%, 40%);">- // 1. Find <ConfigHdr> GUID=...&NAME=...&PATH=...
</span><br><span style="color: hsl(0, 100%, 40%);">- //
</span><br><span>--- </span><br><span style="color: hsl(0, 100%, 40%);">-2.17.0</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/src/mainboard/intel/cannonlake_rvp/chromeos.fmd b/src/mainboard/intel/cannonlake_rvp/chromeos.fmd</span><br><span>index 65d22c3..d2b6364 100644</span><br><span>--- a/src/mainboard/intel/cannonlake_rvp/chromeos.fmd</span><br><span>+++ b/src/mainboard/intel/cannonlake_rvp/chromeos.fmd</span><br><span>@@ -1,21 +1,22 @@</span><br><span> FLASH@0xff000000 0x1000000 {</span><br><span style="color: hsl(0, 100%, 40%);">- SI_ALL@0x0 0x380000 {</span><br><span style="color: hsl(120, 100%, 40%);">+ SI_ALL@0x0 0x400000 {</span><br><span> SI_DESC@0x0 0x1000</span><br><span style="color: hsl(0, 100%, 40%);">- SI_EC@0x01000 0x80000</span><br><span style="color: hsl(0, 100%, 40%);">- SI_ME@0x81000 0x2ff000</span><br><span style="color: hsl(120, 100%, 40%);">+ SI_EC@0x01000 0x100000</span><br><span style="color: hsl(120, 100%, 40%);">+ SI_GBE@0x101000 0x2000</span><br><span style="color: hsl(120, 100%, 40%);">+ SI_ME@0x103000 0x2fd000</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- SI_BIOS@0x380000 0xc80000 {</span><br><span style="color: hsl(0, 100%, 40%);">- RW_SECTION_A@0x0 0x368000 {</span><br><span style="color: hsl(120, 100%, 40%);">+ SI_BIOS@0x400000 0xc00000 {</span><br><span style="color: hsl(120, 100%, 40%);">+ RW_SECTION_A@0x0 0x328000 {</span><br><span> VBLOCK_A@0x0 0x10000</span><br><span style="color: hsl(0, 100%, 40%);">- FW_MAIN_A(CBFS)@0x10000 0x357fc0</span><br><span style="color: hsl(0, 100%, 40%);">- RW_FWID_A@0x367fc0 0x40</span><br><span style="color: hsl(120, 100%, 40%);">+ FW_MAIN_A(CBFS)@0x10000 0x317fc0</span><br><span style="color: hsl(120, 100%, 40%);">+ RW_FWID_A@0x327fc0 0x40</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- RW_SECTION_B@0x368000 0x368000 {</span><br><span style="color: hsl(120, 100%, 40%);">+ RW_SECTION_B@0x328000 0x328000 {</span><br><span> VBLOCK_B@0x0 0x10000</span><br><span style="color: hsl(0, 100%, 40%);">- FW_MAIN_B(CBFS)@0x10000 0x357fc0</span><br><span style="color: hsl(0, 100%, 40%);">- RW_FWID_B@0x367fc0 0x40</span><br><span style="color: hsl(120, 100%, 40%);">+ FW_MAIN_B(CBFS)@0x10000 0x317fc0</span><br><span style="color: hsl(120, 100%, 40%);">+ RW_FWID_B@0x327fc0 0x40</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- RW_MISC@0x6d0000 0x30000 {</span><br><span style="color: hsl(120, 100%, 40%);">+ RW_MISC@0x650000 0x30000 {</span><br><span> UNIFIED_MRC_CACHE@0x0 0x20000 {</span><br><span> RECOVERY_MRC_CACHE@0x0 0x10000</span><br><span> RW_MRC_CACHE@0x10000 0x10000</span><br><span>@@ -28,9 +29,9 @@</span><br><span> RW_VPD@0x28000 0x2000</span><br><span> RW_NVRAM@0x2a000 0x6000</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- SMMSTORE@0x700000 0x40000</span><br><span style="color: hsl(0, 100%, 40%);">- RW_LEGACY(CBFS)@0x740000 0x1c0000</span><br><span style="color: hsl(0, 100%, 40%);">- WP_RO@0x900000 0x380000 {</span><br><span style="color: hsl(120, 100%, 40%);">+ SMMSTORE@0x680000 0x40000</span><br><span style="color: hsl(120, 100%, 40%);">+ RW_LEGACY(CBFS)@0x6c0000 0x1c0000</span><br><span style="color: hsl(120, 100%, 40%);">+ WP_RO@0x880000 0x380000 {</span><br><span> RO_VPD@0x0 0x4000</span><br><span> RO_UNUSED@0x4000 0xc000</span><br><span> RO_SECTION@0x10000 0x370000 {</span><br><span>diff --git a/src/mainboard/intel/coffeelake_rvp/Makefile.inc b/src/mainboard/intel/coffeelake_rvp/Makefile.inc</span><br><span>index 2746453..4e02bce 100644</span><br><span>--- a/src/mainboard/intel/coffeelake_rvp/Makefile.inc</span><br><span>+++ b/src/mainboard/intel/coffeelake_rvp/Makefile.inc</span><br><span>@@ -16,6 +16,7 @@</span><br><span> </span><br><span> bootblock-y += bootblock.c</span><br><span> bootblock-$(CONFIG_CHROMEOS) += chromeos.c</span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-y += early_init.c</span><br><span> </span><br><span> verstage-$(CONFIG_CHROMEOS) += chromeos.c</span><br><span> </span><br><span>diff --git a/src/mainboard/intel/coffeelake_rvp/bootblock.c b/src/mainboard/intel/coffeelake_rvp/bootblock.c</span><br><span>index cac219e..8917f41 100644</span><br><span>--- a/src/mainboard/intel/coffeelake_rvp/bootblock.c</span><br><span>+++ b/src/mainboard/intel/coffeelake_rvp/bootblock.c</span><br><span>@@ -24,4 +24,5 @@</span><br><span> </span><br><span> pads = variant_early_gpio_table(&num);</span><br><span> gpio_configure_pads(pads, num);</span><br><span style="color: hsl(120, 100%, 40%);">+ wilco_ec_early_init();</span><br><span> }</span><br><span>diff --git a/src/mainboard/intel/coffeelake_rvp/early_init.c b/src/mainboard/intel/coffeelake_rvp/early_init.c</span><br><span>new file mode 100644</span><br><span>index 0000000..7c0ad9b</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/intel/coffeelake_rvp/early_init.c</span><br><span>@@ -0,0 +1,50 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 Google LLC</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <arch/io.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <device/pnp_def.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <baseboard/variants.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define PNP_CFG_IDX 0x2e</span><br><span style="color: hsl(120, 100%, 40%);">+#define PNP_LDN_SERIAL 0x0d</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pnp_enter_conf_state(pnp_devfn_t dev)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ outb(0x55, PNP_CFG_IDX);</span><br><span style="color: hsl(120, 100%, 40%);">+ outb(0x55, PNP_CFG_IDX);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pnp_exit_conf_state(pnp_devfn_t dev)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ outb(0xaa, PNP_CFG_IDX);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void wilco_ec_serial_init(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ pnp_devfn_t dev = PNP_DEV(PNP_CFG_IDX, PNP_LDN_SERIAL);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ pnp_enter_conf_state(dev);</span><br><span style="color: hsl(120, 100%, 40%);">+ pnp_set_logical_device(dev);</span><br><span style="color: hsl(120, 100%, 40%);">+ pnp_set_enable(dev, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ pnp_set_iobase(dev, PNP_IDX_IO1, cpu_to_be16(CONFIG_TTYS0_BASE));</span><br><span style="color: hsl(120, 100%, 40%);">+ pnp_write_config(dev, PNP_IDX_IO0, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ pnp_exit_conf_state(dev);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void wilco_ec_early_init(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (IS_ENABLED(CONFIG_DRIVERS_UART_8250IO))</span><br><span style="color: hsl(120, 100%, 40%);">+ wilco_ec_serial_init();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/mainboard/intel/coffeelake_rvp/memory.c b/src/mainboard/intel/coffeelake_rvp/memory.c</span><br><span>index 7058be4..2665077 100644</span><br><span>--- a/src/mainboard/intel/coffeelake_rvp/memory.c</span><br><span>+++ b/src/mainboard/intel/coffeelake_rvp/memory.c</span><br><span>@@ -28,8 +28,8 @@</span><br><span> * the index = pin number on ddr4 part</span><br><span> * the value = pin number on SoC</span><br><span> */</span><br><span style="color: hsl(0, 100%, 40%);">- .dqs_map[DDR_CH0] = { 0, 1, 3, 2, 4, 5, 6, 7 },</span><br><span style="color: hsl(0, 100%, 40%);">- .dqs_map[DDR_CH1] = { 1, 0, 4, 5, 2, 3, 6, 7 },</span><br><span style="color: hsl(120, 100%, 40%);">+ .dqs_map[DDR_CH0] = { 0, 1, 4, 5, 2, 3, 6, 7 },</span><br><span style="color: hsl(120, 100%, 40%);">+ .dqs_map[DDR_CH1] = { 0, 1, 4, 5, 2, 3, 6, 7 },</span><br><span> </span><br><span> /* Baseboard uses 121, 81 and 100 rcomp resistors */</span><br><span> .rcomp_resistor = { 121, 81, 100 },</span><br><span>@@ -40,7 +40,7 @@</span><br><span> .rcomp_targets = { 100, 40, 20, 20, 26 },</span><br><span> </span><br><span> /* Baseboard is an interleaved design */</span><br><span style="color: hsl(0, 100%, 40%);">- .dq_pins_interleaved = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ .dq_pins_interleaved = 0,</span><br><span> </span><br><span> /* Baseboard is using config 2 for vref_ca */</span><br><span> .vref_ca_config = 2,</span><br><span>diff --git a/src/mainboard/intel/coffeelake_rvp/variants/baseboard/include/baseboard/variants.h b/src/mainboard/intel/coffeelake_rvp/variants/baseboard/include/baseboard/variants.h</span><br><span>index 64ff69f..23e613e 100644</span><br><span>--- a/src/mainboard/intel/coffeelake_rvp/variants/baseboard/include/baseboard/variants.h</span><br><span>+++ b/src/mainboard/intel/coffeelake_rvp/variants/baseboard/include/baseboard/variants.h</span><br><span>@@ -36,4 +36,6 @@</span><br><span> struct nhlt;</span><br><span> void variant_nhlt_init(struct nhlt *nhlt);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+void wilco_ec_early_init(void);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #endif /*__BASEBOARD_VARIANTS_H__ */</span><br><span>diff --git a/src/mainboard/intel/coffeelake_rvp/variants/cfl_u/devicetree.cb b/src/mainboard/intel/coffeelake_rvp/variants/cfl_u/devicetree.cb</span><br><span>index 6bd90a5..f4bfcff 100644</span><br><span>--- a/src/mainboard/intel/coffeelake_rvp/variants/cfl_u/devicetree.cb</span><br><span>+++ b/src/mainboard/intel/coffeelake_rvp/variants/cfl_u/devicetree.cb</span><br><span>@@ -10,6 +10,7 @@</span><br><span> register "ScsEmmcEnabled" = "1"</span><br><span> register "ScsEmmcHs400Enabled" = "1"</span><br><span> register "ScsSdCardEnabled" = "1"</span><br><span style="color: hsl(120, 100%, 40%);">+ register "DebugConsent" = "3"</span><br><span> </span><br><span> register "usb2_ports[0]" = "USB2_PORT_TYPE_C(OC0)"</span><br><span> register "usb2_ports[1]" = "USB2_PORT_MID(OC0)"</span><br><span>diff --git a/src/soc/intel/cannonlake/Kconfig b/src/soc/intel/cannonlake/Kconfig</span><br><span>index 256cf1b..c71ec39 100644</span><br><span>--- a/src/soc/intel/cannonlake/Kconfig</span><br><span>+++ b/src/soc/intel/cannonlake/Kconfig</span><br><span>@@ -82,8 +82,7 @@</span><br><span> select CONSOLE_SERIAL</span><br><span> select BOOTBLOCK_CONSOLE</span><br><span> select DRIVERS_UART</span><br><span style="color: hsl(0, 100%, 40%);">- select DRIVERS_UART_8250MEM_32</span><br><span style="color: hsl(0, 100%, 40%);">- select NO_UART_ON_SUPERIO</span><br><span style="color: hsl(120, 100%, 40%);">+ select DRIVERS_UART_8250IO</span><br><span> </span><br><span> config UART_FOR_CONSOLE</span><br><span> int "Index for LPSS UART port to use for console"</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28688">change 28688</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28688"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I5449981baabcbb891e1036177307c58f5e2008ac </div>
<div style="display:none"> Gerrit-Change-Number: 28688 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Lijian Zhao <lijian.zhao@intel.com> </div>