From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.92.42.103]) by mx.groups.io with SMTP id smtpd.web08.18062.1611690452576767322 for ; Tue, 26 Jan 2021 11:47:32 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@outlook.com header.s=selector1 header.b=GybfNjMV; spf=pass (domain: outlook.com, ip: 40.92.42.103, mailfrom: kun.q@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jjXwURYk8R31/17N7+vToayYJBm8uPncqYkU5mC37zyrjF0QR6HaLFReO62KXY04Pwt+kp8hWDPmbrOuCofJwppzem7aCKD8StnJxnoD8zh2ROw9bJRiFkhELILPLf90WWPH7+ZBQ468+2Vj88Fa6mliGfU/8liiLYOrjWm7ePsKDmyqrlWmpAJSJ4eiGmlL6xgNlfLfXt7zwuitx4oYBBheePDFLWFDKqzigiF/nZn1g21rQ7gXx8maGbDDXW+b6xh5VgeM8N1XZ05FvK9Wq+CMcrU/eYr8mYoO81GdpJPWwz3MnDDgIlSl+joiPJ57H75pXn3Ul0N3N363zDqiYw== 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=vhkr9d+YiqmUt+D4AgrSNVGVQlUz5NC1Dz5xRs7Ctw0=; b=DI7UcceaKjs+CLr3patffu1SwHkmdxE2hWkFY3sDmdjbg8LNwlA/egM8yCBRWKVpUPS62gY7A9KDZnBZUV+D2MhFaIItIQjs2mLCpw1awZZulAnUHHVeJkfzmvyLE3Ahp+y4Z/dEEegbjMtv3XlN5Vi9TUO6CiuaZxHsvfPVPFyA5mOSU0j7tCb1/BoHaN7rSU36xL1qndkdd7IOj3fffVXR8kvcwooIBF2gsqp/wZlYsngBdS3eXMtef3O6WnhNRyXOD7+4BXoYGQse81+iiWkT+7F1oVHVc7nVe8AE/NFqTWLld16JnRzsQYCDF2KoK9DFt2y8isNQz/N/bmaTkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vhkr9d+YiqmUt+D4AgrSNVGVQlUz5NC1Dz5xRs7Ctw0=; b=GybfNjMVUKo709Hcu/F6yqJ3e4siPdxLB0ErVTCyivbGizcjI4a/MKPKt58RrpNx33c5ZJZuALKPqowmGHrCUvxus48xBTgyjJ5jKLKuwHf9NUHD12H1WyEeGwuKvrls9JzWOPDESyXtirja9HDqGYFye/l+csQ2P4mveCKYm/SOfqKWm6gn7q9QEyjbnDakp0oA27ummEDqQw+OD4t9Q9jygosFjVxgEMrEwMaoKyytvgXGvMe7TNZQzmertWOvSIR8KpHcva1bjC57XrPdgndRVRpEM6FL22RkdP+QnHeOzl1d2j7xYjBbvpllHNQLyN6AUNgMBxK5Ff5c1GXxZw== Received: from BN7NAM10FT059.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e8f::46) by BN7NAM10HT253.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e8f::477) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11; Tue, 26 Jan 2021 19:47:31 +0000 Received: from MWHPR06MB3102.namprd06.prod.outlook.com (2a01:111:e400:7e8f::4c) by BN7NAM10FT059.mail.protection.outlook.com (2a01:111:e400:7e8f::447) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11 via Frontend Transport; Tue, 26 Jan 2021 19:47:31 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:2B684775B578608E98A6EB9BB7D1EC12D2B05E45AA49C1787912A3AD6B552588;UpperCasedChecksum:6AF387000C8EF29C93DC11709DA23B445D6BB10C0D26E49D25BE2572C05733BC;SizeAsReceived:7476;Count:47 Received: from MWHPR06MB3102.namprd06.prod.outlook.com ([fe80::d4ee:1260:6f53:3f7b]) by MWHPR06MB3102.namprd06.prod.outlook.com ([fe80::d4ee:1260:6f53:3f7b%6]) with mapi id 15.20.3784.017; Tue, 26 Jan 2021 19:47:31 +0000 From: "Kun Qin" To: devel@edk2.groups.io CC: Jian J Wang , Hao A Wu , Eric Dong , Ray Ni Subject: [PATCH v4 11/20] MdeModulePkg: SmmSmiHandlerProfileLib: Support StandaloneMm Instance Date: Tue, 26 Jan 2021 11:47:01 -0800 Message-ID: X-Mailer: git-send-email 2.30.0.windows.1 In-Reply-To: <20210126194710.2248-1-kun.q@outlook.com> References: <20210126194710.2248-1-kun.q@outlook.com> X-TMN: [AMO8sylVC85Zkuhf4hqRASzaTLQCtXlQ] X-ClientProxiedBy: MWHPR11CA0001.namprd11.prod.outlook.com (2603:10b6:301:1::11) To MWHPR06MB3102.namprd06.prod.outlook.com (2603:10b6:301:3e::35) Return-Path: kun.q@outlook.com X-Microsoft-Original-Message-ID: <20210126194710.2248-9-kun.q@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (50.35.88.161) by MWHPR11CA0001.namprd11.prod.outlook.com (2603:10b6:301:1::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.14 via Frontend Transport; Tue, 26 Jan 2021 19:47:29 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: ca43bbb6-7575-4ba9-d982-08d8c23336da X-MS-TrafficTypeDiagnostic: BN7NAM10HT253: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EB4C0pvAzx0y288edfjFaj08lnPM38z6UDPkP7FWy9JnOS/8lPD1sljLGLXOT8KOEpKMmXCxFKo13j1VSltq9tSeKqRrwVOrY4t7pLiS1s19Vc4pKYJNae4hGPffsi+wJiIaVSXYfSXjBfYiParukZ4ueK0XLweNiLO+/KlZ4UztkBaDa15DFKN+jbuHRPZd8cpYY7EtDjNgst3oRTpB48F/OWuexLY0eMPHL2bEo49Rw3Ga0nY73qZ2Ua+bLa0UfHyh5g0m//xYBAR4yY+qGU1tWDW1fbt6J1ixopQJeT7/YIw16AtWKAok8sly0+XQxSAmW9EYX98odS5Kz48TKog9YLZ8qVGPlGjV50dmnNF/5L7sm1zfonw1DUbAlayYnPElDdFOae2QksbpaO1wB2tz+ln/PlzuHygDpb5ODz9AqtoGVfxjZCO/idOrH8d9 X-MS-Exchange-AntiSpam-MessageData: 922G0SSj3AuTgChX+iUVecvRX8LZNhTTnsoIvwM8jyWkBjGEoAqIUdmRF2wMA/y98v5yTlgKeFYrq6Q4wWqy6KklafKjgUGJZfVOrMFu4+PlwItOzo1fEzDTlA/O/TvyTokaLHBjlk9USk1tGJGYkQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca43bbb6-7575-4ba9-d982-08d8c23336da X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2021 19:47:29.4486 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: BN7NAM10FT059.eop-nam10.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7NAM10HT253 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3185 This change added support of SMI handler profile library router under StandaloneMm. This change replaces gSmst with gMmst. It also abstracts standalone and traditional MM driver entrypoints into separate files to allow maximal common implementations. Cc: Jian J Wang Cc: Hao A Wu Cc: Eric Dong Cc: Ray Ni Signed-off-by: Kun Qin --- Notes: v4: - Newly created for SmmSmiHandlerProfileLib coverage. MdeModulePkg/Library/SmmSmiHandlerProfileLib/{SmmSmiHandlerProfileLib.c = =3D> MmSmiHandlerProfileLib.c} | 20 ++--- MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.c = | 90 ++------------------ MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerProfile= Lib.c | 31 +++++++ MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib.h = | 23 +++++ MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.inf = | 4 +- MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerProfile= Lib.inf | 44 ++++++++++ MdeModulePkg/MdeModulePkg.dsc = | 1 + 7 files changed, 117 insertions(+), 96 deletions(-) diff --git a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProf= ileLib.c b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfile= Lib.c similarity index 86% copy from MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfile= Lib.c copy to MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib= .c index b76e8f0dc132..f800220b549c 100644 --- a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.= c +++ b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib.c @@ -1,14 +1,15 @@ /** @file - SMM driver instance of SmiHandlerProfile Library. + MM driver instance of SmiHandlerProfile Library. =20 Copyright (c) 2017, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ =20 -#include +#include #include -#include +#include #include =20 SMI_HANDLER_PROFILE_PROTOCOL *mSmiHandlerProfile; @@ -82,21 +83,16 @@ SmiHandlerProfileUnregisterHandler ( } =20 /** - The constructor function for SMI handler profile. - - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. + The common constructor function for SMI handler profile. =20 @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. **/ EFI_STATUS -EFIAPI -SmmSmiHandlerProfileLibConstructor ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable +MmSmiHandlerProfileLibInitialization ( + VOID ) { - gSmst->SmmLocateProtocol ( + gMmst->MmLocateProtocol ( &gSmiHandlerProfileGuid, NULL, (VOID **) &mSmiHandlerProfile diff --git a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProf= ileLib.c b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfil= eLib.c index b76e8f0dc132..0167d81b880d 100644 --- a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.= c +++ b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.= c @@ -2,87 +2,17 @@ SMM driver instance of SmiHandlerProfile Library. =20 Copyright (c) 2017, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ =20 -#include -#include -#include -#include +#include =20 -SMI_HANDLER_PROFILE_PROTOCOL *mSmiHandlerProfile; +#include "MmSmiHandlerProfileLib.h" =20 /** - This function is called by SmmChildDispatcher module to report - a new SMI handler is registered, to SmmCore. - - @param HandlerGuid The GUID to identify the type of the handler. - For the SmmChildDispatch protocol, the HandlerGui= d - must be the GUID of SmmChildDispatch protocol. - @param Handler The SMI handler. - @param CallerAddress The address of the module who registers the SMI h= andler. - @param Context The context of the SMI handler. - For the SmmChildDispatch protocol, the Context - must match the one defined for SmmChildDispatch p= rotocol. - @param ContextSize The size of the context in bytes. - For the SmmChildDispatch protocol, the Context - must match the one defined for SmmChildDispatch p= rotocol. - - @retval EFI_SUCCESS The information is recorded. - @retval EFI_UNSUPPORTED The feature is unsupported. - @retval EFI_OUT_OF_RESOURCES There is no enough resource to record the = information. -**/ -EFI_STATUS -EFIAPI -SmiHandlerProfileRegisterHandler ( - IN EFI_GUID *HandlerGuid, - IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, - IN PHYSICAL_ADDRESS CallerAddress, - IN VOID *Context, OPTIONAL - IN UINTN ContextSize OPTIONAL - ) -{ - if (mSmiHandlerProfile !=3D NULL) { - return mSmiHandlerProfile->RegisterHandler (mSmiHandlerProfile, Handle= rGuid, Handler, CallerAddress, Context, ContextSize); - } - return EFI_UNSUPPORTED; -} - -/** - This function is called by SmmChildDispatcher module to report - an existing SMI handler is unregistered, to SmmCore. - - @param HandlerGuid The GUID to identify the type of the handler. - For the SmmChildDispatch protocol, the HandlerGui= d - must be the GUID of SmmChildDispatch protocol. - @param Handler The SMI handler. - @param Context The context of the SMI handler. - If it is NOT NULL, it will be used to check what = is registered. - @param ContextSize The size of the context in bytes. - If Context is NOT NULL, it will be used to check = what is registered. - - @retval EFI_SUCCESS The original record is removed. - @retval EFI_UNSUPPORTED The feature is unsupported. - @retval EFI_NOT_FOUND There is no record for the HandlerGuid and= handler. -**/ -EFI_STATUS -EFIAPI -SmiHandlerProfileUnregisterHandler ( - IN EFI_GUID *HandlerGuid, - IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, - IN VOID *Context, OPTIONAL - IN UINTN ContextSize OPTIONAL - ) -{ - if (mSmiHandlerProfile !=3D NULL) { - return mSmiHandlerProfile->UnregisterHandler (mSmiHandlerProfile, Hand= lerGuid, Handler, Context, ContextSize); - } - return EFI_UNSUPPORTED; -} - -/** - The constructor function for SMI handler profile. + The constructor function for traditional MM SMI handler profile. =20 @param ImageHandle The firmware allocated handle for the EFI image. @param SystemTable A pointer to the EFI System Table. @@ -92,15 +22,9 @@ SmiHandlerProfileUnregisterHandler ( EFI_STATUS EFIAPI SmmSmiHandlerProfileLibConstructor ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - gSmst->SmmLocateProtocol ( - &gSmiHandlerProfileGuid, - NULL, - (VOID **) &mSmiHandlerProfile - ); - return EFI_SUCCESS; + return MmSmiHandlerProfileLibInitialization (); } - diff --git a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHa= ndlerProfileLib.c b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/Standalone= MmSmiHandlerProfileLib.c new file mode 100644 index 000000000000..a7714390e5b1 --- /dev/null +++ b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerPr= ofileLib.c @@ -0,0 +1,31 @@ +/** @file + Standalone MM driver instance of SmiHandlerProfile Library. + + Copyright (c) 2017, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +#include "MmSmiHandlerProfileLib.h" + +/** + The constructor function for standalone MM SMI handler profile. + + @param ImageHandle The firmware allocated handle for the EFI image. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. +**/ +EFI_STATUS +EFIAPI +StandaloneMmSmiHandlerProfileLibConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_MM_SYSTEM_TABLE *SystemTable + ) +{ + return MmSmiHandlerProfileLibInitialization (); +} + diff --git a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfi= leLib.h b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileL= ib.h new file mode 100644 index 000000000000..8e390590ee7b --- /dev/null +++ b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/MmSmiHandlerProfileLib.h @@ -0,0 +1,23 @@ +/** @file + MM driver instance of SmiHandlerProfile Library. + + Copyright (c) 2017, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _MM_SMI_HANDLER_PROFILE_LIB_H_ +#define _MM_SMI_HANDLER_PROFILE_LIB_H_ + +/** + The common constructor function for SMI handler profile. + + @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. +**/ +EFI_STATUS +MmSmiHandlerProfileLibInitialization ( + VOID + ); + +#endif //_SMM_SMI_HANDLER_PROFILE_LIB_H_ diff --git a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProf= ileLib.inf b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProf= ileLib.inf index 1d738c7087c6..56007d502134 100644 --- a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.= inf +++ b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.= inf @@ -27,6 +27,8 @@ [Defines] # =20 [Sources] + MmSmiHandlerProfileLib.c + MmSmiHandlerProfileLib.h SmmSmiHandlerProfileLib.c =20 [Packages] @@ -34,7 +36,7 @@ [Packages] MdeModulePkg/MdeModulePkg.dec =20 [LibraryClasses] - SmmServicesTableLib + MmServicesTableLib =20 [Guids] gSmiHandlerProfileGuid ## CONSUMES ## GUID # Locate protocol diff --git a/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHa= ndlerProfileLib.inf b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/Standalo= neMmSmiHandlerProfileLib.inf new file mode 100644 index 000000000000..a885cc2b2ae1 --- /dev/null +++ b/MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerPr= ofileLib.inf @@ -0,0 +1,44 @@ +## @file +# Standalone MM driver instance of SmiHandlerProfile Library. +# +# This library instance provides real functionality for SmmChildDispatcher= module. +# +# Copyright (c) 2017, Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D StandaloneMmSmiHandlerProfileLib + FILE_GUID =3D 1F2ED27B-A01D-4867-B993-9B710E5926C5 + MODULE_TYPE =3D MM_STANDALONE + VERSION_STRING =3D 1.0 + PI_SPECIFICATION_VERSION =3D 0x10000032 + LIBRARY_CLASS =3D SmiHandlerProfileLib|MM_STANDALONE + CONSTRUCTOR =3D StandaloneMmSmiHandlerProfileLibConst= ructor + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D IA32 X64 +# + +[Sources] + MmSmiHandlerProfileLib.c + MmSmiHandlerProfileLib.h + StandaloneMmSmiHandlerProfileLib.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + MmServicesTableLib + +[Guids] + gSmiHandlerProfileGuid ## CONSUMES ## GUID # Locate protocol + diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index f95c7cd69ee1..7ca4a1bb3080 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -492,6 +492,7 @@ [Components.IA32, Components.X64] MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxStandaloneMmLib.inf MdeModulePkg/Library/SmmCorePlatformHookLibNull/SmmCorePlatformHookLibNu= ll.inf MdeModulePkg/Library/SmmSmiHandlerProfileLib/SmmSmiHandlerProfileLib.inf + MdeModulePkg/Library/SmmSmiHandlerProfileLib/StandaloneMmSmiHandlerProfi= leLib.inf MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaArchCustomDecompressLib= .inf MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.= inf MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf --=20 2.30.0.windows.1