From nobody Wed May 15 20:39:49 2024 Delivered-To: importer@patchew.org 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+110064+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 1698261933515979.6935117197335; Wed, 25 Oct 2023 12:25:33 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=Fd8LXK7W41MVKMVDQZRsH8RjsxSBiIeAQ2bFjVWj1bc=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:Received-SPF:From:To:CC:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1698261933; v=1; b=q38Vh/udsR4FrAx1xBMlqcd3vCvlbYP1e8QR1Ni8f/fZiQm342lOSZXP+ZyFpa47F+DHdD/q /72la+ouoWV963X4u49Pvy51AerPo1u2ehBBQKg5bU/4JeQXut63ZG1nknWGtIv3AfstqDdQNFd 2cPzBW1qum69/uz6/UctL6Yw= X-Received: by 127.0.0.2 with SMTP id O7wkYY1788612xTRrqPRqEH3; Wed, 25 Oct 2023 12:25:33 -0700 X-Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.79]) by mx.groups.io with SMTP id smtpd.web11.52961.1698261930973863477 for ; Wed, 25 Oct 2023 12:25:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gyHwSbX6g+aW3E7BD1LpOiIYmxCDGP7jKgfJH84QmGbYLyOIO/Cj51gNRG9Ua14cBxJ6nGM2c3UDuHz+Yzyeqxe+nsdwNM883p4K+FLByUZd/K0QZXS+wEXK0dYCnJ00uNqJPzZC4pKnk4d82MF5Kk5IOIBowWMZKNAh2AED++8Tr5XkBj1pP/qYFoLm/BcVjllSLiJGRRkzSxGUVwMna77NXLEsjMBYJF4kS1gDsrS3TvyFi5c1Rz91O95my4/Mh6Lv3EKHyo4uYGvmTG5+w1RlfzEsKOF+wDFBc7Zx8+lVhO54JBbgTWxuAWGVKIlo5MDbhDUJWe7LHpkzbNoOPA== 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=H0uJ1YL8zi6nFLPpdgvUzGHSaNQ90+TqeshRy0JTlro=; b=jsbr72AxRF4u/mzDygtXje7y2rWwAHtCvp7WORgS0aNU48RJH2nd1VwSo996NGkv/K8zml9k+Xat2CsGHpaUMLipSMdBA9K62APPQ1Njiib1nqTO6hg638W2/SiLBEisC7SvhLvTzao0lOPkf19NK+F5Rh8jZgNwSv9ZEZo/adzaX83b2zUphqPKLcb0fbr6aKaue3LGhu3wSDFlF2hRmmM+gr3Xr8NI3D778DNTBvbCLqL8uQqOYdf+BBVvktUmfq/QP5J/Ai9oSTWaJrq+KXVfysQ02aRwRELQ+/4u2qG2etDp6JltbJs1ZIGXrSVM9py1JMdTHNJxzuVgzCsfhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) X-Received: from BL1PR13CA0407.namprd13.prod.outlook.com (2603:10b6:208:2c2::22) by IA0PR12MB8975.namprd12.prod.outlook.com (2603:10b6:208:48f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.29; Wed, 25 Oct 2023 19:25:28 +0000 X-Received: from MN1PEPF0000F0E3.namprd04.prod.outlook.com (2603:10b6:208:2c2:cafe::68) by BL1PR13CA0407.outlook.office365.com (2603:10b6:208:2c2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.16 via Frontend Transport; Wed, 25 Oct 2023 19:25:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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+110064+1787277+3901457@groups.io; helo=mail02.groups.io; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C X-Received: from SATLEXMB04.amd.com (165.204.84.17) by MN1PEPF0000F0E3.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6933.15 via Frontend Transport; Wed, 25 Oct 2023 19:25:28 +0000 X-Received: from localhost.localdomain (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 25 Oct 2023 14:25:27 -0500 From: "Hsueh, Hong-Chih (Neo) via groups.io" To: CC: , , , "Neo Hsueh" Subject: [edk2-devel] [PATCH] FatPkg/FatPei: FatPei should use both BlockIo and BlockIo2 PPI while searching for recovery capsule Date: Wed, 25 Oct 2023 14:23:00 -0500 Message-ID: MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E3:EE_|IA0PR12MB8975:EE_ X-MS-Office365-Filtering-Correlation-Id: 66a11f36-93d6-43cc-bd89-08dbd5902555 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: f1y+EOSTwwK1TOvwHyAlAKoh7RgE4vy8mBAmLKKORO8+1+lEjOxHxHhYJbDWGnT5qF6sSHxp9KjLnkMbbd8YnfiC/r5IcRN1gO4Def1xmbdXgZnMiDllSRloFezN6YkkuyWIzzhqkHG+Ye1Td4M5s6KILY3Cm3dry3VRg2CqZKWCl7/w0vlcOV3Rx0Sbd5xvppDhpNp39J1VtbT7a2jpof5eMLG3Moxy18gfNitU3pjRkdOI17qzKRqC9+lCKFIo51bWwf830ToshuS/zlh40JGudA52qm/bwCZFBn2Uoyk/ZyUyxwo8lH6qHoVxN1j+tgFnZUM704H6JXarxXN/XAoX8lrwRRdCDJ4fC4yJIxgLaa4qzY0VnTDolGC2/Hy1x20WEDHp2gMAd49F+vS6Wh6rgYF9ifGrffGLiBpayb0m5RY7MoWqA8THczqVpCMWw/UqtoSjkuUpWxLBiBUkmZY7GcQo11QZI1lMXC94LAhUwA0Hbz9gF74IbXWqxDgUIyv9DG4fhGb63F2fJQCPSipa9BRf9iONAjuQA59BkVMXBk8JNXnmxNq51pdMxQ/IONS9TVnxV3ZAccfA95qYM3AUuHlSrLcuOVWAsqjTgecYyg8lHNOUL7eWD7GiBOl0m/ZWfK6D5Rctk5Eq668vHTm1Dmxzfv6r4oDWbOD0QkHTuigQkJvjMP4OUtlV+wXNr0OdlY7k17delIAkAPic8Q6yJXVQwRtecNbMaXd4NcEFDyREPmrwdqeRxfuPkISx+3LdD2IyOB47vcnx6csQVm7RNEaiEx/BafbbKj7A60s= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2023 19:25:28.0971 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66a11f36-93d6-43cc-bd89-08dbd5902555 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000F0E3.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8975 Precedence: Bulk 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,hong-chih.hsueh@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: brv0i9vQ9FT58mQS6UfRV8otx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1698261933930100001 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4571 Utilize both PeiVirtualBlockIo and PeiVirtualBlockIo2 PPI while searching f= or recovery capsule from storage devices Cc: Jiangang He Cc: Abner Chang Signed-off-by: Neo Hsueh --- FatPkg/FatPei/FatLiteApi.c | 141 ++++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 63 deletions(-) diff --git a/FatPkg/FatPei/FatLiteApi.c b/FatPkg/FatPei/FatLiteApi.c index cc48c4c66b..19fcd6f56b 100644 --- a/FatPkg/FatPei/FatLiteApi.c +++ b/FatPkg/FatPei/FatLiteApi.c @@ -2,6 +2,7 @@ FAT recovery PEIM entry point, Ppi Functions and FAT Api functions. =20 Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
+Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.
=20 SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -45,13 +46,13 @@ BlockIoNotifyEntry ( **/ EFI_STATUS UpdateBlocksAndVolumes ( - IN OUT PEI_FAT_PRIVATE_DATA *PrivateData, - IN BOOLEAN BlockIo2 + IN OUT PEI_FAT_PRIVATE_DATA *PrivateData ) { EFI_STATUS Status; EFI_PEI_PPI_DESCRIPTOR *TempPpiDescriptor; UINTN BlockIoPpiInstance; + UINTN BlockIo2PpiInstance; EFI_PEI_RECOVERY_BLOCK_IO_PPI *BlockIoPpi; EFI_PEI_RECOVERY_BLOCK_IO2_PPI *BlockIo2Ppi; UINTN NumberBlockDevices; @@ -78,21 +79,12 @@ UpdateBlocksAndVolumes ( // Assuming all device Block Io Peims are dispatched already // for (BlockIoPpiInstance =3D 0; BlockIoPpiInstance < PEI_FAT_MAX_BLOCK_IO= _PPI; BlockIoPpiInstance++) { - if (BlockIo2) { - Status =3D PeiServicesLocatePpi ( - &gEfiPeiVirtualBlockIo2PpiGuid, - BlockIoPpiInstance, - &TempPpiDescriptor, - (VOID **)&BlockIo2Ppi - ); - } else { - Status =3D PeiServicesLocatePpi ( - &gEfiPeiVirtualBlockIoPpiGuid, - BlockIoPpiInstance, - &TempPpiDescriptor, - (VOID **)&BlockIoPpi - ); - } + Status =3D PeiServicesLocatePpi ( + &gEfiPeiVirtualBlockIoPpiGuid, + BlockIoPpiInstance, + &TempPpiDescriptor, + (VOID **)&BlockIoPpi + ); =20 if (EFI_ERROR (Status)) { // @@ -101,57 +93,85 @@ UpdateBlocksAndVolumes ( break; } =20 - if (BlockIo2) { - Status =3D BlockIo2Ppi->GetNumberOfBlockDevices ( - PeiServices, - BlockIo2Ppi, - &NumberBlockDevices - ); - } else { - Status =3D BlockIoPpi->GetNumberOfBlockDevices ( + Status =3D BlockIoPpi->GetNumberOfBlockDevices ( + PeiServices, + BlockIoPpi, + &NumberBlockDevices + ); + + if (EFI_ERROR (Status)) { + continue; + } + + for (Index =3D 1; Index <=3D NumberBlockDevices && PrivateData->BlockD= eviceCount < PEI_FAT_MAX_BLOCK_DEVICE; Index++) { + Status =3D BlockIoPpi->GetBlockDeviceMediaInfo ( PeiServices, BlockIoPpi, - &NumberBlockDevices + Index, + &Media ); + if (EFI_ERROR (Status) || !Media.MediaPresent) { + continue; + } + + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo = =3D BlockIoPpi; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].DevType = =3D Media.DeviceType; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = =3D Media.LastBlock; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = =3D (UINT32)Media.BlockSize; + + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].IoAlign =3D = 0; + // + // Not used here + // + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].Logical = =3D FALSE; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PartitionChe= cked =3D FALSE; + + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PhysicalDevN= o =3D (UINT8)Index; + PrivateData->BlockDeviceCount++; } + } + + for (BlockIo2PpiInstance =3D 0; BlockIo2PpiInstance + BlockIoPpiInstance= < PEI_FAT_MAX_BLOCK_IO_PPI; BlockIo2PpiInstance++) { + Status =3D PeiServicesLocatePpi ( + &gEfiPeiVirtualBlockIo2PpiGuid, + BlockIo2PpiInstance, + &TempPpiDescriptor, + (VOID **)&BlockIo2Ppi + ); =20 if (EFI_ERROR (Status)) { - continue; + // + // Done with all Block Io Ppis + // + break; } =20 - for (Index =3D 1; Index <=3D NumberBlockDevices && PrivateData->BlockD= eviceCount < PEI_FAT_MAX_BLOCK_DEVICE; Index++) { - if (BlockIo2) { - Status =3D BlockIo2Ppi->GetBlockDeviceMediaInfo ( - PeiServices, - BlockIo2Ppi, - Index, - &Media2 - ); - if (EFI_ERROR (Status) || !Media2.MediaPresent) { - continue; - } + Status =3D BlockIo2Ppi->GetNumberOfBlockDevices ( + PeiServices, + BlockIo2Ppi, + &NumberBlockDevices + ); =20 - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo2 = =3D BlockIo2Ppi; - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].InterfaceT= ype =3D Media2.InterfaceType; - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = =3D Media2.LastBlock; - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = =3D Media2.BlockSize; - } else { - Status =3D BlockIoPpi->GetBlockDeviceMediaInfo ( - PeiServices, - BlockIoPpi, - Index, - &Media - ); - if (EFI_ERROR (Status) || !Media.MediaPresent) { - continue; - } + if (EFI_ERROR (Status)) { + continue; + } =20 - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo = =3D BlockIoPpi; - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].DevType = =3D Media.DeviceType; - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = =3D Media.LastBlock; - PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = =3D (UINT32)Media.BlockSize; + for (Index =3D 1; Index <=3D NumberBlockDevices && PrivateData->BlockD= eviceCount < PEI_FAT_MAX_BLOCK_DEVICE; Index++) { + Status =3D BlockIo2Ppi->GetBlockDeviceMediaInfo ( + PeiServices, + BlockIo2Ppi, + Index, + &Media2 + ); + if (EFI_ERROR (Status) || !Media2.MediaPresent) { + continue; } =20 + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo2 = =3D BlockIo2Ppi; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].InterfaceTyp= e =3D Media2.InterfaceType; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = =3D Media2.LastBlock; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = =3D Media2.BlockSize; + PrivateData->BlockDevice[PrivateData->BlockDeviceCount].IoAlign =3D = 0; // // Not used here @@ -217,11 +237,7 @@ BlockIoNotifyEntry ( IN VOID *Ppi ) { - if (CompareGuid (NotifyDescriptor->Guid, &gEfiPeiVirtualBlockIo2PpiGuid)= ) { - UpdateBlocksAndVolumes (mPrivateData, TRUE); - } else { - UpdateBlocksAndVolumes (mPrivateData, FALSE); - } + UpdateBlocksAndVolumes (mPrivateData); =20 return EFI_SUCCESS; } @@ -295,8 +311,7 @@ FatPeimEntry ( // PrivateData->BlockDeviceCount =3D 0; =20 - UpdateBlocksAndVolumes (PrivateData, TRUE); - UpdateBlocksAndVolumes (PrivateData, FALSE); + UpdateBlocksAndVolumes (PrivateData); =20 // // PrivateData is allocated now, set it to the module variable --=20 2.40.0.windows.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 (#110064): https://edk2.groups.io/g/devel/message/110064 Mute This Topic: https://groups.io/mt/102185681/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-