From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.113]) by mx.groups.io with SMTP id smtpd.web08.9451.1623252081216953333 for ; Wed, 09 Jun 2021 08:21:21 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@os.amperecomputing.com header.s=selector2 header.b=NaNg8e36; spf=pass (domain: os.amperecomputing.com, ip: 40.107.94.113, mailfrom: nhi@os.amperecomputing.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O9ch8Rx/KwaaTOLfPMiNS+bsQxmhvYMLU3xLkDIeVOWrmAW05bORZREn74qTVChiwx+6hnJ39Jse3zs3wczqKWu2tVKtmBQYWZQU0ddB8eua/ZuhI6TqrzDQfCwvaVKEMWzHm8+bP/BH176gF2PW794FILoOWeyuxdEGNlQIgdBJzUrJtzMQj8KKGX5BcIfIaTNMseB3qcsUaddjZSr6Mra9TlofbPLTUscJ5I26Z0fzcVdNFkwhhchiYamcW1m5+0glY7S1uRGHCo5d7LS4Q5t/yoIJHK+MKzyzJML7Vy1KI4qj0c2MezM/9g+zLzRWysoBkQWkvMb6U9BwzcWIew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k8UK0fDnkP24euawQQ964mjBjEaz1BM9ilI4rzofmMg=; b=khc5JwlWx/Sm9SBljmjHXdl414F6r2VHbOQz7Tw1JPtg8SQFfF7Nr8Ynlz1tv8VE52lW6XGl1L+n1O0V9Qi7TKeVndFyJY/g2NT/LR9KRrQs+vcwFHguSI0RaehwbjX6QN8Ja/Dh8KveKXrf23D9ynn+j29qDBpCp/ro3QcI6GWhuOagi0RVgUEIwtAMGO4FL5ggRKk1Dx40rBDMJZxRDO8XPOYtyD/G3HHxrk9XZVcUXJ9QMnptzuTeMGxVf6KD0HWAzGKnpNUQsz2wa2xBYvBEFZ/goMr3Y4hyEW7XWBW4EWkfwBzDi9hj8aPuHHk4fkgnKiN2TlwMt/bGh7w6Ug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k8UK0fDnkP24euawQQ964mjBjEaz1BM9ilI4rzofmMg=; b=NaNg8e36zcVJ5xMxpBL99LTxqfVX59jm2qMkcyFJhYIdhtF64YyqQzBT0U3AhpXveKoTjndpV0iuO09/vhZHCAghnSkZ0l+lKxr/v/FTKHmUYO55gZbBmR58BAY1pnqJDJ6Q+sXT2lTuSNAwZueqjnrq8S9B4BdZc2ekj35OqxI= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=os.amperecomputing.com; Received: from DM6PR01MB5849.prod.exchangelabs.com (2603:10b6:5:205::20) by DM8PR01MB7207.prod.exchangelabs.com (2603:10b6:5:314::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.24; Wed, 9 Jun 2021 15:21:19 +0000 Received: from DM6PR01MB5849.prod.exchangelabs.com ([fe80::60d2:86dd:1f1c:51dd]) by DM6PR01MB5849.prod.exchangelabs.com ([fe80::60d2:86dd:1f1c:51dd%7]) with mapi id 15.20.4195.030; Wed, 9 Jun 2021 15:21:19 +0000 Subject: Re: [edk2-platforms][PATCH v2 30/32] AmpereSiliconPkg: Implement PlatformBootManagerLib for LinuxBoot To: Leif Lindholm Cc: devel@edk2.groups.io, Thang Nguyen , Chuong Tran , Phong Vo , Michael D Kinney , Ard Biesheuvel , Nate DeSimone References: <20210526100724.5359-1-nhi@os.amperecomputing.com> <20210526100724.5359-32-nhi@os.amperecomputing.com> <20210607235009.ov6smeyzmotarrnz@leviathan> From: "Nhi Pham" Message-ID: <6472b7da-6414-5684-8ad3-6dab947079e1@os.amperecomputing.com> Date: Wed, 9 Jun 2021 22:21:11 +0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 In-Reply-To: <20210607235009.ov6smeyzmotarrnz@leviathan> X-Originating-IP: [2405:4802:919c:1740:2071:cb7e:eca5:b6e0] X-ClientProxiedBy: HKAPR03CA0010.apcprd03.prod.outlook.com (2603:1096:203:c8::15) To DM6PR01MB5849.prod.exchangelabs.com (2603:10b6:5:205::20) Return-Path: nhi@os.amperecomputing.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2405:4802:919c:1740:2071:cb7e:eca5:b6e0] (2405:4802:919c:1740:2071:cb7e:eca5:b6e0) by HKAPR03CA0010.apcprd03.prod.outlook.com (2603:1096:203:c8::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.9 via Frontend Transport; Wed, 9 Jun 2021 15:21:17 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8ff84636-06a8-4785-7a0f-08d92b5a3b82 X-MS-TrafficTypeDiagnostic: DM8PR01MB7207: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FKCMnR45GoZEfmT6evsE9JDmOLAHfbW4btsncE9whZ3Hp9rVah2VV6YFgPvUO6I93bh/bqON/9z/DvRVOwhxxmy/J4UIAB/SUw0c6t1Qt1WU+87CaFE8Gwc7Cc2V84S3U2nZHKuDoi4+DHDhPUZtqIDNzGyPYqljNaoKrFGj5Gk4WBUCB3zJPcLH7AlaNFxoC1O6hGZJmhzy0hfTsFDnHtxoJsmBzb/9Hsd7xL7BMyPse0ZgkQUk6tlv/NRiRVvdHFgViCK9tboVOSt6IhXqpq85XKo1q37MvCMwIQiLmwQgJ61g/xVfYV/s3kPo0MePIZ0eF+CV3C4UkYvN0cGVjFMXnQCw7LMqXpKoahldCZjbCxPbD7BGbB5/vkd5bx+1mkgvvypdA505cqj8ugxPRD7Y0Uqx5aHp/34oy5doRfyN8n7XxhHGJRC8TGZdCF2SIHm68ukuTZ28Bd+REb6uqUMDlOC02OFHlwdg32LjeOIm7cqNeFUJ94Rnsmzyepvo2y6v1xzTBLsulqGVjuDAvxFvuPhX4zQOhWe8cfMS/TBwJ9xKoIFA1fr/zZU1jTKMGn+8WdGbtSrNf/foq6l6rJv5CTcCDpkXKRZGszihmZuFhJUwLD+u7ytrXBT3DoZ4OLuOkahDgKHyp4p9ExIVyPfX80TN/u1n2spKcvej4QDkeIlaT1EuKagKTrijP8qt X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR01MB5849.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(376002)(396003)(39840400004)(346002)(6916009)(8676002)(38100700002)(6486002)(4326008)(6666004)(86362001)(54906003)(8936002)(2906002)(316002)(478600001)(52116002)(31696002)(186003)(66946007)(83380400001)(2616005)(16526019)(66556008)(31686004)(53546011)(5660300002)(66476007)(43740500002)(45980500001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TndQY0YyMjJDU2g0Nit0a05IenlQUU1haDl1amNJeEFBc1EyRWdaR0dieGlP?= =?utf-8?B?aTlPTzZTSkh2SzY0ZWN0eDJFL2pzdHBlbUp6ZlpheUFyUGhLK2RLbi9BN09E?= =?utf-8?B?Zjl0cWVtZ3llWmxhNUkzVmVjcDYwVjFDNjdKNnFKR0VMVksyNUxCMFdIN0Zo?= =?utf-8?B?MXducStaVXJZaHo5REFLckJZNS9Gc3NranlaYXZEOWtES09rN3pHRzZ3WGQv?= =?utf-8?B?SmFUb2RwZ1piRzFzdm45YjFwa2xOQkpORWdaOUhsU00yNkR0SU8zY3MrUm9i?= =?utf-8?B?UnArSkRrMnBTenBGdWlJL0N1akkwVFVxQXVsYlQ3Um5mQ3lUeEt3anNpSnhV?= =?utf-8?B?M1IvcThlVHNwRWNkWVNDSDByL2lpMzlRencyeWlic3l6azlmbkpEbGRsRlM1?= =?utf-8?B?SjduRHJOZGJuOUQrdmdPMFVEcXZGSG5WUWJNcnlwM01CNmRnMUhZYitJRWgy?= =?utf-8?B?TXVmY2NwbTVQSjNDT0RTZThpQVN4WTRxK1M1MTc3Sy9kbHgwcE5qbVhJLzQ1?= =?utf-8?B?d3I1NlljZHVBYlRTOU1lTjhEdlBacUpoQVpYblJaNHkxVnZnUXFzb0hJc3RQ?= =?utf-8?B?VVF6b2FBNkU4bE9kT0grNE5kVDF2d1R3R0VMSGQ1am1NYUhLNC9hTGhYTjY2?= =?utf-8?B?RG9CU3VSekhLMmJkMHVBNkdyby9ZWEx3NUNQZ3VpZDFsZ0VUcnBuZnZOUnpY?= =?utf-8?B?SjdZRDhXK3JHQjdBWlVOcjNUb2hVaVAreENNWHRvK3hOa3lHcTJyVjJJdHpV?= =?utf-8?B?RGdXMnRvRjVlS3RaZ2lrU1A2ZkF6d3RxaERONmYwelczdk16bFhybVRTWENM?= =?utf-8?B?eDNpbVN3ay9wbUJ1TGc2R0pDeS9ZeDdSNFMySjdCVFcrMHF0UTRQMTRHM2ps?= =?utf-8?B?YnBBQnEyRFIvejZwaE5SY3o4cDR3MUQyelVPRUk2bDhMenVPcURHK2cvMW1w?= =?utf-8?B?eDgrTHIwUXhPQ1h2eFN5d3d2cTFSYko4QndFSVgwYmlIRXpZWVlTMEduWW1M?= =?utf-8?B?WjF5emZKbXc4QnByTzZkeEN2VThpKzNBZyt0T2NkY3JvcVZDenkxaHBGbE9y?= =?utf-8?B?YkZTTE9wOGpMbmV3cEh0Ulg2RDA2anIwc1VjM2loVW9qdXFDNEwvNEJoR1J1?= =?utf-8?B?QnJicXk4bzIvc2JVTW9jYlA2bml0QkFNMTNvZDFpVVZKUllpN3dSSUpQKzRj?= =?utf-8?B?eW5ReEdaa05mMTZYdTMvcENManhiaURwQmh6V01FSHpaTVNJUUt0TEkxdnUy?= =?utf-8?B?cGxTaUtqVDUvZVBEWU9RdEhBODBSTmRscEQrc1FhSlNlWExvMDlHMldDS1JM?= =?utf-8?B?K2M0TENsWmZFdHVBaUxKTGZUdHV1K1dZNVpNS2ZtTGF4M1pzU2F5bmdDbms2?= =?utf-8?B?eWJTUmthdy8yWkVOL3ZaTEhGR0h2dnpQeUJid2dqK3A3Mng3amFTYTV0L1JI?= =?utf-8?B?RzRDeHJVTkZNbjR0b1pIR1N6Q1ZyU0YrYUkrMHpsdHZaNUdaQnJpWVU0RUNI?= =?utf-8?B?NFQyOThPc3lGRnAzdU9iclFodUdRSmo2aTlxeHNaZ2NpandlOC9TSkg0M1Q1?= =?utf-8?B?OWorZmdOK1dXV0JpLzBtUCt0eGt0ZlZGT1RoTzVvSUpLZ294VHE4b2V1UmFY?= =?utf-8?B?bTVaaWZGbWorUFlabE1NR3BqaVN0ay9RUDh3Mko0TEFGVG94alR2bmIwemdK?= =?utf-8?B?OGk5SmI1TWNLWkh3VGRvNU1aN2JRUHh3Z28rQ0tmRHMzOUxYdldUMUhrSzNk?= =?utf-8?B?L0hVZWJLeFBCbFFDNDR0TUpVSklEZkY3aHlnS1VwNnBpTEZDQ3FVei9WN1g3?= =?utf-8?B?RHJNVlViNHE0WU5teE5JQlBzUHl5MDZVaDBQYXUrRXkvNGRSTTdCUjRLUnVk?= =?utf-8?Q?AWik5NLfg1FvX?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ff84636-06a8-4785-7a0f-08d92b5a3b82 X-MS-Exchange-CrossTenant-AuthSource: DM6PR01MB5849.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2021 15:21:19.6002 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bVihxaUa/zl0xQOfFaMoTF0L/OvvCmTJuAYN1TYTdspaKxsXuFAGiY3MhHAWHV6s1ZcuGOzTUL5oigkEyg0hddhESNvBbKemj943Ard+cYY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR01MB7207 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US On 6/8/21 06:50, Leif Lindholm wrote: > On Wed, May 26, 2021 at 17:07:22 +0700, Nhi Pham wrote: >> The PlatformBootManagerLib library derived from >> ArmPkg/Library/PlatformBootManagerLib. >> >> This implementation registers only a common GUID for LinuxBoot Payload >> ("D834A5AD-459C-4AED-B0D0-8CBCB28838D7") as a active boot option. This >> allows BDS to jump to the LinuxBoot Shell immediately without entering >> the UiApp Setup Screen or UEFI Shell. > This driver does not look spectacularly platform specific to me, > although the GUID handling could posibly do with some additional > engineering if this was to be shared with others. > > Would you consider submitting it for ArmPkg for now? (Unless it's > something for MinPlatformPkg?) Ok, I will separate this driver and submit it for ArmPkg for now. Best regards, Nhi > > / > Leif > >> Cc: Thang Nguyen >> Cc: Chuong Tran >> Cc: Phong Vo >> Cc: Leif Lindholm >> Cc: Michael D Kinney >> Cc: Ard Biesheuvel >> Cc: Nate DeSimone >> >> Signed-off-by: Nhi Pham >> --- >> Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBootManagerLib.inf | 54 ++++++ >> Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBm.c | 173 ++++++++++++++++++++ >> 2 files changed, 227 insertions(+) >> >> diff --git a/Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBootManagerLib.inf b/Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBootManagerLib.inf >> new file mode 100644 >> index 000000000000..cb4ade210117 >> --- /dev/null >> +++ b/Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBootManagerLib.inf >> @@ -0,0 +1,54 @@ >> +## @file >> +# Implementation for PlatformBootManagerLib library class interfaces. >> +# >> +# Copyright (C) 2015-2016, Red Hat, Inc. >> +# Copyright (c) 2014, ARM Ltd. All rights reserved.
>> +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
>> +# Copyright (c) 2016, Linaro Ltd. All rights reserved.
>> +# Copyright (c) 2020 - 2021, Ampere Computing LLC. All rights reserved.
>> +# >> +# SPDX-License-Identifier: BSD-2-Clause-Patent >> +# >> +## >> + >> +[Defines] >> + INF_VERSION = 0x00010005 >> + BASE_NAME = LinuxBootBootManagerLib >> + FILE_GUID = 1FA91547-DB23-4F6A-8AF8-3B9782A7F917 >> + MODULE_TYPE = DXE_DRIVER >> + VERSION_STRING = 1.0 >> + LIBRARY_CLASS = PlatformBootManagerLib|DXE_DRIVER >> + >> +# >> +# The following information is for reference only and not required by the build tools. >> +# >> +# VALID_ARCHITECTURES = ARM AARCH64 >> +# >> + >> +[Sources] >> + LinuxBootBm.c >> + >> +[Packages] >> + MdeModulePkg/MdeModulePkg.dec >> + MdePkg/MdePkg.dec >> + ShellPkg/ShellPkg.dec >> + >> +[LibraryClasses] >> + BaseLib >> + BaseMemoryLib >> + DebugLib >> + MemoryAllocationLib >> + PrintLib >> + UefiBootManagerLib >> + UefiBootServicesTableLib >> + UefiLib >> + UefiRuntimeServicesTableLib >> + >> +[Pcd] >> + >> +[Guids] >> + gEfiEndOfDxeEventGroupGuid >> + gUefiShellFileGuid >> + >> +[Protocols] >> + gEfiLoadedImageProtocolGuid >> diff --git a/Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBm.c b/Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBm.c >> new file mode 100644 >> index 000000000000..2d0f087477d6 >> --- /dev/null >> +++ b/Silicon/Ampere/AmpereSiliconPkg/Library/LinuxBootBootManagerLib/LinuxBootBm.c >> @@ -0,0 +1,173 @@ >> +/** @file >> + Implementation for PlatformBootManagerLib library class interfaces. >> + >> + Copyright (C) 2015-2016, Red Hat, Inc. >> + Copyright (c) 2014 - 2019, ARM Ltd. All rights reserved.
>> + Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
>> + Copyright (c) 2016, Linaro Ltd. All rights reserved.
>> + Copyright (c) 2020 - 2021, Ampere Computing LLC. All rights reserved.
>> + >> + SPDX-License-Identifier: BSD-2-Clause-Patent >> + >> +**/ >> + >> +#include >> + >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> + >> +// This GUID must match the FILE_GUID in the LinuxBootPkg/LinuxBoot.inf file. >> +// GUID: D834A5AD-459C-4AED-B0D0-8CBCB28838D7 >> +EFI_GUID mLinuxBootFileGuid = { 0xD834A5AD, 0x459C, 0x4AED, { 0xB0, 0xD0, 0x8C, 0xBC, 0xB2, 0x88, 0x38, 0xD7 } }; >> + >> +STATIC >> +VOID >> +RegisterFvBootOption ( >> + CONST EFI_GUID *FileGuid, >> + CHAR16 *Description, >> + UINT32 Attributes >> + ) >> +{ >> + EFI_STATUS Status; >> + INTN OptionIndex; >> + EFI_BOOT_MANAGER_LOAD_OPTION NewOption; >> + EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; >> + UINTN BootOptionCount; >> + MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FileNode; >> + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; >> + EFI_DEVICE_PATH_PROTOCOL *DevicePath; >> + >> + Status = gBS->HandleProtocol ( >> + gImageHandle, >> + &gEfiLoadedImageProtocolGuid, >> + (VOID **)&LoadedImage >> + ); >> + ASSERT_EFI_ERROR (Status); >> + >> + EfiInitializeFwVolDevicepathNode (&FileNode, FileGuid); >> + DevicePath = DevicePathFromHandle (LoadedImage->DeviceHandle); >> + ASSERT (DevicePath != NULL); >> + DevicePath = AppendDevicePathNode ( >> + DevicePath, >> + (EFI_DEVICE_PATH_PROTOCOL *)&FileNode >> + ); >> + ASSERT (DevicePath != NULL); >> + >> + Status = EfiBootManagerInitializeLoadOption ( >> + &NewOption, >> + LoadOptionNumberUnassigned, >> + LoadOptionTypeBoot, >> + Attributes, >> + Description, >> + DevicePath, >> + NULL, >> + 0 >> + ); >> + ASSERT_EFI_ERROR (Status); >> + FreePool (DevicePath); >> + >> + BootOptions = EfiBootManagerGetLoadOptions ( >> + &BootOptionCount, >> + LoadOptionTypeBoot >> + ); >> + >> + OptionIndex = EfiBootManagerFindLoadOption ( >> + &NewOption, >> + BootOptions, >> + BootOptionCount >> + ); >> + >> + if (OptionIndex == -1) { >> + Status = EfiBootManagerAddLoadOptionVariable (&NewOption, MAX_UINTN); >> + ASSERT_EFI_ERROR (Status); >> + } >> + EfiBootManagerFreeLoadOption (&NewOption); >> + EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount); >> +} >> + >> +/** >> + Do the platform specific action before the console is connected. >> + >> + Such as: >> + Update console variable; >> + Register new Driver#### or Boot####; >> + Signal ReadyToLock event. >> +**/ >> +VOID >> +EFIAPI >> +PlatformBootManagerBeforeConsole ( >> + VOID >> + ) >> +{ >> + // >> + // Signal EndOfDxe PI Event >> + // >> + EfiEventGroupSignal (&gEfiEndOfDxeEventGroupGuid); >> +} >> + >> +/** >> + Do the platform specific action after the console is connected. >> + >> + Such as: >> + Dynamically switch output mode; >> + Signal console ready platform customized event; >> + Run diagnostics like memory testing; >> + Connect certain devices; >> + Dispatch additional option roms. >> +**/ >> +VOID >> +EFIAPI >> +PlatformBootManagerAfterConsole ( >> + VOID >> + ) >> +{ >> + // >> + // Register LinuxBoot >> + // >> + RegisterFvBootOption ( >> + &mLinuxBootFileGuid, >> + L"LinuxBoot", >> + LOAD_OPTION_ACTIVE >> + ); >> +} >> + >> +/** >> + This function is called each second during the boot manager waits the >> + timeout. >> + >> + @param TimeoutRemain The remaining timeout. >> +**/ >> +VOID >> +EFIAPI >> +PlatformBootManagerWaitCallback ( >> + UINT16 TimeoutRemain >> + ) >> +{ >> + return; >> +} >> + >> +/** >> + The function is called when no boot option could be launched, >> + including platform recovery options and options pointing to applications >> + built into firmware volumes. >> + >> + If this function returns, BDS attempts to enter an infinite loop. >> +**/ >> +VOID >> +EFIAPI >> +PlatformBootManagerUnableToBoot ( >> + VOID >> + ) >> +{ >> + return; >> +} >> -- >> 2.17.1 >>