From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.117]) by mx.groups.io with SMTP id smtpd.web11.123909.1680675158379779454 for ; Tue, 04 Apr 2023 23:12:38 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@os.amperecomputing.com header.s=selector2 header.b=o8x4D1Ie; spf=pass (domain: os.amperecomputing.com, ip: 40.107.93.117, mailfrom: tinhnguyen@os.amperecomputing.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hvrp6TPJHGeOouD3+vRYcVBu5tgFkv/HUI3JbPhOY3EyXx+1T+PRAmyjW0ka9u2lsr4mYKQ2Ps3zsS2zE4tm+pKoTLkNfspVGADmoJC3CONiB85ZrXo7dYw1TbyE4Zgtf3rt5YL6ZsZR3TlnlLXCP8Cejs1tvfz0TiMYJDE2LaSrIgAF2gXST7bS9ZTO9mM2v2IS5YbNf6ZzxF7PBNc6NKPpH2ATOM2CyPJi/Do3+R6o4GwQ74nRDha5wbiDv+EO13y7B+bFMBdUQ1M/KsJn4chjZPQ5IGsI1YsAHK9eV711UATvPvCVZ0T7uLsbbTvM72xjQF1asbK2p1uLpla18g== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oY0P2DmWVcRCoqawj4ZXXe/oEZIfsnOObhhFaWH2S8E=; b=f5LUICe006Tq+ov3CD+nFmdPEo/egoUC7o8NOm4frTAUsRqcV9BmIx18cI8oaixLE42/54Ch5V9BIGGNBKW5JtBKYZgtcSiE6FoaE7tpwqmxmZY8xRVFSg71qYDQkMiKIrHs7KT8leU1krqXO8RYOd+YISCgMRpRO1Ok/0K244g58Dp9xTma4cgNVRy121GR1bsIUJvTAtmQPTk4T5pNVSdCP+KmefO1fu7ZBKC0c4kOWOxbBOu7i48l8L1vSO1dsbxO6QjboL9WbQ+uq+q8qEu5UMLommgu79Ef4JXM4M5cQL6pdr6hOoFADZERsHQ5cR/jpyL/6Im3s5kr9KRxeg== 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=oY0P2DmWVcRCoqawj4ZXXe/oEZIfsnOObhhFaWH2S8E=; b=o8x4D1IeWammnL7F0gSAxY+K2vrb/FLXJWp6YArfXsw3Od+eoG7Jx6Hb9Y9vILYpAT3TSVRa8TYU1cWhv27a4WU8Rdt6bMh2drBnpyk2f72VJl0yIaslk8fOIdn6VPtbZ0mEqPUzzdQmfz++fKKBhMFA1CyaSVSG+HaAAQqmtH8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from DM5PR0102MB3336.prod.exchangelabs.com (2603:10b6:4:9f::11) by BYAPR01MB4373.prod.exchangelabs.com (2603:10b6:a03:9c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.28; Wed, 5 Apr 2023 06:12:35 +0000 Received: from DM5PR0102MB3336.prod.exchangelabs.com ([fe80::977f:93cc:cf39:42bd]) by DM5PR0102MB3336.prod.exchangelabs.com ([fe80::977f:93cc:cf39:42bd%5]) with mapi id 15.20.6277.028; Wed, 5 Apr 2023 06:12:35 +0000 From: "Tinh Nguyen" To: devel@edk2.groups.io Cc: patches@amperecomputing.com, nhi@os.amperecomputing.com, chuong@os.amperecomputing.com, minhnguyen@os.amperecomputing.com, jian.j.wang@intel.com, gaoliming@byosoft.com.cn, zhichao.gao@intel.com, ray.ni@intel.com, Tinh Nguyen Subject: [edk2][PATCH 1/1] MdeModulePkg: Add EDKII Platform Boot Manager Protocol v2 Date: Wed, 5 Apr 2023 13:11:33 +0700 Message-Id: <20230405061133.307462-1-tinhnguyen@os.amperecomputing.com> X-Mailer: git-send-email 2.39.2 X-ClientProxiedBy: SI1PR02CA0045.apcprd02.prod.outlook.com (2603:1096:4:1f6::16) To DM5PR0102MB3336.prod.exchangelabs.com (2603:10b6:4:9f::11) Return-Path: tinhnguyen@os.amperecomputing.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR0102MB3336:EE_|BYAPR01MB4373:EE_ X-MS-Office365-Filtering-Correlation-Id: b5f0f748-e9c1-4a84-30ee-08db359cbfea X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VHnsRsRoQJzdpBjwqCHDBjODm0bUwqyo0YlEc3wyo5gZs8dLNN2AD8RdXQ5YLx6ouJpQgikOivpDLDdNXymsVDsyWke3gqvTZJjhSu7neUpMnW9b0sSU1rYTxcT5knpIYXn/hKWAWeHx6kL8PWtnuk1Q4FCqC+wV9YVfFykOnZMjQ8GKq7rl1cfcoX3KwkEC9KXD0nW8z8ObQW68Rkrt+rZxvXQTFn9TSbJs8XFvbuVHmPzABS5k7OkIYfE8SQ95s6T5uSa3oMbdqcWWENqMcL2WP2QGU89xgksl+i5yMUCEC/9wO8j4P0NjzmAwfvDqrs+IBpSstceMNviVahBTU2aKkLRsJxA4TmYAgrePMKBBFCsLL5+UuA0cwJ20VQtH0bbdWnTwbWUsVNN7kQyOrGVLwnbfPmlAx4Zj/Wu46ctvFcMlMnsTy43tevvFXT33KenRsECV6zmHbop2Rq0c1bvnqdUw40GhjPGrWrPEXf55nVIxFc9TtKP3ZPS2n7d348L5O7OUM0PWPIxVrdnfrjS+04BlC9lz/C798oNveckYRwFMIRCPfYfejXCLMMCuO2b2AYC7nP3AHbPj+pktSsu71vX6guJ4AXSuKHB9Wdo3ydBub9vqPUv6NBeFe+Ym X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR0102MB3336.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(39850400004)(366004)(346002)(136003)(396003)(451199021)(38100700002)(86362001)(52116002)(66556008)(66476007)(8676002)(6486002)(478600001)(41300700001)(316002)(4326008)(66946007)(6916009)(2906002)(5660300002)(8936002)(38350700002)(186003)(1076003)(107886003)(6506007)(26005)(83380400001)(6512007)(2616005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7zThGf10YDkXIs6NPxYdQZ3tXOHMleNu8PIgjGCU3v5+yfjQO1mnAa5AdDaZ?= =?us-ascii?Q?bOoVZm5VX+H1SqfHE92U0ygaYiEs4QK8xg8YnVlLD2Il5z1qBU3nnippYa9F?= =?us-ascii?Q?i8PxmZ2vP5G7T1SEoMK/vPfVCnOmPaTdXcFbbWW/wsqswnBW7BomQYnLSF08?= =?us-ascii?Q?oxJgyLZzonuyITGQuVQ1tVRxSinL461HvlDnJMgbGc4WfCQgwoIdFCRN9YMP?= =?us-ascii?Q?6cNEWIn1SMBQ6/7dHSI0uc74jqG14SCKioBt6AEvOi2g5BFs572JX7JbMGZR?= =?us-ascii?Q?UJAHMSrNP4mAFVRP18FtoTul8zTCp9Rhe9d4IaKwycjVTUvbAc8ubfceADgK?= =?us-ascii?Q?WdtAN0FEpuvSDy9BzqqhEEZ0k9nGQjObK0zd3noYxHE5jWjT+nF6fX3NpXlu?= =?us-ascii?Q?miALLfgkC4SSN3aUVNO/vx8KH2AHy2Nf9nRDCn4dKoAegjkKpXUEZYnWl6gT?= =?us-ascii?Q?oVrki7rkqvMicHGNUQcp5wsrMllvBCqHrD9rYdwq24u9d+MEXycueNpykctd?= =?us-ascii?Q?KTAZyMkr9fGfw+LUazglc9WFz9aSw3puNTJ2c3rF8rJKJ6b6cSIcBlHoVtuA?= =?us-ascii?Q?jaOyKaQrD3NL2eD/UNnUWDjXSWDh5AmfpqIq2WTluN01gdtxP/eItIvARuF9?= =?us-ascii?Q?6qPlPSv2LZug2JIMWDnrXEDpMhi3yh9ERnP86jneCDKw224caZZeIM6f+6iZ?= =?us-ascii?Q?Wjt0746Q83/pIf7dfpm8MjsF/u87Ft8bKZrXFNRYSgBHsF5E5yc2Cq3EVm/n?= =?us-ascii?Q?cjJXYWqv1uC7KNeWlK8FCry/NMZqqd7ASlvZrH2y7PoK9lKMRDu+TigLC6aj?= =?us-ascii?Q?oTR2Z117jl5kHuhk2FBf/ePjZ+w4CX5NpshRqB7wcf9UGsKkpsSg4fWRAX/H?= =?us-ascii?Q?5v8XUqpGogNQ4XqDJWqp+uDezpVxidSjNmueGoh9tIE+LFed0BINqy8lf+Fd?= =?us-ascii?Q?08K9Zk2HRZSQPMZjg/7ox5/1UIMY3+p/EgpPrkfId4Xcr4WlcmIYQRpUpeeo?= =?us-ascii?Q?NpQtnTnxFQ/D8DaBIpGQRAjOqyyZJ6lFgNWt7hEOBjQHK6TAslIQ83f3RFMX?= =?us-ascii?Q?eo9rTb+2VWAroDEwNqWAkr7t/cfjcw5PV0PgdHpM8rNIn37+MlUJNlI+OsRk?= =?us-ascii?Q?bzHyaWDlh+rIxtVG2X9SuTE1Gnmoe605C7HNZ7honnXIwnfHrgkP0Ot1PoSG?= =?us-ascii?Q?kCqsnVKfpCdI9XPTt1qVj3fK4IUEhQEz4a4i/TE+B+ma01o3RF/3hRvhkDUR?= =?us-ascii?Q?3Ci4jV9GhYgngfzRtLh4rHL9om0SJTjQkRTyb3rQ+YJ4oZGpBlTz08x5RdUH?= =?us-ascii?Q?qYDz8Wl7KtbMZPUVR5R8jSPpS7Vebgap8HntaKy4qxFdPc03WfMpBmnmeJog?= =?us-ascii?Q?ZecArtgcwLW7JXQi0R/qt5aau7eZH5YDD4vGZYN0dOKMIfEX28SSK2AxmZsI?= =?us-ascii?Q?bmhhYKOzpaQtmuOUaZC5koNbB4t/Jw2pU9jGCzPh/5TDD5tqL4zh/ePl/HCB?= =?us-ascii?Q?MLKuzrzBayqG93lHg+K1xHEhZ9oBvkA5cViuy7iNDoHXE5OlbNdcI1zTEEGU?= =?us-ascii?Q?4Vj8WP5GETMdErgYHfkv5ohTxrjwZUBbyd1S/cjOXidW+UMbf4zRVSL1zx5W?= =?us-ascii?Q?H3vNPiH3OeU6Iu3BU34MrhE5ShXsGIbxcbMpCM9veOZa?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5f0f748-e9c1-4a84-30ee-08db359cbfea X-MS-Exchange-CrossTenant-AuthSource: DM5PR0102MB3336.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Apr 2023 06:12:35.6469 (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: aJ8SGeCUqcwFB0yTnEg7pKam9zdpxmvSRcoKRaKPWiQfJPb8YWk6wXi8EjZXodW8lV46ZQiU9+4vtwUwGYf47KNqWWNil2bY7wM64Nd15+Zo5uFMhI8yIusJojIP7KGp X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR01MB4373 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain This introduces the EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION2, which adds a new UpdateBootOrder() function to support customizing the boot options order according to the platform-specific policy. Signed-off-by: Tinh Nguyen --- MdeModulePkg/Include/Protocol/PlatformBootManager.h | 24 +++++++++++++++++= ++- MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 9 ++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Include/Protocol/PlatformBootManager.h b/MdeModul= ePkg/Include/Protocol/PlatformBootManager.h index e527b0ee0eaf..758bc2deb774 100644 --- a/MdeModulePkg/Include/Protocol/PlatformBootManager.h +++ b/MdeModulePkg/Include/Protocol/PlatformBootManager.h @@ -1,6 +1,7 @@ /** @file=0D =0D Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.=0D + Copyright (c) 2023, Ampere Computing LLC. All rights reserved.
=0D =0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D =0D @@ -29,7 +30,8 @@ typedef struct _EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL EDKI= I_PLATFORM_BOOT_MANAGER // All future revisions must be backwards compatible.=0D // If a future version is not back wards compatible it is not the= same GUID.=0D //=0D -#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION 0x00000001=0D +#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION 0x00000001=0D +#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION2 0x00000002=0D =0D //=0D // Function Prototypes=0D @@ -72,9 +74,29 @@ EFI_STATUS OUT UINTN *UpdatedBootOptionsCount=0D );=0D =0D +/**=0D + This function allows platform to update the DriverOrder/BootOrder variab= les.=0D + And it is available from version 2 of the EDKII Platform Boot Manager pr= otocol.=0D +=0D + @retval EFI_SUCCESS Platform successfully modifies=0D + the DriverOrder/BootOrder variables as wanted.=0D + @retval Others There are some errors that happen. Check the status= code=0D + for details.=0D +=0D +**/=0D +typedef=0D +EFI_STATUS=0D +(EFIAPI *PLATFORM_BOOT_MANAGER_UPDATE_BOOT_ORDER)(=0D + IN VOID=0D + );=0D +=0D struct _EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL {=0D UINT64 Revision;=0D PLATFORM_BOOT_MANAGER_REFRESH_ALL_BOOT_OPTIONS RefreshAllBootOptions;= =0D + //=0D + // EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION2=0D + //=0D + PLATFORM_BOOT_MANAGER_UPDATE_BOOT_ORDER UpdateBootOrder;=0D };=0D =0D extern EFI_GUID gEdkiiPlatformBootManagerProtocolGuid;=0D diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePk= g/Library/UefiBootManagerLib/BmBoot.c index bde22fa6590e..67d1d54b3c24 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -4,6 +4,7 @@ Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.=0D Copyright (c) 2011 - 2021, Intel Corporation. All rights reserved.
=0D (C) Copyright 2015-2021 Hewlett Packard Enterprise Development LP
=0D +Copyright (c) 2023, Ampere Computing LLC. All rights reserved.
=0D SPDX-License-Identifier: BSD-2-Clause-Patent=0D =0D **/=0D @@ -2412,6 +2413,8 @@ EfiBootManagerRefreshAllBootOption ( BootOptions =3D UpdatedBootOptions;=0D BootOptionCount =3D UpdatedBootOptionCount;=0D }=0D + } else {=0D + PlatformBootManager =3D NULL;=0D }=0D =0D NvBootOptions =3D EfiBootManagerGetLoadOptions (&NvBootOptionCount, Load= OptionTypeBoot);=0D @@ -2453,6 +2456,12 @@ EfiBootManagerRefreshAllBootOption ( =0D EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount);=0D EfiBootManagerFreeLoadOptions (NvBootOptions, NvBootOptionCount);=0D +=0D + if ((PlatformBootManager !=3D NULL) &&=0D + (PlatformBootManager->Revision >=3D EDKII_PLATFORM_BOOT_MANAGER_PROT= OCOL_REVISION2))=0D + {=0D + PlatformBootManager->UpdateBootOrder ();=0D + }=0D }=0D =0D /**=0D -- 2.39.2