From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (NAM02-SN1-obe.outbound.protection.outlook.com []) by mx.groups.io with SMTP id smtpd.web10.17387.1614379957711548031 for ; Fri, 26 Feb 2021 14:52:38 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@outlook.com header.s=selector1 header.b=EG/dWPsO; spf=softfail (domain: outlook.com, ip: , mailfrom: kun.q@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CI80j4TYkKxd7ywOUqhz6mVAZT/SeRp0iQDfp0s0j1lkvg+3RAR6VfOD6/icGBPf6BELfMs7+B1+FjcAyxyHgvsLxHexHKrj/KqQo+BWX169AdzwT+NzY+DDQ7ZG89yUA5qNMD/c/4MPMHxWSgCaP8wqRjQ3TAH1ZoxTDgq4TRwrnq7nH0wC6YXND89iKACSPscZmmEYWTfvdQs3uHmHoUR2UQeaA+P4U1q4uKC3nNnMrg2nn8Abd1k+4mpgR1IkJc48+v67nlY8N0688PlqfE4hMcb/YBYdmprvhsR1aX6d/nLcVmyPlFXkLO5WtGW9sJ9aAy5dmF80j7RaA4B0Bw== 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=2JJmUQ/KPDdL0EiFrbVnzaSDnpKTLtT+Y/YMT/HtM/8=; b=HCZHu/tJgCFsuFABWPfAixWu+GXOSpgnCxTXyjVvlsLmzI6BddID42Z+eQem4zetecRt/AsbBEN+5sB0Zd+U8dh5fUzQvvJpOISlrLusx/WIWQQA1ENkMoRm6jsfhfSFk8OqGhGkwQ5PikHNuFI7+9agUOJEMfqElxBq1R6XPzxeyVO6X2vYFyTytNVe/W4f1YGeCB5NoQczwmmTfYE+K2kEFahPQqOa3PgdOcweUQOpPZVj8iRvoUqy2HB0mcrH6K0/OeGLeVM4AG0PV7KO1QJQlzPBug2sJJhA2zCgkEFK0sqictUE2PhoGGHu9jpjGrfG8hsy0ELhp2Xwz/MrUw== 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=2JJmUQ/KPDdL0EiFrbVnzaSDnpKTLtT+Y/YMT/HtM/8=; b=EG/dWPsOHs4VyOSLzcO6hzuhFD9cZqRQYttE1U475u7OjkXxx6eXTHk+RkGlDHbyIuPWXPz+Gt6csIye86Q1PLEk9VAJ2UpmnoNvwtQo91GzVOLU/UPXvufu/HCCmdhdDXgyakL9b61oWIIoIRbA57M26geOtYeD82SJQggU2/qRHtlxoO0Lb+6SPRtmltRQkQq9TsfSVPCwQx63d7C8jKps4gilEPFo+A5ZCOVQk3svEYk6/To5/hO7xZjt2CM0M3lH1iIYTTpmj7JcNnnUsYAUw0K4v2a2NDytOnNnaX4ne4GwSNWjAPHnaUElM++eIOtyxLsmxNcAnm4lAcK7oA== Received: from BL2NAM02FT003.eop-nam02.prod.protection.outlook.com (10.152.76.55) by BL2NAM02HT173.eop-nam02.prod.protection.outlook.com (10.152.77.45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19; Fri, 26 Feb 2021 22:52:36 +0000 Received: from MWHPR06MB3102.namprd06.prod.outlook.com (2a01:111:e400:7e46::4a) by BL2NAM02FT003.mail.protection.outlook.com (2a01:111:e400:7e46::204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19 via Frontend Transport; Fri, 26 Feb 2021 22:52:36 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:B0EC18E211F0358FCF488D3FB7791E784E6520627C4B5F686D3FC49599D35AB5;UpperCasedChecksum:3953E9754433737DA02561926C67F41A3CC5D26AEE2895CB572BC85537926F19;SizeAsReceived:7541;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%7]) with mapi id 15.20.3868.032; Fri, 26 Feb 2021 22:52:36 +0000 From: "Kun Qin" To: devel@edk2.groups.io CC: Michael D Kinney , Liming Gao , Zhiguang Liu , Hao A Wu , Jiewen Yao Subject: [PATCH v3 1/7] MdePkg: MmUnblockMemoryLib: Added definition and null instance Date: Fri, 26 Feb 2021 14:51:52 -0800 Message-ID: X-Mailer: git-send-email 2.30.0.windows.1 In-Reply-To: <20210226225158.1378-1-kun.q@outlook.com> References: <20210226225158.1378-1-kun.q@outlook.com> X-TMN: [HLg/8jrFMQGJFIZQ6U54q5YUfkLi34lT] X-ClientProxiedBy: MWHPR12CA0053.namprd12.prod.outlook.com (2603:10b6:300:103::15) To MWHPR06MB3102.namprd06.prod.outlook.com (2603:10b6:301:3e::35) Return-Path: kun.q@outlook.com X-Microsoft-Original-Message-ID: <20210226225158.1378-2-kun.q@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (50.35.88.161) by MWHPR12CA0053.namprd12.prod.outlook.com (2603:10b6:300:103::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.20 via Frontend Transport; Fri, 26 Feb 2021 22:52:35 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: e617765e-4b15-4670-e836-08d8daa935c2 X-MS-TrafficTypeDiagnostic: BL2NAM02HT173: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jzlbioU3AUHKcYfEcKPcGhF8ggm/m5/kaClr5veFJAMJQbYDkgtwObHFm1EsNzRH5oANiCgJi4AvZB8GXQ9Yd9IlexWGQA4aaOZAIBGSzL2WdT0BlK5vWHGil6lOLa5u244xxgfitSMJXxm1PJTzRRAG7UIDkfthCL2j4qEP1E7xtwIheGcZ9xn5HFgK0CJAvcF+tO40MWqEPtEklogTYRSsdXUX7f7EdQcKvQaYrw9IHPEQ50L6w+VKTDgvTNlREB5rzCBi7bTuQb0ZZot/0lsjUTWAQYzlAKeDYEqvHp+xatutB1dJLLk7r7iwMh9EvlDCr06Wh3SRgIvIHl/L9sE/15RRo58wUJBXrmwGC5AxEgX11ZhO16+OnsK0tyVpH1lnTfIo+YXtJDr8+DwMvfgN/chpFJ8kYgDqN15IGFE= X-MS-Exchange-AntiSpam-MessageData: yYmLckqAwGe5A4VrxtJSga7+rP2DUzfZEaQ9MYf8VLpbOkSyUfEQbwtrHA4/HTm69RCXrVX+dmL5ZbGcWU5P0itWhcyl2jv6OVeJUgF0PpprAGCJN+0yMCvzpOVkmOl3TgrN2pXkqFGW27jUSfbm1A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e617765e-4b15-4670-e836-08d8daa935c2 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2021 22:52:36.1265 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: BL2NAM02FT003.eop-nam02.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: BL2NAM02HT173 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3168 This interface definition provides an abstraction layer for applicable drivers to request certain memory blocks to be mapped/unblocked for accessibility inside MM environment. Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Cc: Hao A Wu Cc: Jiewen Yao Signed-off-by: Kun Qin --- Notes: v3: - Move interface to MdePkg [Hao, Liming, Jiewen] - Remove Dxe prefix [Jiewen] =20 v2: - Resend with practical usage. No change [Hao] MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.c | 40 ++++++++= ++++++++++++ MdePkg/Include/Library/MmUnblockMemoryLib.h | 40 ++++++++= ++++++++++++ MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.inf | 29 ++++++++= ++++++ MdePkg/MdePkg.dec | 5 +++ MdePkg/MdePkg.dsc | 1 + 5 files changed, 115 insertions(+) diff --git a/MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.c b/M= dePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.c new file mode 100644 index 000000000000..ed9a45587b64 --- /dev/null +++ b/MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.c @@ -0,0 +1,40 @@ +/** @file + Null instance of MM Unblock Page Library. + + This library provides an abstraction layer of requesting certain page ac= cess to be unblocked + by MM environment if applicable. + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +/** + This API provides a way to unblock certain data pages to be accessible i= nside MM environment. + + @param UnblockAddress The address of buffer caller requests to= unblock, the address + has to be page aligned. + @param NumberOfPages The number of pages requested to be unbl= ocked from MM + environment. + + @return EFI_SUCCESS The request goes through successfully. + @return EFI_NOT_AVAILABLE_YET The requested functionality is not produ= ced yet. + @return EFI_UNSUPPORTED The requested functionality is not suppo= rted on current platform. + @return EFI_SECURITY_VIOLATION The requested address failed to pass sec= urity check for + unblocking. + @return EFI_INVALID_PARAMETER Input address either NULL pointer or not= page aligned. + @return EFI_ACCESS_DENIED The request is rejected due to system ha= s passed certain boot + phase. + +**/ +EFI_STATUS +EFIAPI +MmUnblockMemoryRequest ( + IN EFI_PHYSICAL_ADDRESS UnblockAddress, + IN UINT64 NumberOfPages + ) +{ + return EFI_UNSUPPORTED; +} diff --git a/MdePkg/Include/Library/MmUnblockMemoryLib.h b/MdePkg/Include/L= ibrary/MmUnblockMemoryLib.h new file mode 100644 index 000000000000..adff8ddc8063 --- /dev/null +++ b/MdePkg/Include/Library/MmUnblockMemoryLib.h @@ -0,0 +1,40 @@ +/** @file + MM Unblock Memory Library Interface. + + This library provides an abstraction layer of requesting certain page ac= cess to be unblocked + by MM environment if applicable. + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef MM_UNBLOCK_MEMORY_LIB_H_ +#define MM_UNBLOCK_MEMORY_LIB_H_ + +/** + This API provides a way to unblock certain data pages to be accessible i= nside MM environment. + + @param UnblockAddress The address of buffer caller requests to= unblock, the address + has to be page aligned. + @param NumberOfPages The number of pages requested to be unbl= ocked from MM + environment. + + @return EFI_SUCCESS The request goes through successfully. + @return EFI_NOT_AVAILABLE_YET The requested functionality is not produ= ced yet. + @return EFI_UNSUPPORTED The requested functionality is not suppo= rted on current platform. + @return EFI_SECURITY_VIOLATION The requested address failed to pass sec= urity check for + unblocking. + @return EFI_INVALID_PARAMETER Input address either NULL pointer or not= page aligned. + @return EFI_ACCESS_DENIED The request is rejected due to system ha= s passed certain boot + phase. + +**/ +EFI_STATUS +EFIAPI +MmUnblockMemoryRequest ( + IN EFI_PHYSICAL_ADDRESS UnblockAddress, + IN UINT64 NumberOfPages +); + +#endif // MM_UNBLOCK_MEMORY_LIB_H_ diff --git a/MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.inf b= /MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.inf new file mode 100644 index 000000000000..4c1f3d1c8e87 --- /dev/null +++ b/MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.inf @@ -0,0 +1,29 @@ +## @file +# Null instance of MM Unblock Page Library. +# +# This library provides an abstraction layer of requesting certain page a= ccess to be unblocked +# by MM environment if applicable. +# +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION =3D 0x0001001B + BASE_NAME =3D MmUnblockMemoryLibNull + FILE_GUID =3D 9E890F68-5C95-4C31-95DD-59E6286F85EA + MODULE_TYPE =3D BASE + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D MmUnblockMemoryLib + +# +# VALID_ARCHITECTURES =3D IA32 X64 +# + +[Sources] + MmUnblockMemoryLibNull.c + +[Packages] + MdePkg/MdePkg.dec diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 3928db65d188..32a9e009c813 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -257,6 +257,11 @@ [LibraryClasses] # UnitTestHostBaseLib|Test/UnitTest/Include/Library/UnitTestHostBaseLib.h =20 + ## @libraryclass This library provides an interface for DXE drivers to= request MM environment + # to map/unblock a memory region for accessibility inside MM. + # + MmUnblockMemoryLib|Include/Library/MmUnblockMemoryLib.h + [LibraryClasses.IA32, LibraryClasses.X64] ## @libraryclass Abstracts both S/W SMI generation and detection. ## diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc index ce009086815f..79629e3f93ba 100644 --- a/MdePkg/MdePkg.dsc +++ b/MdePkg/MdePkg.dsc @@ -168,6 +168,7 @@ [Components.IA32, Components.X64] MdePkg/Library/SmmPciExpressLib/SmmPciExpressLib.inf MdePkg/Library/SmiHandlerProfileLibNull/SmiHandlerProfileLibNull.inf MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf + MdePkg/Library/MmUnblockMemoryLib/MmUnblockMemoryLibNull.inf =20 [Components.EBC] MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf --=20 2.30.0.windows.1