From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web12.5684.1624844270362723534 for ; Sun, 27 Jun 2021 18:37:50 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=ukDzGTvL; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: chasel.chiu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10028"; a="195022590" X-IronPort-AV: E=Sophos;i="5.83,304,1616482800"; d="scan'208";a="195022590" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jun 2021 18:37:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,304,1616482800"; d="scan'208";a="456121873" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga008.fm.intel.com with ESMTP; 27 Jun 2021 18:37:49 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Sun, 27 Jun 2021 18:37:48 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Sun, 27 Jun 2021 18:37:48 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.175) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Sun, 27 Jun 2021 18:37:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=as1cjAfITuGw+S0SE8sNzw/zJEoYYeYi6ImaZyZI4VlfRT3UtOIbcUpgyCIpCY4V9IiPI0fs2fotI+H+VYP9Yqvy3lxZDDBLSVzFi1UTgHo3wcy64wisdAWHM3Q+gn9XBDNAY9bpuFDA1Fxk7wLrCkqPxK0uQIL+kLj71/tJChm9JgSSCprQOg6CCvomKCs1pOXZWCJzA11uneLJV+6F5Fghdwsp+rzF55TZkku+iv527MqOBb7lqD0TSw7Tpj/p54Cq+d/7+nNgE6/nG9z3AWLb3kFKCfz70CToG9w9DNU7HAZwM8nrD7mcZJ3V5S2/2slGC5fQ7SncrBqE/+IBKg== 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=uEQ/NjhzsGjxTgcN7f0kfiXdYQlYPHctN7Rq8PHWduA=; b=SQc27FLicFYZ0pj0iDEdtED/GZxY0DD03v2LThQWjWUgNddXr6o7k8xdKpowbntoktVNVKKZU0c5UauPUZ7k81L/GlZyQxjHrYVOpNmRG7+44x71NBcXWTs+DCLN5FSrL/TfQtVGQI2aY4v5E5MJ7vm1wC0F7r/krJO+Y/uQgTueI7ORNGq5Qrbv8AfPM1s3DxMX0maL2WjJzI5EzjeC661mgBzxggED1oXUWWmylyDHAU9Z6XBM/npKIfAlfm6JAsqe9qgyOMCg+e0XCXdu54qXXLu6/V+XmxeIdDoKzH/8tp/YxrJgP6ZgfP8Iww1kG6e7SJFSjiy7mP+8UvzH8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uEQ/NjhzsGjxTgcN7f0kfiXdYQlYPHctN7Rq8PHWduA=; b=ukDzGTvL9Tavu9C+s7pjQRR7qbekixZmEuwG8zjyiwUkZFzf84PmlZptNZDIf01hKK2nBP7OulibYZ4N+XmKw65FQgoKa2In5obQvhhM9oH4TMWK1SMB/syKIcfHuIXdFfBo2bCroAaPcH+5YotGEgBs2FC3UPyfuCEZxEVn61I= Received: from BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by BN6PR11MB3858.namprd11.prod.outlook.com (2603:10b6:405:7e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.26; Mon, 28 Jun 2021 01:37:45 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::2162:be61:a479:4168]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::2162:be61:a479:4168%7]) with mapi id 15.20.4264.026; Mon, 28 Jun 2021 01:37:45 +0000 From: "Chiu, Chasel" To: "devel@edk2.groups.io" , "mikuback@linux.microsoft.com" CC: "Desimone, Nathaniel L" , Liming Gao , "Dong, Eric" Subject: Re: [edk2-devel] [edk2-platforms][PATCH v4 25/41] MinPlatformPkg: Remove SpiFvbService modules Thread-Topic: [edk2-devel] [edk2-platforms][PATCH v4 25/41] MinPlatformPkg: Remove SpiFvbService modules Thread-Index: AQHXaghGbfstjgCq40G6L83avxl9J6soqElA Date: Mon, 28 Jun 2021 01:37:45 +0000 Message-ID: References: <20210625212120.235-1-mikuback@linux.microsoft.com> <20210625212120.235-26-mikuback@linux.microsoft.com> In-Reply-To: <20210625212120.235-26-mikuback@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [114.43.34.211] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7121d134-24bf-46e5-d0e9-08d939d5547b x-ms-traffictypediagnostic: BN6PR11MB3858: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QoIrznfHtw4s1/fIduIxU6IR3B3x+KJUGuAtO7Tj6EhKaCLoHkmRLyHET4f+nyVp6hCTy+BC1xOZmkTPqEdjivGkj35loi2b/88k3eShFORVPDrl7y6imsyTsqFuhW6wOuqudV43WaA54qmLIuu0rowJqE9iUzenf5CVh/A/oNQARUUg+yqHIwt/gNPRiYelTGhGPMbZn7bIEIhb8KmAVTsTxAgh4FvJaZwaykpcg+k3AGBJbFy1JhiNpk0bJC4BNF8QcID2VPc/9AgoOgOcX56JI1EY42pL8QWk2sZBATQXAuzijkEWDxRm1eO/V+tOyYYa/+Mw5nU03RwJUpRGmqxStV0l5quLfhB5dwFrBhyFYUUadevAO2877smbEl5lWP4Y6rVVNwtfiGcI4PXUFpuOu6KsnxiQWCGqww2wYOj0jloPKpvrqCgo2LOxA7wPwim0GJleJhwxh0PvS9hsaj+iBVjU5Fye19UvxIoZAKEi2PiCYmpRNhuUf1AFq+TrSHNkb9EbYtRAvKQb3mYUcdWaEROPTzHH2yOm1d+vXwJ1y6k21y6/cJtVg09MtoE/GIHr9AcKOrDgMbGFpzkNOMxNG82Ye+0poMPNjjSmmDrckM0GXTG7lY8SDU2O8I0r10wANra/nFGC7a+dlyFeMfUOalC+UbeAZ76EC/Celupj466BOFhn2dyKOmUj/ozMbAYOJYnJTUkju0uZCzXxZPVNiUEURH5ejOtslf+irVwDChq3uvOROTEVOFD6mCaLKztBaI9OuOppdwrDwjNFDmnXfYpL2oqjPPH3FmLXwBgSTpVt0hqHIbincYPWTAEz x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5483.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(39860400002)(396003)(346002)(376002)(136003)(366004)(122000001)(52536014)(966005)(71200400001)(38100700002)(55016002)(9686003)(316002)(8936002)(4326008)(6506007)(53546011)(107886003)(8676002)(7696005)(2906002)(64756008)(83380400001)(19627235002)(33656002)(186003)(478600001)(54906003)(45080400002)(110136005)(86362001)(30864003)(26005)(66946007)(66476007)(66446008)(76116006)(66556008)(5660300002)(11716005)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?DxnkRhW8PoYTB9NwH7CRrZ3lCMxD+sK+ajObZhUtdJlrnyvdgncUx2E+1eye?= =?us-ascii?Q?46D8p1VcsZ2CXmL0YX0cB151ZDROJo6u0s8lWX64COJJ+LKuSsiuW8ytrOVg?= =?us-ascii?Q?OceTIiPNf797yvp4jxvExKJrzVVcrKcLU+4SqvwEga4+4xm1how+JQmWZFsg?= =?us-ascii?Q?OTR9G6M0RoA7bfvInZNgwsiokOdMgDqWA/IQ+i2C2EwFI8+0yOr85HqgANpq?= =?us-ascii?Q?faV64nAvA51se2A6VSM4usmfZdXnb7vC6PqaMP7FkP2Frhn8nNHDQGbOecwz?= =?us-ascii?Q?OaOcMCyOQXHUeXuURptuhTOPu1n1dneff1O2eV21ipricD2ucVEzNoT5mrHu?= =?us-ascii?Q?TSHiwvr06sqqUPGsBu+oMJV8KPNIGLSBkfGM3qxX5/ESlEz3loVe++RQRNxs?= =?us-ascii?Q?zBD7tHsAcdeqfqv95LwPeGCU1G5VZ92+GnO0B04QLbKDPkCaMpVEFFOQNE/Y?= =?us-ascii?Q?HGcQvYbEDWkmYOj3PYaoGe9ukt6f6eRrDTFZnKHlkiUlBuEuGnXj5K5tbDZ2?= =?us-ascii?Q?M+XiEajbQW8eJ6naa19ESMkYp6feyrvTpY7mFApeOaB0o6jFvU0At0VD0mT8?= =?us-ascii?Q?kPdUmuoe8b1C0d08G3ozO2PPklJdCTA5me2XNsRUwhM9EfmcDZ7YUIVszHU9?= =?us-ascii?Q?k0WheNKZ1Yy8cx/JI9lRLlQbe689MMq52TVcUC79cpERmhph7jB9c4BurSDL?= =?us-ascii?Q?xLcfNqiYOpZoGorqVceGnsvZExomn9zKgJcfIirfpGeVJ0YC7pfYqR1vvqLm?= =?us-ascii?Q?ok8FnMLRL5et9Yc7bnsWjgXkrzvsEdakUzE/VeJTJMfvBoPqqGjaZP36+EyM?= =?us-ascii?Q?BiM2XEN0eiKnnbnnGz8yGdytuP8uKRJuWpqHFu3BZf9Lu9AAneRNVIL1RnbO?= =?us-ascii?Q?m2atARaYlld7L/pldOeF2yTJSI55tTHmD/Y63rm8Cn14HoZVcyNr64MijmWO?= =?us-ascii?Q?+mboY01v6e9ySC7DFWUEGG5J4AiYtWHfTStnRdui1eCF+tsv77mCG9jwAE5M?= =?us-ascii?Q?A4DAVNniZvGHEZ/eyxJp2UeHGWg8GpFZxpCXftJZFmBsct2MHUrCXpwt4qHd?= =?us-ascii?Q?62iJEfb7b3eYgzot85TXXHdwl5D+2GZe8jHcR8mWcJ8llSdGn6E1NaaLk2rW?= =?us-ascii?Q?tc4GBW8SvRrLKhRXzeOOH5Z+FP0ILGg9zkARA5GgQPMPoVTa0/R3CpUEzC2q?= =?us-ascii?Q?NEhnstuuNMzkZuSS79KCz+WI55Yg+obi/fQwWi5zmLgRCsFfngksgdDEb5DF?= =?us-ascii?Q?RfrBkZi54OnPJ619VzwDjfjw8g3/aCOFKXOUQXvVI8SzOoI8eqPpZfUzPJiy?= =?us-ascii?Q?GkmKxr0+kmr5B7HxVYHOFYOu?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7121d134-24bf-46e5-d0e9-08d939d5547b X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jun 2021 01:37:45.6370 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yyNBnvCE7iL2THfZ6ENHqHQtYJBsy5kxITFz8NqPRVJArPv3eHlvr+eE4L91SEzx2xZFQjpAkAyNLrSdMOhGxg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB3858 Return-Path: chasel.chiu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Chasel Chiu > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Michael > Kubacki > Sent: Saturday, June 26, 2021 5:21 AM > To: devel@edk2.groups.io > Cc: Chiu, Chasel ; Desimone, Nathaniel L > ; Liming Gao ; > Dong, Eric > Subject: [edk2-devel] [edk2-platforms][PATCH v4 25/41] MinPlatformPkg: > Remove SpiFvbService modules >=20 > From: Michael Kubacki >=20 > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3307 >=20 > SpiFvbServiceSmm and SpiFvbServiceStandaloneMm have moved to > IntelSiliconPkg. >=20 > Cc: Chasel Chiu > Cc: Nate DeSimone > Cc: Liming Gao > Cc: Eric Dong > Signed-off-by: Michael Kubacki > Reviewed-by: Nate DeSimone > Reviewed-by: Chasel Chiu > --- > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c = | 94 - > - > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c > | 903 -------------------- > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c > | 271 ------ >=20 > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalone= M > m.c | 32 - >=20 > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditiona= lM > m.c | 32 - > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h > | 158 ---- > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h > | 22 - > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf > | 68 -- >=20 > Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalone= M > m.inf | 67 -- > Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc = | 2 - > 10 files changed, 1649 deletions(-) >=20 > diff --git a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c > deleted file mode 100644 > index 7f2678fa9e5a..000000000000 > --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/FvbInfo.c > +++ /dev/null > @@ -1,94 +0,0 @@ > -/**@file > - Defines data structure that is the volume header found. > - These data is intent to decouple FVB driver with FV header. > - > -Copyright (c) 2017, Intel Corporation. All rights reserved.
> -SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include "SpiFvbServiceCommon.h" > - > -#define FIRMWARE_BLOCK_SIZE 0x10000 > -#define FVB_MEDIA_BLOCK_SIZE FIRMWARE_BLOCK_SIZE > - > -#define NV_STORAGE_BASE_ADDRESS > FixedPcdGet32(PcdFlashNvStorageVariableBase) > -#define SYSTEM_NV_BLOCK_NUM > ((FixedPcdGet32(PcdFlashNvStorageVariableSize)+ > FixedPcdGet32(PcdFlashNvStorageFtwWorkingSize) + > FixedPcdGet32(PcdFlashNvStorageFtwSpareSize))/ FVB_MEDIA_BLOCK_SIZE) > - > -typedef struct { > - EFI_PHYSICAL_ADDRESS BaseAddress; > - EFI_FIRMWARE_VOLUME_HEADER FvbInfo; > - EFI_FV_BLOCK_MAP_ENTRY End[1]; > -} EFI_FVB2_MEDIA_INFO; > - > -// > -// This data structure contains a template of all correct FV headers, wh= ich is > used to restore > -// Fv header if it's corrupted. > -// > -EFI_FVB2_MEDIA_INFO mPlatformFvbMediaInfo[] =3D { > - // > - // Systen NvStorage FVB > - // > - { > - NV_STORAGE_BASE_ADDRESS, > - { > - {0,}, //ZeroVector[16] > - EFI_SYSTEM_NV_DATA_FV_GUID, > - FVB_MEDIA_BLOCK_SIZE * SYSTEM_NV_BLOCK_NUM, > - EFI_FVH_SIGNATURE, > - 0x0004feff, // check MdePkg/Include/Pi/PiFirmwareVolume.h for deta= ils on > EFI_FVB_ATTRIBUTES_2 > - sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof > (EFI_FV_BLOCK_MAP_ENTRY), > - 0, //CheckSum which will be calucated dynamically. > - 0, //ExtHeaderOffset > - {0,}, //Reserved[1] > - 2, //Revision > - { > - { > - SYSTEM_NV_BLOCK_NUM, > - FVB_MEDIA_BLOCK_SIZE, > - } > - } > - }, > - { > - { > - 0, > - 0 > - } > - } > - } > -}; > - > -EFI_STATUS > -GetFvbInfo ( > - IN EFI_PHYSICAL_ADDRESS FvBaseAddress, > - OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo > - ) > -{ > - UINTN Index; > - EFI_FIRMWARE_VOLUME_HEADER *FvHeader; > - > - for (Index =3D 0; Index < sizeof (mPlatformFvbMediaInfo) / sizeof > (EFI_FVB2_MEDIA_INFO); Index++) { > - if (mPlatformFvbMediaInfo[Index].BaseAddress =3D=3D FvBaseAddress) { > - FvHeader =3D &mPlatformFvbMediaInfo[Index].FvbInfo; > - > - // > - // Update the checksum value of FV header. > - // > - FvHeader->Checksum =3D CalculateCheckSum16 ( (UINT16 *) FvHeader, > FvHeader->HeaderLength); > - > - *FvbInfo =3D FvHeader; > - > - DEBUG ((DEBUG_INFO, "BaseAddr: 0x%lx \n", FvBaseAddress)); > - DEBUG ((DEBUG_INFO, "FvLength: 0x%lx \n", (*FvbInfo)->FvLength)); > - DEBUG ((DEBUG_INFO, "HeaderLength: 0x%x \n", (*FvbInfo)- > >HeaderLength)); > - DEBUG ((DEBUG_INFO, "Header Checksum: 0x%X\n", (*FvbInfo)- > >Checksum)); > - DEBUG ((DEBUG_INFO, "FvBlockMap[0].NumBlocks: 0x%x \n", (*FvbInfo)= - > >BlockMap[0].NumBlocks)); > - DEBUG ((DEBUG_INFO, "FvBlockMap[0].BlockLength: 0x%x \n", (*FvbInf= o)- > >BlockMap[0].Length)); > - DEBUG ((DEBUG_INFO, "FvBlockMap[1].NumBlocks: 0x%x \n", (*FvbInfo)= - > >BlockMap[1].NumBlocks)); > - DEBUG ((DEBUG_INFO, "FvBlockMap[1].BlockLength: 0x%x \n\n", > (*FvbInfo)->BlockMap[1].Length)); > - > - return EFI_SUCCESS; > - } > - } > - return EFI_NOT_FOUND; > -} > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c > deleted file mode 100644 > index 113c749d04ff..000000000000 > --- > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.c > +++ /dev/null > @@ -1,903 +0,0 @@ > -/** @file > - Common driver source for several Serial Flash devices > - which are compliant with the Intel(R) Serial Flash Interface Compatibi= lity > Specification. > - > -Copyright (c) 2017, Intel Corporation. All rights reserved.
> -SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include "SpiFvbServiceCommon.h" > - > -// > -// Global variable for this FVB driver which contains > -// the private data of all firmware volume block instances > -// > -FVB_GLOBAL mFvbModuleGlobal; > - > -// > -// This platform driver knows there are multiple FVs on FD. > -// Now we only provide FVs on Variable region and MicorCode region for > performance issue. > -// > -FV_INFO mPlatformFvBaseAddress[] =3D { > - {0, 0}, // {FixedPcdGet32(PcdFlashNvStorageVariableBase), > FixedPcdGet32(PcdFlashNvStorageVariableSize)}, > - {0, 0}, // {FixedPcdGet32(PcdFlashFvMicrocodeBase), > FixedPcdGet32(PcdFlashFvMicrocodeSize)}, > - {0, 0} > -}; > - > -FV_INFO mPlatformDefaultBaseAddress[] =3D { > - {0, 0}, // {FixedPcdGet32(PcdFlashNvStorageVariableBase), > FixedPcdGet32(PcdFlashNvStorageVariableSize)}, > - {0, 0}, // {FixedPcdGet32(PcdFlashFvMicrocodeBase), > FixedPcdGet32(PcdFlashFvMicrocodeSize)}, > - {0, 0} > -}; > - > -FV_MEMMAP_DEVICE_PATH mFvMemmapDevicePathTemplate =3D { > - { > - { > - HARDWARE_DEVICE_PATH, > - HW_MEMMAP_DP, > - { > - (UINT8)(sizeof (MEMMAP_DEVICE_PATH)), > - (UINT8)(sizeof (MEMMAP_DEVICE_PATH) >> 8) > - } > - }, > - EfiMemoryMappedIO, > - (EFI_PHYSICAL_ADDRESS) 0, > - (EFI_PHYSICAL_ADDRESS) 0, > - }, > - { > - END_DEVICE_PATH_TYPE, > - END_ENTIRE_DEVICE_PATH_SUBTYPE, > - { > - END_DEVICE_PATH_LENGTH, > - 0 > - } > - } > -}; > - > -FV_PIWG_DEVICE_PATH mFvPIWGDevicePathTemplate =3D { > - { > - { > - MEDIA_DEVICE_PATH, > - MEDIA_PIWG_FW_VOL_DP, > - { > - (UINT8)(sizeof (MEDIA_FW_VOL_DEVICE_PATH)), > - (UINT8)(sizeof (MEDIA_FW_VOL_DEVICE_PATH) >> 8) > - } > - }, > - { 0 } > - }, > - { > - END_DEVICE_PATH_TYPE, > - END_ENTIRE_DEVICE_PATH_SUBTYPE, > - { > - END_DEVICE_PATH_LENGTH, > - 0 > - } > - } > -}; > - > -// > -// Template structure used when installing FVB protocol > -// > -EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL mFvbProtocolTemplate =3D { > - FvbProtocolGetAttributes, > - FvbProtocolSetAttributes, > - FvbProtocolGetPhysicalAddress, > - FvbProtocolGetBlockSize, > - FvbProtocolRead, > - FvbProtocolWrite, > - FvbProtocolEraseBlocks, > - NULL > -}; > - > -/** > - Get the EFI_FVB_ATTRIBUTES_2 of a FV. > - > - @param[in] FvbInstance The pointer to the EFI_FVB_INSTANCE. > - > - @return Attributes of the FV identified by FvbInstance. > - > -**/ > -EFI_FVB_ATTRIBUTES_2 > -FvbGetVolumeAttributes ( > - IN EFI_FVB_INSTANCE *FvbInstance > - ) > -{ > - return FvbInstance->FvHeader.Attributes; > -} > - > -/** > - Retrieves the starting address of an LBA in an FV. It also > - return a few other attribut of the FV. > - > - @param[in] FvbInstance The pointer to the EFI_FVB_INSTANCE. > - @param[in] Lba The logical block address > - @param[out] LbaAddress On output, contains the physical starting = address > - of the Lba > - @param[out] LbaLength On output, contains the length of the bloc= k > - @param[out] NumOfBlocks A pointer to a caller allocated UINTN in w= hich > the > - number of consecutive blocks starting with= Lba is > - returned. All blocks in this range have a = size of > - BlockSize > - > - @retval EFI_SUCCESS Successfully returns > - @retval EFI_INVALID_PARAMETER Instance not found > - > -**/ > -EFI_STATUS > -FvbGetLbaAddress ( > - IN EFI_FVB_INSTANCE *FvbInstance, > - IN EFI_LBA Lba, > - OUT UINTN *LbaAddress, > - OUT UINTN *LbaLength, > - OUT UINTN *NumOfBlocks > - ) > -{ > - UINT32 NumBlocks; > - UINT32 BlockLength; > - UINTN Offset; > - EFI_LBA StartLba; > - EFI_LBA NextLba; > - EFI_FV_BLOCK_MAP_ENTRY *BlockMap; > - > - StartLba =3D 0; > - Offset =3D 0; > - BlockMap =3D &(FvbInstance->FvHeader.BlockMap[0]); > - > - // > - // Parse the blockmap of the FV to find which map entry the Lba belong= s to > - // > - while (TRUE) { > - NumBlocks =3D BlockMap->NumBlocks; > - BlockLength =3D BlockMap->Length; > - > - if ( NumBlocks =3D=3D 0 || BlockLength =3D=3D 0) { > - return EFI_INVALID_PARAMETER; > - } > - > - NextLba =3D StartLba + NumBlocks; > - > - // > - // The map entry found > - // > - if (Lba >=3D StartLba && Lba < NextLba) { > - Offset =3D Offset + (UINTN)MultU64x32((Lba - StartLba), BlockLengt= h); > - if (LbaAddress ) { > - *LbaAddress =3D FvbInstance->FvBase + Offset; > - } > - > - if (LbaLength ) { > - *LbaLength =3D BlockLength; > - } > - > - if (NumOfBlocks ) { > - *NumOfBlocks =3D (UINTN)(NextLba - Lba); > - } > - return EFI_SUCCESS; > - } > - > - StartLba =3D NextLba; > - Offset =3D Offset + NumBlocks * BlockLength; > - BlockMap++; > - } > -} > - > -/** > - Reads specified number of bytes into a buffer from the specified block= . > - > - @param[in] FvbInstance The pointer to the EFI_FVB_INSTA= NCE > - @param[in] Lba The logical block address to be = read from > - @param[in] BlockOffset Offset into the block at which t= o begin > reading > - @param[in] NumBytes Pointer that on input contains t= he total size > of > - the buffer. On output, it contai= ns the total number > - of bytes read > - @param[in] Buffer Pointer to a caller allocated bu= ffer that will be > - used to hold the data read > - > - > - @retval EFI_SUCCESS The firmware volume was read suc= cessfully > and > - contents are in Buffer > - @retval EFI_BAD_BUFFER_SIZE Read attempted across a LBA boun= dary. > On output, > - NumBytes contains the total numb= er of bytes returned > - in Buffer > - @retval EFI_ACCESS_DENIED The firmware volume is in the > ReadDisabled state > - @retval EFI_DEVICE_ERROR The block device is not function= ing > correctly and > - could not be read > - @retval EFI_INVALID_PARAMETER Instance not found, or NumBytes, > Buffer are NULL > - > -**/ > -EFI_STATUS > -FvbReadBlock ( > - IN EFI_FVB_INSTANCE *FvbInstance, > - IN EFI_LBA Lba, > - IN UINTN BlockOffset, > - IN OUT UINTN *NumBytes, > - IN UINT8 *Buffer > - ) > -{ > - EFI_FVB_ATTRIBUTES_2 Attributes; > - UINTN LbaAddress; > - UINTN LbaLength; > - EFI_STATUS Status; > - BOOLEAN BadBufferSize =3D FALSE; > - > - if ((NumBytes =3D=3D NULL) || (Buffer =3D=3D NULL)) { > - return EFI_INVALID_PARAMETER; > - } > - if (*NumBytes =3D=3D 0) { > - return EFI_INVALID_PARAMETER; > - } > - > - Status =3D FvbGetLbaAddress (FvbInstance, Lba, &LbaAddress, &LbaLength= , > NULL); > - if (EFI_ERROR(Status)) { > - return Status; > - } > - > - Attributes =3D FvbGetVolumeAttributes (FvbInstance); > - > - if ((Attributes & EFI_FVB2_READ_STATUS) =3D=3D 0) { > - return EFI_ACCESS_DENIED; > - } > - > - if (BlockOffset > LbaLength) { > - return EFI_INVALID_PARAMETER; > - } > - > - if (LbaLength < (*NumBytes + BlockOffset)) { > - DEBUG ((DEBUG_INFO, > - "FvReadBlock: Reducing Numbytes from 0x%x to 0x%x\n", > - *NumBytes, > - (UINT32)(LbaLength - BlockOffset)) > - ); > - *NumBytes =3D (UINT32) (LbaLength - BlockOffset); > - BadBufferSize =3D TRUE; > - } > - > - Status =3D SpiFlashRead (LbaAddress + BlockOffset, (UINT32 *)NumBytes, > Buffer); > - > - if (!EFI_ERROR (Status) && BadBufferSize) { > - return EFI_BAD_BUFFER_SIZE; > - } else { > - return Status; > - } > -} > - > -/** > - Writes specified number of bytes from the input buffer to the block. > - > - @param[in] FvbInstance The pointer to the EFI_FVB_INSTANCE > - @param[in] Lba The starting logical block index to = write to > - @param[in] BlockOffset Offset into the block at which to be= gin writing > - @param[in] NumBytes Pointer that on input contains the t= otal size of > - the buffer. On output, it contains t= he total number > - of bytes actually written > - @param[in] Buffer Pointer to a caller allocated buffer= that contains > - the source for the write > - @retval EFI_SUCCESS The firmware volume was written succ= essfully > - @retval EFI_BAD_BUFFER_SIZE Write attempted across a LBA boundar= y. > On output, > - NumBytes contains the total number o= f bytes > - actually written > - @retval EFI_ACCESS_DENIED The firmware volume is in the WriteD= isabled > state > - @retval EFI_DEVICE_ERROR The block device is not functioning = correctly > and > - could not be written > - @retval EFI_INVALID_PARAMETER Instance not found, or NumBytes, Buf= fer > are NULL > - > -**/ > -EFI_STATUS > -FvbWriteBlock ( > - IN EFI_FVB_INSTANCE *FvbInstance, > - IN EFI_LBA Lba, > - IN UINTN BlockOffset, > - IN OUT UINTN *NumBytes, > - IN UINT8 *Buffer > - ) > -{ > - EFI_FVB_ATTRIBUTES_2 Attributes; > - UINTN LbaAddress; > - UINTN LbaLength; > - EFI_STATUS Status; > - BOOLEAN BadBufferSize =3D FALSE; > - > - if ((NumBytes =3D=3D NULL) || (Buffer =3D=3D NULL)) { > - return EFI_INVALID_PARAMETER; > - } > - if (*NumBytes =3D=3D 0) { > - return EFI_INVALID_PARAMETER; > - } > - > - Status =3D FvbGetLbaAddress (FvbInstance, Lba, &LbaAddress, &LbaLength= , > NULL); > - if (EFI_ERROR(Status)) { > - return Status; > - } > - > - // > - // Check if the FV is write enabled > - // > - Attributes =3D FvbGetVolumeAttributes (FvbInstance); > - if ((Attributes & EFI_FVB2_WRITE_STATUS) =3D=3D 0) { > - return EFI_ACCESS_DENIED; > - } > - > - // > - // Perform boundary checks and adjust NumBytes > - // > - if (BlockOffset > LbaLength) { > - return EFI_INVALID_PARAMETER; > - } > - > - if (LbaLength < (*NumBytes + BlockOffset)) { > - DEBUG ((DEBUG_INFO, > - "FvWriteBlock: Reducing Numbytes from 0x%x to 0x%x\n", > - *NumBytes, > - (UINT32)(LbaLength - BlockOffset)) > - ); > - *NumBytes =3D (UINT32) (LbaLength - BlockOffset); > - BadBufferSize =3D TRUE; > - } > - > - Status =3D SpiFlashWrite (LbaAddress + BlockOffset, (UINT32 *)NumBytes= , > Buffer); > - if (EFI_ERROR (Status)) { > - return Status; > - } > - > - Status =3D SpiFlashLock (); > - if (EFI_ERROR (Status)) { > - return Status; > - } > - > - WriteBackInvalidateDataCacheRange ((VOID *) (LbaAddress + BlockOffset)= , > *NumBytes); > - > - if (!EFI_ERROR (Status) && BadBufferSize) { > - return EFI_BAD_BUFFER_SIZE; > - } else { > - return Status; > - } > -} > - > - > - > -/** > - Erases and initializes a firmware volume block. > - > - @param[in] FvbInstance The pointer to the EFI_FVB_INSTANCE > - @param[in] Lba The logical block index to be erased > - > - @retval EFI_SUCCESS The erase request was successfully com= pleted > - @retval EFI_ACCESS_DENIED The firmware volume is in the WriteDis= abled > state > - @retval EFI_DEVICE_ERROR The block device is not functioning co= rrectly > and > - could not be written. Firmware device = may have been > - partially erased > - @retval EFI_INVALID_PARAMETER Instance not found > - > -**/ > -EFI_STATUS > -FvbEraseBlock ( > - IN EFI_FVB_INSTANCE *FvbInstance, > - IN EFI_LBA Lba > - ) > -{ > - > - EFI_FVB_ATTRIBUTES_2 Attributes; > - UINTN LbaAddress; > - UINTN LbaLength; > - EFI_STATUS Status; > - > - // > - // Check if the FV is write enabled > - // > - Attributes =3D FvbGetVolumeAttributes (FvbInstance); > - > - if( (Attributes & EFI_FVB2_WRITE_STATUS) =3D=3D 0) { > - return EFI_ACCESS_DENIED; > - } > - > - // > - // Get the starting address of the block for erase. > - // > - Status =3D FvbGetLbaAddress (FvbInstance, Lba, &LbaAddress, &LbaLength= , > NULL); > - if (EFI_ERROR(Status)) { > - return Status; > - } > - > - Status =3D SpiFlashBlockErase (LbaAddress, &LbaLength); > - if (EFI_ERROR (Status)) { > - return Status; > - } > - > - Status =3D SpiFlashLock (); > - if (EFI_ERROR (Status)) { > - return Status; > - } > - > - WriteBackInvalidateDataCacheRange ((VOID *) LbaAddress, LbaLength); > - > - return Status; > -} > - > -/** > - Modifies the current settings of the firmware volume according to the > - input parameter, and returns the new setting of the volume > - > - @param[in] FvbInstance The pointer to the EFI_FVB_INSTANCE. > - @param[in] Attributes On input, it is a pointer to > EFI_FVB_ATTRIBUTES_2 > - containing the desired firmware volu= me settings. > - On successful return, it contains th= e new settings > - of the firmware volume > - > - @retval EFI_SUCCESS Successfully returns > - @retval EFI_ACCESS_DENIED The volume setting is locked and can= not be > modified > - @retval EFI_INVALID_PARAMETER Instance not found, or The attribute= s > requested are > - in conflict with the capabilities as= declared in the > - firmware volume header > - > -**/ > -EFI_STATUS > -FvbSetVolumeAttributes ( > - IN EFI_FVB_INSTANCE *FvbInstance, > - IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes > - ) > -{ > - EFI_FVB_ATTRIBUTES_2 OldAttributes; > - EFI_FVB_ATTRIBUTES_2 *AttribPtr; > - EFI_FVB_ATTRIBUTES_2 UnchangedAttributes; > - UINT32 Capabilities; > - UINT32 OldStatus, NewStatus; > - > - AttribPtr =3D (EFI_FVB_ATTRIBUTES_2 *) &(FvbInstance->FvHeader.Att= ributes); > - OldAttributes =3D *AttribPtr; > - Capabilities =3D OldAttributes & EFI_FVB2_CAPABILITIES; > - OldStatus =3D OldAttributes & EFI_FVB2_STATUS; > - NewStatus =3D *Attributes & EFI_FVB2_STATUS; > - > - UnchangedAttributes =3D EFI_FVB2_READ_DISABLED_CAP | \ > - EFI_FVB2_READ_ENABLED_CAP | \ > - EFI_FVB2_WRITE_DISABLED_CAP | \ > - EFI_FVB2_WRITE_ENABLED_CAP | \ > - EFI_FVB2_LOCK_CAP | \ > - EFI_FVB2_STICKY_WRITE | \ > - EFI_FVB2_MEMORY_MAPPED | \ > - EFI_FVB2_ERASE_POLARITY | \ > - EFI_FVB2_READ_LOCK_CAP | \ > - EFI_FVB2_WRITE_LOCK_CAP | \ > - EFI_FVB2_ALIGNMENT; > - > - // > - // Some attributes of FV is read only can *not* be set > - // > - if ((OldAttributes & UnchangedAttributes) ^ (*Attributes & > UnchangedAttributes)) { > - return EFI_INVALID_PARAMETER; > - } > - > - // > - // If firmware volume is locked, no status bit can be updated > - // > - if ( OldAttributes & EFI_FVB2_LOCK_STATUS ) { > - if ( OldStatus ^ NewStatus ) { > - return EFI_ACCESS_DENIED; > - } > - } > - > - // > - // Test read disable > - // > - if ((Capabilities & EFI_FVB2_READ_DISABLED_CAP) =3D=3D 0) { > - if ((NewStatus & EFI_FVB2_READ_STATUS) =3D=3D 0) { > - return EFI_INVALID_PARAMETER; > - } > - } > - > - // > - // Test read enable > - // > - if ((Capabilities & EFI_FVB2_READ_ENABLED_CAP) =3D=3D 0) { > - if (NewStatus & EFI_FVB2_READ_STATUS) { > - return EFI_INVALID_PARAMETER; > - } > - } > - > - // > - // Test write disable > - // > - if ((Capabilities & EFI_FVB2_WRITE_DISABLED_CAP) =3D=3D 0) { > - if ((NewStatus & EFI_FVB2_WRITE_STATUS) =3D=3D 0) { > - return EFI_INVALID_PARAMETER; > - } > - } > - > - // > - // Test write enable > - // > - if ((Capabilities & EFI_FVB2_WRITE_ENABLED_CAP) =3D=3D 0) { > - if (NewStatus & EFI_FVB2_WRITE_STATUS) { > - return EFI_INVALID_PARAMETER; > - } > - } > - > - // > - // Test lock > - // > - if ((Capabilities & EFI_FVB2_LOCK_CAP) =3D=3D 0) { > - if (NewStatus & EFI_FVB2_LOCK_STATUS) { > - return EFI_INVALID_PARAMETER; > - } > - } > - > - *AttribPtr =3D (*AttribPtr) & (0xFFFFFFFF & (~EFI_FVB2_STATUS)); > - *AttribPtr =3D (*AttribPtr) | NewStatus; > - *Attributes =3D *AttribPtr; > - > - return EFI_SUCCESS; > -} > - > -/** > - Check the integrity of firmware volume header > - > - @param[in] FvHeader A pointer to a firmware volume header > - > - @retval TRUE The firmware volume is consistent > - @retval FALSE The firmware volume has corrupted. > - > -**/ > -BOOLEAN > -IsFvHeaderValid ( > - IN EFI_PHYSICAL_ADDRESS FvBase, > - IN CONST EFI_FIRMWARE_VOLUME_HEADER *FvHeader > - ) > -{ > - if (FvBase =3D=3D PcdGet32(PcdFlashNvStorageVariableBase)) { > - if (CompareMem (&FvHeader->FileSystemGuid, &gEfiSystemNvDataFvGuid, > sizeof(EFI_GUID)) !=3D 0 ) { > - return FALSE; > - } > - } else { > - if (CompareMem (&FvHeader->FileSystemGuid, > &gEfiFirmwareFileSystem2Guid, sizeof(EFI_GUID)) !=3D 0 ) { > - return FALSE; > - } > - } > - if ( (FvHeader->Revision !=3D EFI_FVH_REVISION) || > - (FvHeader->Signature !=3D EFI_FVH_SIGNATURE) || > - (FvHeader->FvLength =3D=3D ((UINTN) -1)) || > - ((FvHeader->HeaderLength & 0x01 ) !=3D0) ) { > - return FALSE; > - } > - > - if (CalculateCheckSum16 ((UINT16 *) FvHeader, FvHeader->HeaderLength) = !=3D 0) > { > - return FALSE; > - } > - > - return TRUE; > -} > - > -// > -// FVB protocol APIs > -// > - > -/** > - Retrieves the physical address of the device. > - > - @param[in] This A pointer to EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL. > - @param[out] Address Output buffer containing the address. > - > - retval EFI_SUCCESS The function always return successfully. > - > -**/ > -EFI_STATUS > -EFIAPI > -FvbProtocolGetPhysicalAddress ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - OUT EFI_PHYSICAL_ADDRESS *Address > - ) > -{ > - EFI_FVB_INSTANCE *FvbInstance; > - > - FvbInstance =3D FVB_INSTANCE_FROM_THIS (This); > - > - *Address =3D FvbInstance->FvBase; > - > - return EFI_SUCCESS; > -} > - > -/** > - Retrieve the size of a logical block > - > - @param[in] This Calling context > - @param[in] Lba Indicates which block to return the size for. > - @param[out] BlockSize A pointer to a caller allocated UINTN in which > - the size of the block is returned > - @param[out] NumOfBlocks A pointer to a caller allocated UINTN in which= the > - number of consecutive blocks starting with Lba= is > - returned. All blocks in this range have a size= of > - BlockSize > - > - @retval EFI_SUCCESS The function always return successfully. > - > -**/ > -EFI_STATUS > -EFIAPI > -FvbProtocolGetBlockSize ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN EFI_LBA Lba, > - OUT UINTN *BlockSize, > - OUT UINTN *NumOfBlocks > - ) > -{ > - EFI_FVB_INSTANCE *FvbInstance; > - > - FvbInstance =3D FVB_INSTANCE_FROM_THIS (This); > - > - DEBUG((DEBUG_INFO, > - "FvbProtocolGetBlockSize: Lba: 0x%lx BlockSize: 0x%x NumOfBlocks: > 0x%x\n", > - Lba, > - BlockSize, > - NumOfBlocks) > - ); > - > - return FvbGetLbaAddress ( > - FvbInstance, > - Lba, > - NULL, > - BlockSize, > - NumOfBlocks > - ); > -} > - > -/** > - Retrieves Volume attributes. No polarity translations are done. > - > - @param[in] This Calling context > - @param[out] Attributes Output buffer which contains attributes > - > - @retval EFI_SUCCESS The function always return successfully. > - > -**/ > -EFI_STATUS > -EFIAPI > -FvbProtocolGetAttributes ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - OUT EFI_FVB_ATTRIBUTES_2 *Attributes > - ) > -{ > - EFI_FVB_INSTANCE *FvbInstance; > - > - FvbInstance =3D FVB_INSTANCE_FROM_THIS (This); > - > - *Attributes =3D FvbGetVolumeAttributes (FvbInstance); > - > - DEBUG ((DEBUG_INFO, > - "FvbProtocolGetAttributes: This: 0x%x Attributes: 0x%x\n", > - This, > - *Attributes) > - ); > - > - return EFI_SUCCESS; > -} > - > -/** > - Sets Volume attributes. No polarity translations are done. > - > - @param[in] This Calling context > - @param[out] Attributes Output buffer which contains attributes > - > - @retval EFI_SUCCESS The function always return successfully. > - > -**/ > -EFI_STATUS > -EFIAPI > -FvbProtocolSetAttributes ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes > - ) > -{ > - EFI_STATUS Status; > - EFI_FVB_INSTANCE *FvbInstance; > - > - DEBUG((DEBUG_INFO, > - "FvbProtocolSetAttributes: Before SET - This: 0x%x Attributes: 0x%x= \n", > - This, > - *Attributes) > - ); > - > - FvbInstance =3D FVB_INSTANCE_FROM_THIS (This); > - > - Status =3D FvbSetVolumeAttributes (FvbInstance, Attributes); > - > - DEBUG((DEBUG_INFO, > - "FvbProtocolSetAttributes: After SET - This: 0x%x Attributes: 0x%x\= n", > - This, > - *Attributes) > - ); > - > - return Status; > -} > - > -/** > - The EraseBlock() function erases one or more blocks as denoted by the > - variable argument list. The entire parameter list of blocks must be ve= rified > - prior to erasing any blocks. If a block is requested that does not ex= ist > - within the associated firmware volume (it has a larger index than the = last > - block of the firmware volume), the EraseBlock() function must return > - EFI_INVALID_PARAMETER without modifying the contents of the firmware > volume. > - > - @param[in] This Calling context > - @param[in] ... Starting LBA followed by Number of Lba to eras= e. > - a -1 to terminate the list. > - > - @retval EFI_SUCCESS The erase request was successfully completed > - @retval EFI_ACCESS_DENIED The firmware volume is in the WriteDisabled > state > - @retval EFI_DEVICE_ERROR The block device is not functioning correctl= y and > - could not be written. Firmware device may ha= ve been > - partially erased > - > -**/ > -EFI_STATUS > -EFIAPI > -FvbProtocolEraseBlocks ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - ... > - ) > -{ > - EFI_FVB_INSTANCE *FvbInstance; > - UINTN NumOfBlocks; > - VA_LIST Args; > - EFI_LBA StartingLba; > - UINTN NumOfLba; > - EFI_STATUS Status; > - > - DEBUG((DEBUG_INFO, "FvbProtocolEraseBlocks: \n")); > - > - FvbInstance =3D FVB_INSTANCE_FROM_THIS (This); > - > - NumOfBlocks =3D FvbInstance->NumOfBlocks; > - > - VA_START (Args, This); > - > - do { > - StartingLba =3D VA_ARG (Args, EFI_LBA); > - if ( StartingLba =3D=3D EFI_LBA_LIST_TERMINATOR ) { > - break; > - } > - > - NumOfLba =3D VA_ARG (Args, UINT32); > - > - // > - // Check input parameters > - // > - if (NumOfLba =3D=3D 0) { > - VA_END (Args); > - return EFI_INVALID_PARAMETER; > - } > - > - if ( ( StartingLba + NumOfLba ) > NumOfBlocks ) { > - return EFI_INVALID_PARAMETER; > - } > - } while ( 1 ); > - > - VA_END (Args); > - > - VA_START (Args, This); > - do { > - StartingLba =3D VA_ARG (Args, EFI_LBA); > - if (StartingLba =3D=3D EFI_LBA_LIST_TERMINATOR) { > - break; > - } > - > - NumOfLba =3D VA_ARG (Args, UINT32); > - > - while ( NumOfLba > 0 ) { > - Status =3D FvbEraseBlock (FvbInstance, StartingLba); > - if ( EFI_ERROR(Status)) { > - VA_END (Args); > - return Status; > - } > - StartingLba ++; > - NumOfLba --; > - } > - > - } while ( 1 ); > - > - VA_END (Args); > - > - return EFI_SUCCESS; > -} > - > -/** > - Writes data beginning at Lba:Offset from FV. The write terminates eith= er > - when *NumBytes of data have been written, or when a block boundary is > - reached. *NumBytes is updated to reflect the actual number of bytes > - written. The write opertion does not include erase. This routine will > - attempt to write only the specified bytes. If the writes do not stick, > - it will return an error. > - > - @param[in] This Calling context > - @param[in] Lba Block in which to begin write > - @param[in] Offset Offset in the block at which to begin write > - @param[in,out] NumBytes On input, indicates the requested write size= . On > - output, indicates the actual number of bytes= written > - @param[in] Buffer Buffer containing source data for the write. > - > - @retval EFI_SUCCESS The firmware volume was written successf= ully > - @retval EFI_BAD_BUFFER_SIZE Write attempted across a LBA boundary. O= n > output, > - NumBytes contains the total number of by= tes > - actually written > - @retval EFI_ACCESS_DENIED The firmware volume is in the WriteDisab= led > state > - @retval EFI_DEVICE_ERROR The block device is not functioning corr= ectly > and > - could not be written > - @retval EFI_INVALID_PARAMETER NumBytes or Buffer are NULL > - > -**/ > -EFI_STATUS > -EFIAPI > -FvbProtocolWrite ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN EFI_LBA Lba, > - IN UINTN Offset, > - IN OUT UINTN *NumBytes, > - IN UINT8 *Buffer > - ) > -{ > - EFI_FVB_INSTANCE *FvbInstance; > - > - FvbInstance =3D FVB_INSTANCE_FROM_THIS (This); > - > - DEBUG((DEBUG_INFO, > - "FvbProtocolWrite: Lba: 0x%lx Offset: 0x%x NumBytes: 0x%x, Buffer: > 0x%x\n", > - Lba, > - Offset, > - *NumBytes, > - Buffer) > - ); > - > - return FvbWriteBlock (FvbInstance, Lba, Offset, NumBytes, Buffer); > -} > - > -/** > - Reads data beginning at Lba:Offset from FV. The Read terminates either > - when *NumBytes of data have been read, or when a block boundary is > - reached. *NumBytes is updated to reflect the actual number of bytes > - written. The write opertion does not include erase. This routine will > - attempt to write only the specified bytes. If the writes do not stick, > - it will return an error. > - > - @param[in] This Calling context > - @param[in] Lba Block in which to begin write > - @param[in] Offset Offset in the block at which to begin write > - @param[in,out] NumBytes On input, indicates the requested write size= . On > - output, indicates the actual number of bytes= written > - @param[in] Buffer Buffer containing source data for the write. > - > - @retval EFI_SUCCESS The firmware volume was read successfull= y and > - contents are in Buffer > - @retval EFI_BAD_BUFFER_SIZE Read attempted across a LBA boundary. On > output, > - NumBytes contains the total number of by= tes returned > - in Buffer > - @retval EFI_ACCESS_DENIED The firmware volume is in the ReadDisabl= ed > state > - @retval EFI_DEVICE_ERROR The block device is not functioning corr= ectly > and > - could not be read > - @retval EFI_INVALID_PARAMETER NumBytes or Buffer are NULL > - > -**/ > -EFI_STATUS > -EFIAPI > -FvbProtocolRead ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN EFI_LBA Lba, > - IN UINTN Offset, > - IN OUT UINTN *NumBytes, > - OUT UINT8 *Buffer > - ) > -{ > - EFI_FVB_INSTANCE *FvbInstance; > - EFI_STATUS Status; > - > - FvbInstance =3D FVB_INSTANCE_FROM_THIS (This); > - Status =3D FvbReadBlock (FvbInstance, Lba, Offset, NumBytes, Buffer); > - DEBUG((DEBUG_INFO, > - "FvbProtocolRead: Lba: 0x%lx Offset: 0x%x NumBytes: 0x%x, Buffer: 0x= %x\n", > - Lba, > - Offset, > - *NumBytes, > - Buffer) > - ); > - > - return Status; > -} > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c > deleted file mode 100644 > index 016f19587c91..000000000000 > --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.c > +++ /dev/null > @@ -1,271 +0,0 @@ > -/** @file > - MM driver source for several Serial Flash devices > - which are compliant with the Intel(R) Serial Flash Interface Compatibi= lity > Specification. > - > - Copyright (c) 2017, Intel Corporation. All rights reserved.
> - Copyright (c) Microsoft Corporation.
> - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include "SpiFvbServiceCommon.h" > -#include > -#include > -#include > - > -/** > - The function installs EFI_FIRMWARE_VOLUME_BLOCK protocol > - for each FV in the system. > - > - @param[in] FvbInstance The pointer to a FW volume instance structur= e, > - which contains the information about one FV. > - > - @retval VOID > - > -**/ > -VOID > -InstallFvbProtocol ( > - IN EFI_FVB_INSTANCE *FvbInstance > - ) > -{ > - EFI_FIRMWARE_VOLUME_HEADER *FvHeader; > - EFI_STATUS Status; > - EFI_HANDLE FvbHandle; > - > - ASSERT (FvbInstance !=3D NULL); > - if (FvbInstance =3D=3D NULL) { > - return; > - } > - > - CopyMem (&FvbInstance->FvbProtocol, &mFvbProtocolTemplate, sizeof > (EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL)); > - > - FvHeader =3D &FvbInstance->FvHeader; > - if (FvHeader =3D=3D NULL) { > - return; > - } > - > - // > - // Set up the devicepath > - // > - DEBUG ((DEBUG_INFO, "FwBlockService.c: Setting up DevicePath for > 0x%lx:\n", FvbInstance->FvBase)); > - if (FvHeader->ExtHeaderOffset =3D=3D 0) { > - // > - // FV does not contains extension header, then produce > MEMMAP_DEVICE_PATH > - // > - FvbInstance->DevicePath =3D (EFI_DEVICE_PATH_PROTOCOL *) > AllocateRuntimeCopyPool (sizeof (FV_MEMMAP_DEVICE_PATH), > &mFvMemmapDevicePathTemplate); > - if (FvbInstance->DevicePath =3D=3D NULL) { > - DEBUG ((DEBUG_INFO, "SpiFvbServiceSmm.c: Memory allocation for > MEMMAP_DEVICE_PATH failed\n")); > - return; > - } > - ((FV_MEMMAP_DEVICE_PATH *) FvbInstance->DevicePath)- > >MemMapDevPath.StartingAddress =3D FvbInstance->FvBase; > - ((FV_MEMMAP_DEVICE_PATH *) FvbInstance->DevicePath)- > >MemMapDevPath.EndingAddress =3D FvbInstance->FvBase + FvHeader- > >FvLength - 1; > - } else { > - FvbInstance->DevicePath =3D (EFI_DEVICE_PATH_PROTOCOL *) > AllocateRuntimeCopyPool (sizeof (FV_PIWG_DEVICE_PATH), > &mFvPIWGDevicePathTemplate); > - if (FvbInstance->DevicePath =3D=3D NULL) { > - DEBUG ((DEBUG_INFO, "SpiFvbServiceSmm.c: Memory allocation for > FV_PIWG_DEVICE_PATH failed\n")); > - return; > - } > - CopyGuid ( > - &((FV_PIWG_DEVICE_PATH *)FvbInstance->DevicePath)- > >FvDevPath.FvName, > - (GUID *)(UINTN)(FvbInstance->FvBase + FvHeader->ExtHeaderOffset) > - ); > - } > - > - // > - // LocateDevicePath fails so install a new interface and device path > - // > - FvbHandle =3D NULL; > - > - Status =3D gMmst->MmInstallProtocolInterface ( > - &FvbHandle, > - &gEfiSmmFirmwareVolumeBlockProtocolGuid, > - EFI_NATIVE_INTERFACE, > - &(FvbInstance->FvbProtocol) > - ); > - ASSERT_EFI_ERROR (Status); > - > - Status =3D gMmst->MmInstallProtocolInterface ( > - &FvbHandle, > - &gEfiDevicePathProtocolGuid, > - EFI_NATIVE_INTERFACE, > - &(FvbInstance->DevicePath) > - ); > - ASSERT_EFI_ERROR (Status); > -} > - > -/** > - The function does the necessary initialization work for > - Firmware Volume Block Driver. > - > -**/ > -VOID > -FvbInitialize ( > - VOID > - ) > -{ > - EFI_FVB_INSTANCE *FvbInstance; > - EFI_FIRMWARE_VOLUME_HEADER *FvHeader; > - EFI_FV_BLOCK_MAP_ENTRY *PtrBlockMapEntry; > - EFI_PHYSICAL_ADDRESS BaseAddress; > - EFI_STATUS Status; > - UINTN BufferSize; > - UINTN Idx; > - UINT32 MaxLbaSize; > - UINT32 BytesWritten; > - UINTN BytesErased; > - > - mPlatformFvBaseAddress[0].FvBase =3D > PcdGet32(PcdFlashNvStorageVariableBase); > - mPlatformFvBaseAddress[0].FvSize =3D > PcdGet32(PcdFlashNvStorageVariableSize); > - mPlatformFvBaseAddress[1].FvBase =3D PcdGet32(PcdFlashFvMicrocodeBase)= ; > - mPlatformFvBaseAddress[1].FvSize =3D PcdGet32(PcdFlashFvMicrocodeSize)= ; > - mPlatformDefaultBaseAddress[0].FvBase =3D > PcdGet32(PcdFlashNvStorageVariableBase); > - mPlatformDefaultBaseAddress[0].FvSize =3D > PcdGet32(PcdFlashNvStorageVariableSize); > - mPlatformDefaultBaseAddress[1].FvBase =3D > PcdGet32(PcdFlashFvMicrocodeBase); > - mPlatformDefaultBaseAddress[1].FvSize =3D > PcdGet32(PcdFlashFvMicrocodeSize); > - > - // > - // We will only continue with FVB installation if the > - // SPI is the active BIOS state > - // > - { > - // > - // Make sure all FVB are valid and/or fix if possible > - // > - for (Idx =3D 0;; Idx++) { > - if (mPlatformFvBaseAddress[Idx].FvSize =3D=3D 0 && > mPlatformFvBaseAddress[Idx].FvBase =3D=3D 0) { > - break; > - } > - > - BaseAddress =3D mPlatformFvBaseAddress[Idx].FvBase; > - FvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; > - > - if (!IsFvHeaderValid (BaseAddress, FvHeader)) { > - BytesWritten =3D 0; > - BytesErased =3D 0; > - DEBUG ((DEBUG_ERROR, "ERROR - The FV in 0x%x is invalid!\n", > FvHeader)); > - Status =3D GetFvbInfo (BaseAddress, &FvHeader); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_WARN, "ERROR - Can't recovery FV header at 0x%x. > GetFvbInfo Status %r\n", BaseAddress, Status)); > - continue; > - } > - DEBUG ((DEBUG_INFO, "Rewriting FV header at 0x%X with static dat= a\n", > BaseAddress)); > - // > - // Spi erase > - // > - BytesErased =3D (UINTN) FvHeader->BlockMap->Length; > - Status =3D SpiFlashBlockErase( (UINTN) BaseAddress, &BytesErased= ); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_WARN, "ERROR - SpiFlashBlockErase Error %r\n", > Status)); > - continue; > - } > - if (BytesErased !=3D FvHeader->BlockMap->Length) { > - DEBUG ((DEBUG_WARN, "ERROR - BytesErased !=3D FvHeader->BlockM= ap- > >Length\n")); > - DEBUG ((DEBUG_INFO, " BytesErased =3D 0x%X\n Length =3D 0x%X\n= ", > BytesErased, FvHeader->BlockMap->Length)); > - continue; > - } > - BytesWritten =3D FvHeader->HeaderLength; > - Status =3D SpiFlashWrite ((UINTN)BaseAddress, &BytesWritten, > (UINT8*)FvHeader); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_WARN, "ERROR - SpiFlashWrite Error %r\n", Statu= s)); > - continue; > - } > - if (BytesWritten !=3D FvHeader->HeaderLength) { > - DEBUG ((DEBUG_WARN, "ERROR - BytesWritten !=3D HeaderLength\n"= )); > - DEBUG ((DEBUG_INFO, " BytesWritten =3D 0x%X\n HeaderLength =3D= 0x%X\n", > BytesWritten, FvHeader->HeaderLength)); > - continue; > - } > - Status =3D SpiFlashLock (); > - if (EFI_ERROR (Status)) { > - DEBUG ((DEBUG_WARN, "ERROR - SpiFlashLock Error %r\n", Status= )); > - continue; > - } > - DEBUG ((DEBUG_INFO, "FV Header @ 0x%X restored with static data\= n", > BaseAddress)); > - // > - // Clear cache for this range. > - // > - WriteBackInvalidateDataCacheRange ( (VOID *) (UINTN) BaseAddress= , > FvHeader->BlockMap->Length); > - } > - } > - > - // > - // Calculate the total size for all firmware volume block instances > - // > - BufferSize =3D 0; > - for (Idx =3D 0; ; Idx++) { > - if (mPlatformFvBaseAddress[Idx].FvSize =3D=3D 0 && > mPlatformFvBaseAddress[Idx].FvBase =3D=3D 0) { > - break; > - } > - BaseAddress =3D mPlatformFvBaseAddress[Idx].FvBase; > - FvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; > - > - if (!IsFvHeaderValid (BaseAddress, FvHeader)) { > - DEBUG ((DEBUG_WARN, "ERROR - The FV in 0x%x is invalid!\n", FvHe= ader)); > - continue; > - } > - > - BufferSize +=3D (FvHeader->HeaderLength + > - sizeof (EFI_FVB_INSTANCE) - > - sizeof (EFI_FIRMWARE_VOLUME_HEADER) > - ); > - } > - > - mFvbModuleGlobal.FvbInstance =3D (EFI_FVB_INSTANCE *) > AllocateRuntimeZeroPool (BufferSize); > - if (mFvbModuleGlobal.FvbInstance =3D=3D NULL) { > - ASSERT (FALSE); > - return; > - } > - > - MaxLbaSize =3D 0; > - FvbInstance =3D mFvbModuleGlobal.FvbInstance; > - mFvbModuleGlobal.NumFv =3D 0; > - > - for (Idx =3D 0; ; Idx++) { > - if (mPlatformFvBaseAddress[Idx].FvSize =3D=3D 0 && > mPlatformFvBaseAddress[Idx].FvBase =3D=3D 0) { > - break; > - } > - BaseAddress =3D mPlatformFvBaseAddress[Idx].FvBase; > - FvHeader =3D (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) BaseAddress; > - > - if (!IsFvHeaderValid (BaseAddress, FvHeader)) { > - DEBUG ((DEBUG_WARN, "ERROR - The FV in 0x%x is invalid!\n", FvHe= ader)); > - continue; > - } > - > - FvbInstance->Signature =3D FVB_INSTANCE_SIGNATURE; > - CopyMem (&(FvbInstance->FvHeader), FvHeader, FvHeader->HeaderLengt= h); > - > - FvHeader =3D &(FvbInstance->FvHeader); > - FvbInstance->FvBase =3D (UINTN)BaseAddress; > - > - // > - // Process the block map for each FV > - // > - FvbInstance->NumOfBlocks =3D 0; > - for (PtrBlockMapEntry =3D FvHeader->BlockMap; > - PtrBlockMapEntry->NumBlocks !=3D 0; > - PtrBlockMapEntry++) { > - // > - // Get the maximum size of a block. > - // > - if (MaxLbaSize < PtrBlockMapEntry->Length) { > - MaxLbaSize =3D PtrBlockMapEntry->Length; > - } > - FvbInstance->NumOfBlocks +=3D PtrBlockMapEntry->NumBlocks; > - } > - > - // > - // Add a FVB Protocol Instance > - // > - InstallFvbProtocol (FvbInstance); > - mFvbModuleGlobal.NumFv++; > - > - // > - // Move on to the next FvbInstance > - // > - FvbInstance =3D (EFI_FVB_INSTANCE *) ((UINTN)((UINT8 *)FvbInstance= ) + > - FvHeader->HeaderLength + > - (sizeof (EFI_FVB_INSTANCE) -= sizeof > (EFI_FIRMWARE_VOLUME_HEADER))); > - > - } > - } > -} > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalo= ne > Mm.c > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalo= ne > Mm.c > deleted file mode 100644 > index 252c818d6551..000000000000 > --- > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalo= ne > Mm.c > +++ /dev/null > @@ -1,32 +0,0 @@ > -/** @file > - MM driver source for several Serial Flash devices > - which are compliant with the Intel(R) Serial Flash Interface Compatibi= lity > Specification. > - > - Copyright (c) Microsoft Corporation.
> - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include "SpiFvbServiceCommon.h" > -#include "SpiFvbServiceMm.h" > - > -/** > - The driver Standalone MM entry point. > - > - @param[in] ImageHandle Image handle of this driver. > - @param[in] MmSystemTable A pointer to the MM system table. > - > - @retval EFI_SUCCESS This function always returns EFI_SUCCE= SS. > - > -**/ > -EFI_STATUS > -EFIAPI > -SpiFvbStandaloneMmInitialize ( > - IN EFI_HANDLE ImageHandle, > - IN EFI_MM_SYSTEM_TABLE *MmSystemTable > - ) > -{ > - FvbInitialize (); > - > - return EFI_SUCCESS; > -} > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditio= nal > Mm.c > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditio= nal > Mm.c > deleted file mode 100644 > index 1c2dac70e3c6..000000000000 > --- > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceTraditio= nal > Mm.c > +++ /dev/null > @@ -1,32 +0,0 @@ > -/** @file > - MM driver source for several Serial Flash devices > - which are compliant with the Intel(R) Serial Flash Interface Compatibi= lity > Specification. > - > - Copyright (c) Microsoft Corporation.
> - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include "SpiFvbServiceCommon.h" > -#include "SpiFvbServiceMm.h" > - > -/** > - The driver Traditional MM entry point. > - > - @param[in] ImageHandle Image handle of this driver. > - @param[in] SystemTable A pointer to the EFI system table. > - > - @retval EFI_SUCCESS This function always returns EFI_SUCCE= SS. > - > -**/ > -EFI_STATUS > -EFIAPI > -SpiFvbTraditionalMmInitialize ( > - IN EFI_HANDLE ImageHandle, > - IN EFI_SYSTEM_TABLE *SystemTable > - ) > -{ > - FvbInitialize (); > - > - return EFI_SUCCESS; > -} > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h > deleted file mode 100644 > index e9d69e985814..000000000000 > --- > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceCommon.h > +++ /dev/null > @@ -1,158 +0,0 @@ > -/** @file > - Common source definitions used in serial flash drivers > - > -Copyright (c) 2017, Intel Corporation. All rights reserved.
> -SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#ifndef _SPI_FVB_SERVICE_COMMON_H > -#define _SPI_FVB_SERVICE_COMMON_H > - > -#include > -#include > -#include > -#include > -#include > - > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > - > -#include > - > -// > -// Define two helper macro to extract the Capability field or Status fie= ld in FVB > -// bit fields > -// > -#define EFI_FVB2_CAPABILITIES (EFI_FVB2_READ_DISABLED_CAP | \ > - EFI_FVB2_READ_ENABLED_CAP | \ > - EFI_FVB2_WRITE_DISABLED_CAP | \ > - EFI_FVB2_WRITE_ENABLED_CAP | \ > - EFI_FVB2_LOCK_CAP \ > - ) > - > -#define EFI_FVB2_STATUS (EFI_FVB2_READ_STATUS | > EFI_FVB2_WRITE_STATUS | EFI_FVB2_LOCK_STATUS) > - > -#define FVB_INSTANCE_SIGNATURE SIGNATURE_32('F','V','B','I') > - > -typedef struct { > - UINT32 Signature; > - UINTN FvBase; > - UINTN NumOfBlocks; > - EFI_DEVICE_PATH_PROTOCOL *DevicePath; > - EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FvbProtocol; > - EFI_FIRMWARE_VOLUME_HEADER FvHeader; > -} EFI_FVB_INSTANCE; > - > -typedef struct { > - EFI_FVB_INSTANCE *FvbInstance; > - UINT32 NumFv; > -} FVB_GLOBAL; > - > -// > -// Fvb Protocol instance data > -// > -#define FVB_INSTANCE_FROM_THIS(a) CR(a, EFI_FVB_INSTANCE, FvbProtocol, > FVB_INSTANCE_SIGNATURE) > - > -typedef struct { > - MEDIA_FW_VOL_DEVICE_PATH FvDevPath; > - EFI_DEVICE_PATH_PROTOCOL EndDevPath; > -} FV_PIWG_DEVICE_PATH; > - > -typedef struct { > - MEMMAP_DEVICE_PATH MemMapDevPath; > - EFI_DEVICE_PATH_PROTOCOL EndDevPath; > -} FV_MEMMAP_DEVICE_PATH; > - > -typedef struct { > - UINT32 FvBase; > - UINT32 FvSize; > -} FV_INFO; > - > -// > -// Protocol APIs > -// > -EFI_STATUS > -EFIAPI > -FvbProtocolGetAttributes ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - OUT EFI_FVB_ATTRIBUTES_2 *Attributes > - ); > - > -EFI_STATUS > -EFIAPI > -FvbProtocolSetAttributes ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes > - ); > - > -EFI_STATUS > -EFIAPI > -FvbProtocolGetPhysicalAddress ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - OUT EFI_PHYSICAL_ADDRESS *Address > - ); > - > -EFI_STATUS > -EFIAPI > -FvbProtocolGetBlockSize ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN EFI_LBA Lba, > - OUT UINTN *BlockSize, > - OUT UINTN *NumOfBlocks > - ); > - > -EFI_STATUS > -EFIAPI > -FvbProtocolRead ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN EFI_LBA Lba, > - IN UINTN Offset, > - IN OUT UINTN *NumBytes, > - OUT UINT8 *Buffer > - ); > - > -EFI_STATUS > -EFIAPI > -FvbProtocolWrite ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - IN EFI_LBA Lba, > - IN UINTN Offset, > - IN OUT UINTN *NumBytes, > - IN UINT8 *Buffer > - ); > - > -EFI_STATUS > -EFIAPI > -FvbProtocolEraseBlocks ( > - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, > - ... > - ); > - > -BOOLEAN > -IsFvHeaderValid ( > - IN EFI_PHYSICAL_ADDRESS FvBase, > - IN CONST EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader > - ); > - > -EFI_STATUS > -GetFvbInfo ( > - IN EFI_PHYSICAL_ADDRESS FvBaseAddress, > - OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo > - ); > - > -extern FVB_GLOBAL mFvbModuleGlobal; > -extern FV_MEMMAP_DEVICE_PATH mFvMemmapDevicePathTemplate; > -extern FV_PIWG_DEVICE_PATH mFvPIWGDevicePathTemplate; > -extern EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL mFvbProtocolTemplate; > -extern FV_INFO mPlatformFvBaseAddress[]; > -extern FV_INFO mPlatformDefaultBaseAddress[]; > - > -#endif > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h > deleted file mode 100644 > index 36af1130c8ee..000000000000 > --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceMm.h > +++ /dev/null > @@ -1,22 +0,0 @@ > -/** @file > - Definitions common to MM implementation in this driver. > - > - Copyright (c) Microsoft Corporation.
> - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#ifndef _SPI_FVB_SERVICE_MM_H_ > -#define _SPI_FVB_SERVICE_MM_H_ > - > -/** > - The function does the necessary initialization work for > - Firmware Volume Block Driver. > - > -**/ > -VOID > -FvbInitialize ( > - VOID > - ); > - > -#endif > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf > deleted file mode 100644 > index 10e51e11756f..000000000000 > --- a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.= inf > +++ /dev/null > @@ -1,68 +0,0 @@ > -### @file > -# Component description file for the Serial Flash device Runtime driver. > -# > -# Copyright (c) 2017-2019, Intel Corporation. All rights reserved.
> -# Copyright (c) Microsoft Corporation.
> -# > -# SPDX-License-Identifier: BSD-2-Clause-Patent > -# > -### > - > -[Defines] > - INF_VERSION =3D 0x00010017 > - BASE_NAME =3D SpiFvbServiceSmm > - FILE_GUID =3D 68A10D85-6858-4402-B070-028B3EA2174= 7 > - VERSION_STRING =3D 1.0 > - MODULE_TYPE =3D DXE_SMM_DRIVER > - PI_SPECIFICATION_VERSION =3D 1.10 > - ENTRY_POINT =3D SpiFvbTraditionalMmInitialize > - > -# > -# The following information is for reference only and not required by th= e build > tools. > -# > -# VALID_ARCHITECTURES =3D IA32 X64 > -# > - > -[LibraryClasses] > - PcdLib > - MemoryAllocationLib > - CacheMaintenanceLib > - BaseMemoryLib > - DebugLib > - BaseLib > - UefiBootServicesTableLib > - UefiDriverEntryPoint > - SpiFlashCommonLib > - MmServicesTableLib > - > -[Packages] > - MdePkg/MdePkg.dec > - MdeModulePkg/MdeModulePkg.dec > - MinPlatformPkg/MinPlatformPkg.dec > - > -[Pcd] > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase ## > CONSUMES > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize ## > CONSUMES > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ## > CONSUMES > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeBase ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeSize ## > CONSUMES > - > -[Sources] > - FvbInfo.c > - SpiFvbServiceCommon.h > - SpiFvbServiceCommon.c > - SpiFvbServiceMm.h > - SpiFvbServiceMm.c > - SpiFvbServiceTraditionalMm.c > - > -[Protocols] > - gEfiDevicePathProtocolGuid ## PRODUCES > - gEfiSmmFirmwareVolumeBlockProtocolGuid ## PRODUCES > - > -[Guids] > - gEfiFirmwareFileSystem2Guid ## CONSUMES > - gEfiSystemNvDataFvGuid ## CONSUMES > - > -[Depex] > - TRUE > diff --git > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalo= ne > Mm.inf > b/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalo= ne > Mm.inf > deleted file mode 100644 > index 9f08d3673f41..000000000000 > --- > a/Platform/Intel/MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandalo= ne > Mm.inf > +++ /dev/null > @@ -1,67 +0,0 @@ > -### @file > -# Component description file for the Serial Flash device Standalone MM d= river. > -# > -# Copyright (c) 2017-2019, Intel Corporation. All rights reserved.
> -# Copyright (c) Microsoft Corporation.
> -# > -# SPDX-License-Identifier: BSD-2-Clause-Patent > -# > -### > - > -[Defines] > - INF_VERSION =3D 0x0001001B > - BASE_NAME =3D SpiFvbServiceStandaloneMm > - FILE_GUID =3D E6313655-8BD0-4EAB-B319-AD5E212CE6A= B > - VERSION_STRING =3D 1.0 > - MODULE_TYPE =3D MM_STANDALONE > - PI_SPECIFICATION_VERSION =3D 0x00010032 > - ENTRY_POINT =3D SpiFvbStandaloneMmInitialize > - > -# > -# The following information is for reference only and not required by th= e build > tools. > -# > -# VALID_ARCHITECTURES =3D IA32 X64 > -# > - > -[LibraryClasses] > - BaseLib > - BaseMemoryLib > - CacheMaintenanceLib > - DebugLib > - MemoryAllocationLib > - PcdLib > - MmServicesTableLib > - SpiFlashCommonLib > - StandaloneMmDriverEntryPoint > - > -[Packages] > - MdePkg/MdePkg.dec > - MdeModulePkg/MdeModulePkg.dec > - MinPlatformPkg/MinPlatformPkg.dec > - > -[Pcd] > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase ## > CONSUMES > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize ## > CONSUMES > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ## > CONSUMES > - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeBase ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashFvMicrocodeSize ## > CONSUMES > - > -[Sources] > - FvbInfo.c > - SpiFvbServiceCommon.h > - SpiFvbServiceCommon.c > - SpiFvbServiceMm.h > - SpiFvbServiceMm.c > - SpiFvbServiceStandaloneMm.c > - > -[Protocols] > - gEfiDevicePathProtocolGuid ## PRODUCES > - gEfiSmmFirmwareVolumeBlockProtocolGuid ## PRODUCES > - > -[Guids] > - gEfiFirmwareFileSystem2Guid ## CONSUMES > - gEfiSystemNvDataFvGuid ## CONSUMES > - > -[Depex] > - TRUE > diff --git a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc > b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc > index 35cbd40abb05..15867eee4e61 100644 > --- a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc > +++ b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc > @@ -159,8 +159,6 @@ [Components] >=20 >=20 > MinPlatformPkg/Bds/Library/DxePlatformBootManagerLib/DxePlatformBootM > anagerLib.inf >=20 > - MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceSmm.inf > - MinPlatformPkg/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf >=20 > MinPlatformPkg/Flash/Library/SpiFlashCommonLibNull/SpiFlashCommonLibNull. > inf >=20 > MinPlatformPkg/FspWrapper/SaveMemoryConfig/SaveMemoryConfig.inf > -- > 2.28.0.windows.1 >=20 >=20 >=20 > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#77122): https://edk2.groups.io/g/devel/message/77122 > Mute This Topic: https://groups.io/mt/83794812/1777047 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [chasel.chiu@intel.com] > -=3D-=3D-=3D-=3D-=3D-=3D >=20