From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by mx.groups.io with SMTP id smtpd.web11.905.1663104721594053990 for ; Tue, 13 Sep 2022 14:32:04 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=dlA2xN6o; spf=pass (domain: gmail.com, ip: 209.85.221.43, mailfrom: theojehl76@gmail.com) Received: by mail-wr1-f43.google.com with SMTP id t7so22715589wrm.10 for ; Tue, 13 Sep 2022 14:32:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=3gBtf6BczvR2vKEik5ZChFwlZXwRhPBlGKpeksLgyos=; b=dlA2xN6ogLvNQ/RrVhj9yCtvrx2HS1mz0AHhcgU4/J3qEtwkIdcHa1H+L17PIAUmnY lySsSMAyxteiivkInoDc5Ec722U9q5VP670SntkqC9zHl8QAyLTr+ErVy9jeHT7lM86p 9iIb4PswydOx+gfFiSa7G9d4cPIOLML45Mt9/JPgdZORsgX6TnkkYycaLebshWx5TK0p hMO2Z62+k18p45LtKVEKBmK8991XgZLT9kpJy+8V+2SfzhmAPaIc8Y0wWcAGhj/C4ffs aVN08UxryX/XuAnb18LAlqBjPrkjD8Z2J7GItnfPcj9hKBCjRFKW29Tq3F7sUPtc5f30 DXKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=3gBtf6BczvR2vKEik5ZChFwlZXwRhPBlGKpeksLgyos=; b=oB0ZgbtgtPQSW7jq2e1WdSrDElf0dqRR7SfKz8TvC8/yfrj5z3IeVDFJfM8g9UBfeo EaqBK9kf1uMa6NUC+i8okhpRHW7CPoIKB3LAyfOaBWQTW1PzQ9Brm7uAtfG0BYVJtEbv JF03IqhEmtgqdOPT74bNumCYFOtZH08SxWWOzBgXV0KalFGkFEBvRO3Wp6XUS9ruvoBR L53xog9dyu9E0iQzM4h7nU/2sFwirLo+ZR0/CMjfBgmoIKU7Ksl/mcgF/vccjvr+ALlM 0hKgandESnnC2Z2cWrIh5yAgpSKhjE8tRsAIanuDqXMWRuQ2JJTqqcUa4ewaRDPr00ui midQ== X-Gm-Message-State: ACgBeo1nyNJmyi+TLgoRxhy1F9SY/8G8pEJjiId9GhmzJExk/s1MS/Al XqvIm5OmMgu2Ieafa5EZHaFqOriwKGLGOeYW X-Google-Smtp-Source: AA6agR65P2vCliKtqIXQ5s8FgrLBnfHzaoFNljd/rFZgh9E0t4pc82kq5qRwHJZDUE48uMUn987Hjg== X-Received: by 2002:a5d:6d0a:0:b0:22a:5327:df7c with SMTP id e10-20020a5d6d0a000000b0022a5327df7cmr10900245wrq.616.1663104722989; Tue, 13 Sep 2022 14:32:02 -0700 (PDT) Return-Path: Received: from localhost.localdomain (eth-east-parth2-46-193-66-249.wb.wifirst.net. [46.193.66.249]) by smtp.gmail.com with ESMTPSA id x4-20020a05600c188400b003a3170a7af9sm14139734wmp.4.2022.09.13.14.32.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Sep 2022 14:32:02 -0700 (PDT) From: =?UTF-8?B?VGjDqW8gSmVobA==?= To: devel@edk2.groups.io Cc: Leif Lindholm , Michael D Kinney , Isaac Oram , Pedro Falcato , Gerd Hoffmann , Stefan Hajnoczi Subject: [edk2-devel][edk2-platforms][PATCH V3 3/4] QemuOpenBoardPkg: Enable stage 3 Date: Tue, 13 Sep 2022 23:31:56 +0200 Message-Id: <517747fb3ee6ca98fe13fb2b1bc831a5a1ca3c2a.1663104246.git.theojehl76@gmail.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This patch adds MinPlatform stage 3 (UEFI boot) functionality Stage 3 adds DxeMain, drivers and modules necessary to reach UEFI shell. Cc: Leif Lindholm Cc: Michael D Kinney Cc: Isaac Oram Cc: Pedro Falcato Cc: Gerd Hoffmann Cc: Stefan Hajnoczi Signed-off-by: Theo Jehl --- .../Include/Dsc/Stage3.dsc.inc | 101 +++++++++++++++++ .../QemuOpenBoardPkg/QemuOpenBoardPkg.dsc | 3 +- .../QemuOpenBoardPkg/QemuOpenBoardPkg.fdf | 54 +++++++++ .../BoardBootManagerLib.inf | 39 +++++++ .../BoardBootManagerLib/BoardBootManager.c | 105 ++++++++++++++++++ 5 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage3.dsc.i= nc create mode 100644 Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootManager= Lib/BoardBootManagerLib.inf create mode 100644 Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootManager= Lib/BoardBootManager.c diff --git a/Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage3.dsc.inc b/Pl= atform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage3.dsc.inc new file mode 100644 index 000000000000..d7ae198633b2 --- /dev/null +++ b/Platform/Qemu/QemuOpenBoardPkg/Include/Dsc/Stage3.dsc.inc @@ -0,0 +1,101 @@ +## @file=0D +# Common DSC content to begin Stage 3 enabling=0D +#=0D +# @copyright=0D +# Copyright (C) 2022 Theo Jehl=0D +#=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +##=0D +=0D +[LibraryClasses.Common]=0D + PlatformBootManagerLib | OvmfPkg/Library/PlatformBootManagerLib/Platfor= mBootManagerLib.inf=0D + BootLogoLib | MdeModulePkg/Library/BootLogoLib/BootLogoLib.i= nf=0D + NvVarsFileLib | OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.in= f=0D + QemuFwCfgS3Lib | OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3L= ibFwCfg.inf=0D + QemuLoadImageLib | OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoa= dImageLib.inf=0D + QemuBootOrderLib | OvmfPkg/Library/QemuBootOrderLib/QemuBootOrder= Lib.inf=0D + PlatformBmPrintScLib | OvmfPkg/Library/PlatformBmPrintScLib/PlatformB= mPrintScLib.inf=0D + XenPlatformLib | OvmfPkg/Library/XenPlatformLib/XenPlatformLib.= inf=0D + LoadLinuxLib | OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf= =0D + SerializeVariablesLib | OvmfPkg/Library/SerializeVariablesLib/Serializ= eVariablesLib.inf=0D + BoardBootManagerLib | QemuOpenBoardPkg/Library/BoardBootManagerLib/B= oardBootManagerLib.inf=0D + LocalApicLib | UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApi= cX2ApicLib.inf=0D + IoLib | MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibInt= rinsic.inf=0D + PciExpressLib | MdePkg/Library/BasePciExpressLib/BasePciExpres= sLib.inf=0D + PcdLib | MdePkg/Library/DxePcdLib/DxePcdLib.inf=0D + PciLib | MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf= =0D + DebugLib | MdePkg/Library/BaseDebugLibSerialPort/BaseDebu= gLibSerialPort.inf=0D + SerialPortLib | PcAtChipsetPkg/Library/SerialIoLib/SerialIoLib= .inf=0D +=0D +[Components.$(DXE_ARCH)]=0D + MdeModulePkg/Core/Dxe/DxeMain.inf {=0D + =0D + NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompre= ssLib.inf=0D + }=0D + MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {=0D + =0D + PcdLib | MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf=0D + }=0D + MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCod= eRouterRuntimeDxe.inf=0D + MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRun= timeDxe.inf=0D + MdeModulePkg/Universal/Metronome/Metronome.inf=0D + MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf=0D + PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.i= nf=0D + MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf=0D + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf=0D + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf=0D + MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntim= eDxe.inf=0D + MdeModulePkg/Universal/BdsDxe/BdsDxe.inf=0D + MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf=0D + MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf=0D + MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf=0D + UefiCpuPkg/CpuDxe/CpuDxe.inf=0D + PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf=0D + MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf=0D + MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf=0D + MdeModulePkg/Universal/Console/GraphicsOutputDxe/GraphicsOutputDxe.inf=0D + MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf= =0D + MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf=0D + MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf=0D + MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf=0D + MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf=0D + UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf=0D + OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf=0D + MdeModulePkg/Universal/SerialDxe/SerialDxe.inf=0D + MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf=0D + MdeModulePkg/Bus/Isa/IsaBusDxe/IsaBusDxe.inf=0D + MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf=0D + MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf=0D + MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf=0D + PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeControllerDxe.inf=0D + MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf=0D + FatPkg/EnhancedFatDxe/Fat.inf=0D + OvmfPkg/QemuRamfbDxe/QemuRamfbDxe.inf=0D +=0D + ShellPkg/Application/Shell/Shell.inf {=0D + =0D + ShellCommandLib | ShellPkg/Library/UefiShellCommandLib/UefiShellComm= andLib.inf=0D + NULL | ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2Co= mmandsLib.inf=0D + NULL | ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1Co= mmandsLib.inf=0D + NULL | ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3Co= mmandsLib.inf=0D + NULL | ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1= CommandsLib.inf=0D + NULL | ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Co= mmandsLib.inf=0D + NULL | ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstal= l1CommandsLib.inf=0D + NULL | ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwor= k1CommandsLib.inf=0D + HandleParsingLib | ShellPkg/Library/UefiHandleParsingLib/UefiHandleP= arsingLib.inf=0D + PrintLib | MdePkg/Library/BasePrintLib/BasePrintLib.inf=0D + BcfgCommandLib | ShellPkg/Library/UefiShellBcfgCommandLib/UefiShellB= cfgCommandLib.inf=0D + =0D + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask | 0xFF=0D + gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize | FALSE=0D + gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize | 8000=0D + }=0D +=0D + MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf=0D + OvmfPkg/PlatformDxe/Platform.inf=0D + MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf=0D + MdeModulePkg/Application/UiApp/UiApp.inf=0D + OvmfPkg/IoMmuDxe/IoMmuDxe.inf=0D + MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf=0D + OvmfPkg/SioBusDxe/SioBusDxe.inf=0D + MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf=0D diff --git a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc b/Platform= /Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc index 2a4bda306cb6..55a7b7e6cdb6 100644 --- a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc +++ b/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.dsc @@ -50,7 +50,7 @@ # Stage 5 - boot to OS with security boot enabled=0D # Stage 6 - boot with advanced features enabled=0D #=0D - gMinPlatformPkgTokenSpaceGuid.PcdBootStage | 2=0D + gMinPlatformPkgTokenSpaceGuid.PcdBootStage | 3=0D =0D #=0D # MinPlatform common include for required feature PCD=0D @@ -132,6 +132,7 @@ !include MinPlatformPkg/Include/Dsc/CoreDxeLib.dsc=0D !include QemuOpenBoardPkg/Include/Dsc/Stage1.dsc.inc=0D !include QemuOpenBoardPkg/Include/Dsc/Stage2.dsc.inc=0D +!include QemuOpenBoardPkg/Include/Dsc/Stage3.dsc.inc=0D =0D [LibraryClasses.Common]=0D QemuOpenFwCfgLib | QemuOpenBoardPkg/Library/QemuOpenFwCfgLib/Qemu= OpenFwCfgLib.inf=0D diff --git a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf b/Platform= /Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf index de275b4c8841..d07f9b4e7b80 100644 --- a/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf +++ b/Platform/Qemu/QemuOpenBoardPkg/QemuOpenBoardPkg.fdf @@ -174,10 +174,64 @@ SET gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize = =3D 0x800000 # Stage 3 Firmware Volumes=0D #=0D ###########################=0D +=0D +[FV.FvUefiBootUnCompressed]=0D + !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf=0D + FvNameGuid =3D D2F110DB-2388-4963-BEFD-5889EEE01569=0D +=0D + INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf=0D +=0D + INF MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatu= sCodeRouterRuntimeDxe.inf=0D + INF MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandle= rRuntimeDxe.inf=0D +=0D + INF MdeModulePkg/Universal/Metronome/Metronome.inf=0D + INF PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf=0D + INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf=0D + INF UefiCpuPkg/CpuDxe/CpuDxe.inf=0D + INF MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf=0D + INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeD= xe.inf=0D + INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf=0D + INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.i= nf=0D + INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf=0D + INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRu= ntimeDxe.inf=0D + INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf=0D + INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf=0D + INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf=0D + INF MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf=0D + INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf=0D +=0D + INF OvmfPkg/IoMmuDxe/IoMmuDxe.inf=0D + INF OvmfPkg/PlatformDxe/Platform.inf=0D +=0D + INF MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf=0D + INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.i= nf=0D + INF MdeModulePkg/Universal/Console/GraphicsOutputDxe/GraphicsOutputDxe.i= nf=0D + INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe= .inf=0D + INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf=0D + INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf=0D + INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf=0D + INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf=0D +=0D + INF MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf=0D + INF MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe.inf=0D + INF ShellPkg/Application/Shell/Shell.inf=0D +=0D + INF OvmfPkg/SioBusDxe/SioBusDxe.inf=0D + INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf=0D + INF MdeModulePkg/Bus/Pci/PciSioSerialDxe/PciSioSerialDxe.inf=0D +=0D [FV.FvUefiBoot]=0D !include MinPlatformPkg/Include/Fdf/CommonSpiFvHeaderInfo.fdf=0D FvNameGuid =3D D0C15ADB-FE38-4331-841C-0E96C1B0FBFA=0D =0D + INF MdeModulePkg/Core/Dxe/DxeMain.inf=0D +=0D + FILE FV_IMAGE =3D D2F110DB-2388-4963-BEFD-5889EEE01569 {=0D + SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRE= D =3D TRUE {=0D + SECTION FV_IMAGE =3D FvUefiBootUncompressed=0D + }=0D + }=0D +=0D ###########################=0D #=0D # Stage 4 Firmware Volumes=0D diff --git a/Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootManagerLib/Boa= rdBootManagerLib.inf b/Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootMana= gerLib/BoardBootManagerLib.inf new file mode 100644 index 000000000000..37425d711010 --- /dev/null +++ b/Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootManagerLib/BoardBootM= anagerLib.inf @@ -0,0 +1,39 @@ +## @file=0D +# The module definition file for BoardBootManagerLib.=0D +#=0D +# Copyright (c) 2019, Intel Corporation. All rights reserved.
=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010005=0D + BASE_NAME =3D BoardBootManagerLib=0D + FILE_GUID =3D 3fe4b589-8bd9-46df-9322-d06fa2c278d6= =0D + MODULE_TYPE =3D DXE_DRIVER=0D + VERSION_STRING =3D 1.0=0D + LIBRARY_CLASS =3D BoardBootManagerLib|DXE_DRIVER=0D +=0D +=0D +#=0D +# The following information is for reference only and not required by the = build tools.=0D +#=0D +# VALID_ARCHITECTURES =3D IA32 X64 EBC=0D +#=0D +=0D +[Sources]=0D + BoardBootManager.c=0D +=0D +[LibraryClasses]=0D + BaseLib=0D + UefiBootServicesTableLib=0D + DebugLib=0D + UefiLib=0D + HobLib=0D + UefiBootManagerLib=0D + TimerLib=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + MdeModulePkg/MdeModulePkg.dec=0D + MinPlatformPkg/MinPlatformPkg.dec=0D diff --git a/Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootManagerLib/Boa= rdBootManager.c b/Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootManagerLi= b/BoardBootManager.c new file mode 100644 index 000000000000..9fad6bc56dfd --- /dev/null +++ b/Platform/Qemu/QemuOpenBoardPkg/Library/BoardBootManagerLib/BoardBootM= anager.c @@ -0,0 +1,105 @@ +/** @file=0D + This file include board specific boot manager callbacks=0D +=0D + Copyright (c) 2019, Intel Corporation. All rights reserved.
=0D + SPDX-License-Identifier: BSD-2-Clause-Patent=0D +**/=0D +=0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +=0D +BOOLEAN mHotKeypressed =3D FALSE;=0D +EFI_EVENT HotKeyEvent =3D NULL;=0D +UINTN mBootMenuOptionNumber;=0D +=0D +/**=0D + This function is called each second during the boot manager waits timeou= t.=0D +=0D + @param TimeoutRemain The remaining timeout.=0D +**/=0D +VOID=0D +EFIAPI=0D +BoardBootManagerWaitCallback (=0D + UINT16 TimeoutRemain=0D + )=0D +{=0D + EFI_STATUS Status;=0D + EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TxtInEx;=0D + EFI_KEY_DATA KeyData;=0D + BOOLEAN PausePressed;=0D +=0D + //=0D + // Pause on PAUSE key=0D + //=0D + Status =3D gBS->HandleProtocol (gST->ConsoleInHandle, &gEfiSimpleTextInp= utExProtocolGuid, (VOID **)&TxtInEx);=0D + ASSERT_EFI_ERROR (Status);=0D +=0D + PausePressed =3D FALSE;=0D +=0D + while (TRUE) {=0D + Status =3D TxtInEx->ReadKeyStrokeEx (TxtInEx, &KeyData);=0D + if (EFI_ERROR (Status)) {=0D + break;=0D + }=0D +=0D + if (KeyData.Key.ScanCode =3D=3D SCAN_PAUSE) {=0D + PausePressed =3D TRUE;=0D + break;=0D + }=0D + }=0D +=0D + //=0D + // Loop until non-PAUSE key pressed=0D + //=0D + while (PausePressed) {=0D + Status =3D TxtInEx->ReadKeyStrokeEx (TxtInEx, &KeyData);=0D + if (!EFI_ERROR (Status)) {=0D + DEBUG (=0D + (=0D + DEBUG_INFO, "[PauseCallback] %x/%x %x/%x\n",=0D + KeyData.Key.ScanCode, KeyData.Key.UnicodeChar,=0D + KeyData.KeyState.KeyShiftState, KeyData.KeyState.KeyToggleSt= ate=0D + )=0D + );=0D + PausePressed =3D (BOOLEAN)(KeyData.Key.ScanCode =3D=3D SCAN_PAUSE);= =0D + }=0D + }=0D +}=0D +=0D +/**=0D + The function is called when no boot option could be launched,=0D + including platform recovery options and options pointing to applications= =0D + built into firmware volumes.=0D +=0D + If this function returns, BDS attempts to enter an infinite loop.=0D +**/=0D +VOID=0D +EFIAPI=0D +BoardBootManagerUnableToBoot (=0D + VOID=0D + )=0D +{=0D + EFI_STATUS Status;=0D + EFI_BOOT_MANAGER_LOAD_OPTION BootDeviceList;=0D + CHAR16 OptionName[sizeof ("Boot####")];=0D +=0D + if (mBootMenuOptionNumber =3D=3D LoadOptionNumberUnassigned) {=0D + return;=0D + }=0D +=0D + UnicodeSPrint (OptionName, sizeof (OptionName), L"Boot%04x", mBootMenuOp= tionNumber);=0D + Status =3D EfiBootManagerVariableToLoadOption (OptionName, &BootDeviceLi= st);=0D + if (EFI_ERROR (Status)) {=0D + return;=0D + }=0D +=0D + for ( ;;) {=0D + EfiBootManagerBoot (&BootDeviceList);=0D + }=0D +}=0D --=20 2.37.0 (Apple Git-136)