From nobody Thu May 16 00:49:01 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99929+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99929+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675972856865415.75348187907; Thu, 9 Feb 2023 12:00:56 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id hwHnYY1788612xbiFhdnm5Zl; Thu, 09 Feb 2023 12:00:56 -0800 X-Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.74]) by mx.groups.io with SMTP id smtpd.web11.896.1675972855566006489 for ; Thu, 09 Feb 2023 12:00:55 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k4NqaErFgupBMA95mkqGkG+1dWqVsatSE0eOWUVmZuCnGYckANV2B9NyrNMGyPR3+y1x70T97N+FF3ZhFJNy6GUNMGEKLgxy6nZ7un3GyeTcc2465LGeaT3jWEbB7TfucDtR4iB970/xZOa8ok44/sfq67wCeb/HwbkaSVMD5r+2lS8p28G+zwTHIIgpnq6MpFrgcXqioOUsI+YRMPH2BKJ7QjEifVTwio0kVfSfaMk09Az5t4G+eF0lTxVMM3/EHmUdo20A1nUghotkQOi59ct6SpNr/95gSRniI5jc4bpp+zw4c9fI7CBOo88VDnyaC2nMPUKAremCkxf+WEq6zw== 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=EaknQSW87XbIZOEeX1XOdfDFcvZKYphXo3DrEeNX10g=; b=kV5zHpp6b35eq6ldQaywwyy65i33yLjTijK/QweTRY580+glcepCowzTFw0CKgxPJ7tUTGtLZY4+vRjIITybchlUoD3I3gWwzYFH5NnpeL5WuQLjbxivTT/ewz2ZAWiGp4fDAYarOxaZsdMEsR+EYV7U2fsl/D8s4ADXN1tOMxVWPeUjCEDgwPkbmDbBicPNOUnKCOENCC1IzQnQ0K8BuiPFejbsvTpbAlQkyT3Xw9N+MJs/CbEnh3X8ywviMSOV2Pzk3j3BTANHWhd/hqI89o9jOVHD6B3VxIu04RjLoCiLy13rzLLcKX/Pbq2qQtsXYCXYiityCFd/O2IRhuR+qA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none X-Received: from DM6PR12MB3371.namprd12.prod.outlook.com (2603:10b6:5:116::27) by DM6PR12MB4926.namprd12.prod.outlook.com (2603:10b6:5:1bb::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.17; Thu, 9 Feb 2023 20:00:53 +0000 X-Received: from DM6PR12MB3371.namprd12.prod.outlook.com ([fe80::16b4:6123:2a9a:8355]) by DM6PR12MB3371.namprd12.prod.outlook.com ([fe80::16b4:6123:2a9a:8355%7]) with mapi id 15.20.6086.017; Thu, 9 Feb 2023 20:00:53 +0000 From: "Jeshua Smith via groups.io" To: "miki.demeter@intel.com" CC: "devel@edk2.groups.io" Subject: FW: [edk2-devel] [PATCH] MdeModulePkg: allow PlatformBootManagerLib to use BootNext Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg: allow PlatformBootManagerLib to use BootNext Thread-Index: AQHZLCyFFUH/0EdIn0Kgv2hFwtSKLq7HAM6A Date: Thu, 9 Feb 2023 20:00:53 +0000 Message-ID: References: <173BC657AC8EE47A.24231@groups.io> In-Reply-To: <173BC657AC8EE47A.24231@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR12MB3371:EE_|DM6PR12MB4926:EE_ x-ms-office365-filtering-correlation-id: 89c582e8-6060-4a3e-3400-08db0ad8597c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: Ys7n54lRpJYy/+q4d8Ff5I05Fz/MUmpsF+KSHUnuzAdp70Ujs0kb1br4VCaTWlms7Fg7VMWahR695MmWw+krJWlC7L/D7OazrUGh/o1IFkLHhDX3opONvvmqFGmg/ezwSAJRx+NTpcpXoMt9XZZGim7TKiiMp95R8HaIitudaEO6q7dH4xtnRaKfce0VbUdlMjJG29QfA8xH5l7rRCVVxNlbCzOKdoMCcHsUs/XCQWudMs5Fwjp/ePWLC3Wra3sIchFRbFzj4dXR4I7JEBsgxgPs1Oq4fCdBvPiByRmviiEqmobb6rJbj7DfRkD9tN4N1acKbO7DRKQIC/K92xqWcSbErzP09WV8OZXqK/sE59jAcNKrh+05pDCJazWpmfkMAufPlPRWXmQyP3QHgkDMLQKroHeBsw2K1WnyyRu4FmJD8BE0IDaeyIpbsYg5eS2uww/Crd89/pQGkTIMNQQyjaYagdXmLPSBEEk65xVkZIauSnpuw/v/1JPAonopEDwPvteeALeDmaopwLZK1hBBiCLlfQbUQnClHlgDy+BxSjH3zewlau3ejqVRuQ9Pz0zTzFzWnAYKNrcvFWo/UlQYjYeEB7ZBXoRJQ4CZfB1zGQqsYxHv9JRStbejiujQwfAAZWK+0RcQ+pPP7AiJUhaChpZg3hkVqf/U24v70XwP8ZTdReUFR41uDlRrm67rk2wA4Bx2B0VoA15ichE99yNUHeplp2on17p+/ZanS45oJ90= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?kYblnpMh2va15COU3fSfdJHWAQGoSSIO2vDk+/LJwvYZElh8/05IhGbUC4XE?= =?us-ascii?Q?yELcW1QFCPhfAFJPlXW73rvw8PxsSVgDzR8/BxI9D8Z1cd3VCEEbecKGZOCk?= =?us-ascii?Q?OlO/Tt5zENnWfeC7ycgKDXjgQ5ZLg83Q4axRSRMXzAOy8xE8E5DWVEib8WcL?= =?us-ascii?Q?RZrHxazRKM6osEz2k/EDHiFiV3DHxwYY/HDkwp2+kVE8eliSiK2pRjVamhEg?= =?us-ascii?Q?EIsvQn7pB/PqyM/nZb2Mn04zHLYbBjiJR+AADuB2pNhUuLSveX5CwY/iYTL5?= =?us-ascii?Q?tsbEenMsgWEUc0HbbYMqTI4WrlUmU2a3thGpMSW3Z2z3NqXpckYLA8oo7sTS?= =?us-ascii?Q?ktP03aPfRePuMnalz88X2Z5FQdWS4/Su3y8n08LtPRcdshoi5SVLOPJTRXVT?= =?us-ascii?Q?QvfP6qD00TUe43AJyNpu6sepbq93uxn94hnO31gzWthJluk+YqcmPjxbdRHY?= =?us-ascii?Q?nNjeo9LkI8xqCEU/glWOeCX3b9cycWG7oEis2pLi6mSJOTiiDxjLOAXN0rQL?= =?us-ascii?Q?SUS/ufaeDOraXPzKzm9DpIdOFlO938PQZyNkBJPcBmwm5lvxo1euhnIfEr/z?= =?us-ascii?Q?W+njSegQfb4Pe+9SVCuXNeBQSV7dVxl2EbBiwTFIQN92YxNxN2TkGqNFVO+1?= =?us-ascii?Q?r2Bpgao/8xDL993pk7imOpUSaTWKQxvd9QzTWowiZvc97ryeZsSM9rtKHkvN?= =?us-ascii?Q?jOBGLkW6SORn4X5ShAhUoVFlq15hlNnOtZ+4myOhqIxUeWv2XgBKhV3wsOCi?= =?us-ascii?Q?DK17ZgCMmVABTAGi2qtTIntDKn93V23lkOaA17tZhVWY5ziSuqDnIusM3WFN?= =?us-ascii?Q?ca4bqiBzMyUznHfKnGk8gyp6W+rFRlMgKzV7AM3OdE4M3uapkthxUtqMbBWp?= =?us-ascii?Q?XfcE86FxGcRf2gQkTkQ3sKL59TwTDndQc9h9jojFn+jUKuYMMRCkJ8RClcWu?= =?us-ascii?Q?sRptIcm3RD+4pPusPWX7FAiH5z0kHbcIJWp1x5tOaV6CNnCDYDkA4k6zLmTM?= =?us-ascii?Q?R1c5z/HskxUt4Dsu67fvu6XGiNRcuo73mkTKYcSa6O6izOaS+5X4JPoflp9u?= =?us-ascii?Q?eBo0Niu0v7xT8UgzyRI9SQKo0M+SoFCFZT83qEK13yFWIi/B6+O7ifeKl1uE?= =?us-ascii?Q?YFBIhOavtt7PBS2BpigJvwPqcfLoxIfM3flk4Wcg2NlRwi5/yL1sgMeeNbvl?= =?us-ascii?Q?DQJUhuBN54t5EsnMVG92feVkVN/omd2ZHFqAX+8VAY3rWjRNLU2sUrxN0SI2?= =?us-ascii?Q?pC1Q4oAHijvWAK6IBwhqsi8nM7xcDvRllsKkzC81gy6aXjkfSbWpkd4069Oh?= =?us-ascii?Q?hRMfaNX++DO0lTHCoyUGi31OHfQ7QEb993GGyXEG4EB9qIDj02eeixCgCGei?= =?us-ascii?Q?qA471E5Y4ps+i0gwnE+bhAw0zeLS7+JTfDrnhiE02p7fqLNK+sVrfKxJHN4w?= =?us-ascii?Q?BbuyjoXgtgJTvaKt8TYid0M0mn2FEfExosBo18W1HEmiGrpJumqGRw1MD5AR?= =?us-ascii?Q?usH8M8KlRkkErwN96LHEpR/pNWiOuZNbSiD6J4r4nGPV9f+dSkA24QmnfsfF?= =?us-ascii?Q?6v7s0HES8tsr1Al70kZipGDppx3JeJvweSu5n6A1?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB3371.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89c582e8-6060-4a3e-3400-08db0ad8597c X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Feb 2023 20:00:53.3426 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mNjCfi6EpayIhD/dA3kaDP0vUTwH5T+d+vEMo+VtYCml5zHX7Dsa2aJl3CGlHbAuvi4pXG/AhOLIs7e6h7UBow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4926 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,jeshuas@nvidia.com X-Gm-Message-State: GT2r3pnwluOJ6XP7NJJTwospx1787277AA= Content-Language: en-US Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675972856; bh=NCiV8QpPDLBFbphqzPaIAtSG99ON2DkI57zKDaYqX1E=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=uHayeLSwTwIEMTuZqiaKO/E5zFHJk0pE7HtueYjEcujdbXYIVGKWM9uvbP4sUJ8R97v zAGp2wmofMp0xWyoaPsNBBKEMoaVDNpSGrwIp2/QbKLzaANvYm9vGf8hLstbYMw+hT7Jf CsLtTt1/EnV7bgisjK4PVBps1TNnPzwfOD8= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675972857962100001 Content-Type: text/plain; charset="utf-8" Miki, this patch, as well as my queries on the mailing list about this topi= c prior to the patch, hasn't received any response on the mailing list. One= kind person did respond privately with some information about my questions. -----Original Message----- From: devel@edk2.groups.io On Behalf Of Jeshua Smith= via groups.io Sent: Thursday, January 19, 2023 10:36 AM To: devel@edk2.groups.io Cc: jian.j.wang@intel.com; gaoliming@byosoft.com.cn; zhichao.gao@intel.com;= ray.ni@intel.com; Jeshua Smith Subject: [edk2-devel] [PATCH] MdeModulePkg: allow PlatformBootManagerLib to= use BootNext External email: Use caution opening links or attachments Currently BdsEntry caches BootNext before calling PlatformBootManagerLib AP= Is, with the result that: - If BootNext is already set, a BootNext value written by the APIs will be = ignored and deleted, and the current boot will use the cached BootNext valu= e. - If BootNext is not present, a BootNext value written by the APIs will hav= e no effect on the current boot, but will be used by the next boot. This patch adds PcdAllowBootNextFromPlatformBootManagerLib so that a platfo= rm can enable PlatformBootManagerLib API calls to set BootNext to control t= he current boot. - If the PCD is FALSE (default), there is no change. - If the PCD is TRUE, then a BootNext value written by the PlatformBootMana= gerLib APIs will affect the current boot. Signed-off-by: Jeshua Smith --- MdeModulePkg/MdeModulePkg.dec | 7 +++++ MdeModulePkg/Universal/BdsDxe/BdsDxe.inf | 27 ++++++++++--------- MdeModu= lePkg/Universal/BdsDxe/BdsEntry.c | 34 ++++++++++++++++++------ 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec = index 9605c617b7..0e74131712 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -1093,6 +1093,13 @@ # @Prompt Enable UEFI Stack Guard. gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard|FALSE|BOOLEAN|0x30001055 + ## Indicates whether PlatformBootManagerLib code can set BootNext for th= e current boot. + # If enabled, setting BootNext in PlatformBootManagerLib controls the c= urrent boot.

+ # TRUE - BootNext value from PlatformBootManagerLib will affect the c= urrent boot.
+ # FALSE - BootNext value from PlatformBootManagerLib will affect the s= ubsequent boot (or be ignored if already set).
+ # @Prompt Allow PlatformBootManagerLib to set BootNext for the current b= oot. + =20 + gEfiMdeModulePkgTokenSpaceGuid.PcdAllowBootNextFromPlatformBootManager + Lib|FALSE|BOOLEAN|0x30001056 + [PcdsFixedAtBuild, PcdsPatchableInModule] ## Dynamic type PCD can be registered callback function for Pcd setting = action. # PcdMaxPeiPcdCallBackNumberPerPcdEntry indicates the maximum number of= callback function diff --git a/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf b/= MdeModulePkg/Universal/BdsDxe/BdsDxe.inf index 5bac635def..b7a3560f5f 100644 --- a/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf +++ b/MdeModulePkg/Universal/BdsDxe/BdsDxe.inf @@ -85,19 +85,20 @@ gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSU= MES [Pcd] - gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangCodes ## C= ONSUMES - gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLang ## S= OMETIMES_CONSUMES - gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLangCodes ## C= ONSUMES - gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang ## C= ONSUMES - gEfiMdePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel ## C= ONSUMES - gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut ## C= ONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor ## C= ONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareRevision ## C= ONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand ## C= ONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable ## S= OMETIMES_CONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed ## C= ONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleOnDiskSupport ## C= ONSUMES - gEfiMdeModulePkgTokenSpaceGuid.PcdPlatformRecoverySupport ## C= ONSUMES + gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangCodes = ## CONSUMES + gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLang = ## SOMETIMES_CONSUMES + gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLangCodes = ## CONSUMES + gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang = ## CONSUMES + gEfiMdePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel = ## CONSUMES + gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut = ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor = ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareRevision = ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand = ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable = ## SOMETIMES_CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed = ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleOnDiskSupport = ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdPlatformRecoverySupport = ## CONSUMES + =20 + gEfiMdeModulePkgTokenSpaceGuid.PcdAllowBootNextFromPlatformBootManager + Lib ## CONSUMES [Depex] TRUE diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Univer= sal/BdsDxe/BdsEntry.c index 766dde3aae..6450406cce 100644 --- a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c +++ b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c @@ -787,15 +787,19 @@ BdsEntry ( // // Cache the "BootNext" NV variable before calling any PlatformBootManag= erLib APIs - // This could avoid the "BootNext" set by PlatformBootManagerLib be cons= umed in this boot. - // - GetEfiGlobalVariable2 (EFI_BOOT_NEXT_VARIABLE_NAME, (VOID **)&BootNext, = &DataSize); - if (DataSize !=3D sizeof (UINT16)) { - if (BootNext !=3D NULL) { - FreePool (BootNext); - } + // if the Platform isn't allowed to override BootNext. + // If "BootNext" was already set, a "BootNext" value set in=20 + PlatformBootManagerLib APIs // will be ignored; otherwise it will not ta= ke effect until the next boot. + // + if (!PcdGetBool (PcdAllowBootNextFromPlatformBootManagerLib)) { + GetEfiGlobalVariable2 (EFI_BOOT_NEXT_VARIABLE_NAME, (VOID **)&BootNext= , &DataSize); + if (DataSize !=3D sizeof (UINT16)) { + if (BootNext !=3D NULL) { + FreePool (BootNext); + } - BootNext =3D NULL; + BootNext =3D NULL; + } } // @@ -1048,6 +1052,20 @@ BdsEntry ( EfiBootManagerHotkeyBoot (); + // + // If PlatformBootManagerLib APIs are allowed to override BootNext, re= ad it just before use + // + if (PcdGetBool (PcdAllowBootNextFromPlatformBootManagerLib)) { + GetEfiGlobalVariable2 (EFI_BOOT_NEXT_VARIABLE_NAME, (VOID **)&BootNe= xt, &DataSize); + if (DataSize !=3D sizeof (UINT16)) { + if (BootNext !=3D NULL) { + FreePool (BootNext); + } + + BootNext =3D NULL; + } + } + if (BootNext !=3D NULL) { // // Delete "BootNext" NV variable before transferring control to it t= o prevent loops. -- 2.17.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99929): https://edk2.groups.io/g/devel/message/99929 Mute This Topic: https://groups.io/mt/96861530/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-