From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.67]) by mx.groups.io with SMTP id smtpd.web11.76864.1670945741464743163 for ; Tue, 13 Dec 2022 07:35:42 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=wV90fcp0; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.237.67, mailfrom: thomas.lendacky@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k0iPqcAKLu9ed6Zn66OLnFkAWyBO5My+kVpgLXNdQg/mql7GnmrQdiYaU3xK7YC2sLVabc9HXoqAMnl18w1GJwQWjOzWwyOWRBRceR60x9Czav6CkdQWjD8mof+42QyEzSADp38IJeVdLSsGvrKbPedpe7eYcPkgYpq/M1z6k3WwH0Drl1S4arqrN51jgMtItQYNuyfvIUgugxr/QjW2r9Yu/iEGZAKawxytBBKMA9gdPW4/ENyZpIUBxVUVmANgCi00xPbdVttOuTDaROFF9SdpqkBBFb1BG0vX7SbichaGPH8TOSFHWZKJ+sHVSd361fgQLcd/PrReZzRSELf7DA== 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=brs3L3oTXH4/Vbr7Oy/TAE3TEJDsHd8sSAICHhgHYeQ=; b=hq9nwIfREzYP2jrTIFW7SdeiOKypizPj8XojomtYYVIltN22gR0cpBLPTpmmnTSgaUtFeZ0CK1SF1lTYtFK6PuBx7wpPDWpsFaIbeHg1UsuFZOyThlqDslZCI3+hX7ThQyp0lJlqx6oyNP99HOSWjdMazxZ7nvZSj5RtyDtq7liwD8WHlInS7kPMUL3KtfQf1SuE+lvpBnPL14rru3r8v6Z1wS1fOs8oKOHTfg0NH4iskRm293coqxhuL8xOJAxG+vCJbrhiJjhIY9MahBPE9HR9kkaZK0mCO6x/D4irVXT2A8UHWSEJM82TXWnxuDqUg9IhNp30jmWwTw7Rm7g8SA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=brs3L3oTXH4/Vbr7Oy/TAE3TEJDsHd8sSAICHhgHYeQ=; b=wV90fcp07hgxMbvJOUvXw+9NGVhff70nvJ1DgsHYqFzeH7ee45IrZ6hY12nGBExZFBzJLQqtTG7aZ9TOqbNyRQlxZ71W0CJB5kPdnXdmtvJUTSpOoqX/qCI1AyDQDR6hRx82dT3EqqekARO1zX7eCOkaHwuBU0ezaFSowSs5/OY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from DM4PR12MB5229.namprd12.prod.outlook.com (2603:10b6:5:398::12) by SN7PR12MB6886.namprd12.prod.outlook.com (2603:10b6:806:262::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Tue, 13 Dec 2022 15:35:32 +0000 Received: from DM4PR12MB5229.namprd12.prod.outlook.com ([fe80::8200:4042:8db4:63d7]) by DM4PR12MB5229.namprd12.prod.outlook.com ([fe80::8200:4042:8db4:63d7%4]) with mapi id 15.20.5880.019; Tue, 13 Dec 2022 15:35:31 +0000 Message-ID: <3e8a7e92-29d3-4a83-d49a-9829cf348635@amd.com> Date: Tue, 13 Dec 2022 09:35:29 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [edk2-devel] [PATCH V2 3/4] OvmfPkg/IoMmuDxe: Add SEV support for reserved shared memory To: "Xu, Min M" , "devel@edk2.groups.io" Cc: "Aktas, Erdem" , James Bottomley , "Yao, Jiewen" , Gerd Hoffmann References: <20221213054824.53-1-min.m.xu@intel.com> <1730444AD2D72EE9.23954@groups.io> From: "Lendacky, Thomas" In-Reply-To: X-ClientProxiedBy: BL0PR1501CA0016.namprd15.prod.outlook.com (2603:10b6:207:17::29) To DM4PR12MB5229.namprd12.prod.outlook.com (2603:10b6:5:398::12) Return-Path: Thomas.Lendacky@amd.com MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB5229:EE_|SN7PR12MB6886:EE_ X-MS-Office365-Filtering-Correlation-Id: 7f10d6f2-0db4-4ccd-86c4-08dadd1fab7b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UScjZRJxTpxmgZlmkx5W18z9zkpnblP66Iyn96hYc0GmIqaln0tH+vfRs61qN0KarsLpeYVJG6aBHjOv+ajl3cEfdRUwj/Lzz5jzdR/uvoOveaYokwmTW1h03/MKyGq9FboycW9q6UlcMwq496qD8cJtpdoQ4mmELSxBByC3GHLrYa3G6C2I+IiOenZZb7aHl8kiA6DbzuT1Dh2g0N6Dq7q43PhhtPaQfT+9wVwQtLLOmfl0ErpIeYZtO3lfXWfEywTz+ByEmqYoSu3KfB/wbxJGAvpSmf6skM7K/jvtKo3sb/dlzNnO97EvTwDP4m8AVEFI3zZIq7MKil1EDDDOT08L12xISp4YIFm7dkvW4zkNBxC9C+g4Q0fIzkXPSXpSthA+uhV1rfAmxuJpY7WCwhNIDnCjbr9FVqVxnVt/Z7uoEXXtT7L4v4VAe1UkVHfPK/KvM6JsdnEldxwZ0KEnM5rVsXqaRnGVJSAr4+c3UcZoyzgtaKhoRbP2BzAu6mXt33o7YNYqhifybTi/jqxYcnkLGgZX3RT+sVdOJjU9MvCtAnTbb3/1ssm+yvoWT/u8YGxtIm2Lofy4VZp4e45lqBGEje2xgJUB0y8gOXZB/Oio1W83nZ3hQ9QAOQRJMB/FiEJ7RJ6FgS9GRDkd3q/1CrVR/tIVtlvnwJJo6H7M8NwClcQUeYEJtFET9v/17cCqTMhzIoJI53+AZplRPLY+XJ4+t8/8GGwa3V9U+JIG6hkcU9R+aE7BryORnu4IMZrb X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB5229.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(6029001)(4636009)(396003)(136003)(366004)(39860400002)(346002)(376002)(451199015)(66899015)(36756003)(54906003)(316002)(966005)(6506007)(110136005)(6512007)(26005)(186003)(53546011)(6486002)(86362001)(31696002)(83380400001)(8676002)(66476007)(66556008)(31686004)(4326008)(66946007)(38100700002)(41300700001)(2616005)(478600001)(5660300002)(2906002)(8936002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?U05UU3JCTk9RanlHOTd1dE5TZ01BcTQxYjdzTlhwRlFJMjB5dHdGdzNPZG1y?= =?utf-8?B?RjdUSlU2SU81a0IyZ2QzaWlwQWlSaUdubEpBRnR6aFl0aFNPaGxMWmEvVGsv?= =?utf-8?B?cGRkNmVPNHkwd2Y1MTAzb2tucW1zK3ZqblB5VGM0Q3loT2pML040OTdTZHN6?= =?utf-8?B?VEdpS2VUTU44MG9sTGE2MXpTMlF0WVFjUWFQQnpEd3hYNHFzdTVpMFFkMFNG?= =?utf-8?B?aU5YUis5bUxwaE05RjZNSWxtc0YyczBqNWxocjFkVmtvUmM5a2JWRTNkL2xm?= =?utf-8?B?ZXhBYlJRRnVEb2RGSlo1Z3AyRkE4bHQ5SGs4WFJMN2kwMUttbXNOR3ZBbFdI?= =?utf-8?B?WGFucUZDRldBVTFEL0wwUnRjWCthNUdNZWwyRWdiOVd5QzZ1VkwxU3lpeVpo?= =?utf-8?B?WHpSQkdOcS94Qm1iTVc0bEJ2MTNFT2lQZEZ5RGZDL09pMWtaeDlpUExZazJn?= =?utf-8?B?cnpibHQ1UVE0K29NQ0RldG9sWldYWVpXNEhOMDlyUDU5NlIyTDhaTnU1Zm9x?= =?utf-8?B?UzJLOWRjYVMvKzZzaWVqQ0RraDE1a3l3ZU5HdXpTbUpTMmRGd1hlQVpBYzhD?= =?utf-8?B?alZ4TWFIUlVrMGJscXRMcytNMmx4MW1EMnR1UGppaUdjaGZQMkxWUWRTL3Qv?= =?utf-8?B?OGhialBnbXJOK1NwNjM1QzlCeTlFYURjK1F6NEthb09Kdk9udTh3SUpSUjdO?= =?utf-8?B?cjhCeEN0S2VZQ2FaZTJXTVhIVGZaSHkvMkxJVE9TT2RWSnRUVXBYTU4vNllY?= =?utf-8?B?WUFQaVZEd2RGNk9kVWd4ckFYRG9rbnJSUm9WQXRnUW0xZ256RkhDRkxnblVN?= =?utf-8?B?V08wNzByVE5GazFYNk1mejlIeDVBd0J5Ti9DakZQMGVyNmp0TG8yTGQ1Z29F?= =?utf-8?B?OWJjUDhOUlJvVFdPdlpnQXl4Uk5RQjIvTGs5WmZhWFdmMDlubmFSYzFJWGVl?= =?utf-8?B?akl3VnF4ZkdNcEZVdmJEZUx3THQ4YWNsNHY3ajNnRVA3QjRnYzBNTmZLU05m?= =?utf-8?B?d2xabjNVNEN0Qml6UnNVdWU2cS9hT0E5dGpFZnNhTFlNdnBuMkNBdG1Pb0pY?= =?utf-8?B?Y0krZlpTck1oQ0R0WXBvOE8xcktwWnZKRmVpSUhMMnV1eDk3ZmFaNmpSbm1r?= =?utf-8?B?SFZVYWRJL1dya0tBWWZTTUNUZllhVnErR0x0Y3llL242dmdadE9SSVE4Q1hJ?= =?utf-8?B?WVJsRnpqdFZkRE1tVmU4eWtXZXJkY0VkU2owQlhHQ2QwTnVFNlArTGk1aEY4?= =?utf-8?B?cVpPU1ZSVjdzVE1hNkdmeFJ4QVdWUjVrQXowZW43TlBHT3pxdTJFdWRWUU5s?= =?utf-8?B?V3laMzl2UHVtT2IrbElhbTM0ZGVYQU1BZzY5Q1JSM2N4YVN5NDM0VmN5ajVL?= =?utf-8?B?aHJiMlpEZm5XYWtpbU9EOHdMVGswaUcvM1Azdk9RVUFYRFd3aHpOWmhsOXJn?= =?utf-8?B?Nk12d0ozU0IrSmNzZ2dGSGZrZ2RJelZyczA5L2MzRm52UjQrajlQUXF3WEtz?= =?utf-8?B?dzBySHd5YTBlUnRRWmc5UTB4MHNZMHFrWWRYQXQrQ2ZmYnVFZUdncnJYR1kw?= =?utf-8?B?VEtFRWxRTkdVSHo4cmJjeXlkeWtmQWQ4YW5oM04vaUZZM1lJY0c0TGFyMlJJ?= =?utf-8?B?UzlvVUZqLy9JZy9tekJrNXBCak8rZlNKL211MUcvTXZudG8xcU1VekxUNTlQ?= =?utf-8?B?eTR5blNJWG9GN0ExUVJ3TVB0ZEFHdE1TcmdHaGJXeUVaV2QrTWdNb3RLcGlY?= =?utf-8?B?M2tMOWo2REZHbS81OGVQL2V0VDVJcG1lbFpRQXg0NUtpTHdxOGxEcVhKenJm?= =?utf-8?B?Si9aZFNneU9mRjFXeUZwZ1pCbHBaa01hVTBzNjlZa0hhamFML3BLY2lRU3JC?= =?utf-8?B?WFpyTVE4MXVOVmdmTzdVd3ZiYkt1am9EbFliZ2o5aEpzK3dJL1N6NUk2dUZD?= =?utf-8?B?ZkxITitTTzMvSW9saHk3OVNCVW0rcWtxUHNXY0tiTDNzb0Z1ZzBYcnNRb0h6?= =?utf-8?B?NHZiL0swdkpEalNQRlphOWZtWExURkhBWDlaZTRBMEdzbFpXZ0lHNnYzWnNk?= =?utf-8?B?eVNoempxRGVIQ1IrSzNVYnpxbnUzRVJDeFZCVTNJOEpFMXRQaFRiQm91R2ha?= =?utf-8?Q?aGOkCBnOtK0Jc4nFBIDxVuS+A?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f10d6f2-0db4-4ccd-86c4-08dadd1fab7b X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5229.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2022 15:35:31.8632 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rgBwaWACobdH7rA0J15uID+snonriR1kIiWj3WI+nqmqBCa2el1VmfQJHLo/2BTPUBKsfwWMEvQncTRyC6hjhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6886 Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/12/22 23:52, Xu, Min M wrote: > Hi, Tom > I cannot apply the patch extracted from your mail with the git am command. So I have to manually port the patch. Please check and test if the patch is correct. Thanks, Min! Will do. I'll report back once I'm done. Thanks, Tom > > Thanks > Min > >> -----Original Message----- >> From: devel@edk2.groups.io On Behalf Of Min Xu >> Sent: Tuesday, December 13, 2022 1:48 PM >> To: devel@edk2.groups.io >> Cc: Tom Lendacky ; Aktas, Erdem >> ; James Bottomley ; Yao, >> Jiewen ; Xu, Min M ; Gerd >> Hoffmann ; Yao, Jiewen >> Subject: [edk2-devel] [PATCH V2 3/4] OvmfPkg/IoMmuDxe: Add SEV support >> for reserved shared memory >> >> From: Tom Lendacky >> >> Add support to use the reserved shared memory within the IoMmu library. >> This improves boot times for all SEV guests, with SEV-SNP benefiting the most >> as it avoids the page state change call to the hypervisor. >> >> Cc: Erdem Aktas >> Cc: James Bottomley >> Cc: Jiewen Yao >> Cc: Min Xu >> Cc: Gerd Hoffmann >> Acked-by: Jiewen Yao >> Signed-off-by: Tom Lendacky >> --- >> OvmfPkg/IoMmuDxe/CcIoMmu.c | 81 +++++++++++++++++----------------- >> OvmfPkg/IoMmuDxe/IoMmuBuffer.c | 54 ++++++++++++++++++----- >> 2 files changed, 83 insertions(+), 52 deletions(-) >> >> diff --git a/OvmfPkg/IoMmuDxe/CcIoMmu.c >> b/OvmfPkg/IoMmuDxe/CcIoMmu.c index 1479af469881..e5cbf037c50d >> 100644 >> --- a/OvmfPkg/IoMmuDxe/CcIoMmu.c >> +++ b/OvmfPkg/IoMmuDxe/CcIoMmu.c >> @@ -223,30 +223,33 @@ IoMmuMap ( >> goto FreeMapInfo; >> } >> >> - if (CC_GUEST_IS_SEV (PcdGet64 (PcdConfidentialComputingGuestAttr))) { >> - // >> - // Clear the memory encryption mask on the plaintext buffer. >> - // >> - Status = MemEncryptSevClearPageEncMask ( >> - 0, >> - MapInfo->PlainTextAddress, >> - MapInfo->NumberOfPages >> - ); >> - } else if (CC_GUEST_IS_TDX (PcdGet64 >> (PcdConfidentialComputingGuestAttr))) { >> + if (MapInfo->ReservedMemBitmap == 0) { >> // >> // Set the memory shared bit. >> // If MapInfo->ReservedMemBitmap is 0, it means the bounce buffer is >> not allocated >> // from the pre-allocated shared memory, so it must be converted to >> shared memory here. >> // >> - if (MapInfo->ReservedMemBitmap == 0) { >> + if (CC_GUEST_IS_SEV (PcdGet64 (PcdConfidentialComputingGuestAttr))) { >> + // >> + // Clear the memory encryption mask on the plaintext buffer. >> + // >> + Status = MemEncryptSevClearPageEncMask ( >> + 0, >> + MapInfo->PlainTextAddress, >> + MapInfo->NumberOfPages >> + ); >> + } else if (CC_GUEST_IS_TDX (PcdGet64 >> (PcdConfidentialComputingGuestAttr))) { >> + // >> + // Set the memory shared bit. >> + // >> Status = MemEncryptTdxSetPageSharedBit ( >> 0, >> MapInfo->PlainTextAddress, >> MapInfo->NumberOfPages >> ); >> + } else { >> + ASSERT (FALSE); >> } >> - } else { >> - ASSERT (FALSE); >> } >> >> ASSERT_EFI_ERROR (Status); >> @@ -396,30 +399,30 @@ IoMmuUnmapWorker ( >> break; >> } >> >> - if (CC_GUEST_IS_SEV (PcdGet64 (PcdConfidentialComputingGuestAttr))) { >> - // >> - // Restore the memory encryption mask on the area we used to hold the >> - // plaintext. >> - // >> - Status = MemEncryptSevSetPageEncMask ( >> - 0, >> - MapInfo->PlainTextAddress, >> - MapInfo->NumberOfPages >> - ); >> - } else if (CC_GUEST_IS_TDX (PcdGet64 >> (PcdConfidentialComputingGuestAttr))) { >> - // >> - // Restore the memory shared bit mask on the area we used to hold the >> - // plaintext. >> - // >> - if (MapInfo->ReservedMemBitmap == 0) { >> + if (MapInfo->ReservedMemBitmap == 0) { >> + if (CC_GUEST_IS_SEV (PcdGet64 (PcdConfidentialComputingGuestAttr))) { >> + // >> + // Restore the memory encryption mask on the area we used to hold the >> + // plaintext. >> + // >> + Status = MemEncryptSevSetPageEncMask ( >> + 0, >> + MapInfo->PlainTextAddress, >> + MapInfo->NumberOfPages >> + ); >> + } else if (CC_GUEST_IS_TDX (PcdGet64 >> (PcdConfidentialComputingGuestAttr))) { >> + // >> + // Restore the memory shared bit mask on the area we used to hold the >> + // plaintext. >> + // >> Status = MemEncryptTdxClearPageSharedBit ( >> 0, >> MapInfo->PlainTextAddress, >> MapInfo->NumberOfPages >> ); >> + } else { >> + ASSERT (FALSE); >> } >> - } else { >> - ASSERT (FALSE); >> } >> >> ASSERT_EFI_ERROR (Status); >> @@ -924,16 +927,14 @@ InstallIoMmuProtocol ( >> } >> >> // >> - // Currently only Tdx guest support Reserved shared memory for DMA >> operation. >> + // For CC guests, use reserved shared memory for DMA operation. >> // >> - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { >> - mReservedSharedMemSupported = TRUE; >> - Status = IoMmuInitReservedSharedMem (); >> - if (EFI_ERROR (Status)) { >> - mReservedSharedMemSupported = FALSE; >> - } else { >> - DEBUG ((DEBUG_INFO, "%a: Feature of reserved memory for DMA is >> supported.\n", __FUNCTION__)); >> - } >> + mReservedSharedMemSupported = TRUE; >> + Status = IoMmuInitReservedSharedMem (); >> + if (EFI_ERROR (Status)) { >> + mReservedSharedMemSupported = FALSE; } else { >> + DEBUG ((DEBUG_INFO, "%a: Feature of reserved memory for DMA is >> + supported.\n", __FUNCTION__)); >> } >> >> return EFI_SUCCESS; >> diff --git a/OvmfPkg/IoMmuDxe/IoMmuBuffer.c >> b/OvmfPkg/IoMmuDxe/IoMmuBuffer.c index 1e77d8a57402..3139d10f4c2d >> 100644 >> --- a/OvmfPkg/IoMmuDxe/IoMmuBuffer.c >> +++ b/OvmfPkg/IoMmuDxe/IoMmuBuffer.c >> @@ -9,7 +9,9 @@ >> #include >> #include >> #include >> +#include >> #include >> +#include >> #include >> #include "IoMmuInternal.h" >> >> @@ -139,6 +141,7 @@ IoMmuInitReservedSharedMem ( >> UINTN TotalPages; >> IOMMU_RESERVED_MEM_RANGE *MemRange; >> EFI_PHYSICAL_ADDRESS PhysicalAddress; >> + UINT64 SharedAddress; >> >> if (!mReservedSharedMemSupported) { >> return EFI_UNSUPPORTED; >> @@ -163,12 +166,25 @@ IoMmuInitReservedSharedMem ( >> MemRange->StartAddressOfMemRange = PhysicalAddress; >> >> for (Index2 = 0; Index2 < MemRange->Slots; Index2++) { >> - Status = MemEncryptTdxSetPageSharedBit ( >> - 0, >> - (UINT64)(UINTN)(MemRange->StartAddressOfMemRange + Index2 >> * SIZE_OF_MEM_RANGE (MemRange) + MemRange->HeaderSize), >> - EFI_SIZE_TO_PAGES (MemRange->DataSize) >> - ); >> - ASSERT (!EFI_ERROR (Status)); >> + SharedAddress = (UINT64)(UINTN)(MemRange- >>> StartAddressOfMemRange >> + + Index2 * SIZE_OF_MEM_RANGE (MemRange) + MemRange->HeaderSize); >> + >> + if (CC_GUEST_IS_SEV (PcdGet64 (PcdConfidentialComputingGuestAttr))) >> { >> + Status = MemEncryptSevClearPageEncMask ( >> + 0, >> + SharedAddress, >> + EFI_SIZE_TO_PAGES (MemRange->DataSize) >> + ); >> + ASSERT (!EFI_ERROR (Status)); >> + } else if (CC_GUEST_IS_TDX (PcdGet64 >> (PcdConfidentialComputingGuestAttr))) { >> + Status = MemEncryptTdxSetPageSharedBit ( >> + 0, >> + SharedAddress, >> + EFI_SIZE_TO_PAGES (MemRange->DataSize) >> + ); >> + ASSERT (!EFI_ERROR (Status)); >> + } else { >> + ASSERT (FALSE); >> + } >> } >> >> PhysicalAddress += (MemRange->Slots * SIZE_OF_MEM_RANGE >> (MemRange)); @@ -190,16 +206,30 @@ >> IoMmuReleaseReservedSharedMem ( >> EFI_STATUS Status; >> UINT32 Index1, Index2; >> IOMMU_RESERVED_MEM_RANGE *MemRange; >> + UINT64 SharedAddress; >> >> for (Index1 = 0; Index1 < ARRAY_SIZE (mReservedMemRanges); Index1++) { >> MemRange = &mReservedMemRanges[Index1]; >> for (Index2 = 0; Index2 < MemRange->Slots; Index2++) { >> - Status = MemEncryptTdxClearPageSharedBit ( >> - 0, >> - (UINT64)(UINTN)(MemRange->StartAddressOfMemRange + Index2 >> * SIZE_OF_MEM_RANGE (MemRange) + MemRange->HeaderSize), >> - EFI_SIZE_TO_PAGES (MemRange->DataSize) >> - ); >> - ASSERT (!EFI_ERROR (Status)); >> + SharedAddress = (UINT64)(UINTN)(MemRange- >>> StartAddressOfMemRange >> + + Index2 * SIZE_OF_MEM_RANGE (MemRange) + MemRange->HeaderSize); >> + >> + if (CC_GUEST_IS_SEV (PcdGet64 (PcdConfidentialComputingGuestAttr))) >> { >> + Status = MemEncryptSevSetPageEncMask ( >> + 0, >> + SharedAddress, >> + EFI_SIZE_TO_PAGES (MemRange->DataSize) >> + ); >> + ASSERT (!EFI_ERROR (Status)); >> + } else if (CC_GUEST_IS_TDX (PcdGet64 >> (PcdConfidentialComputingGuestAttr))) { >> + Status = MemEncryptTdxClearPageSharedBit ( >> + 0, >> + SharedAddress, >> + EFI_SIZE_TO_PAGES (MemRange->DataSize) >> + ); >> + ASSERT (!EFI_ERROR (Status)); >> + } else { >> + ASSERT (FALSE); >> + } >> } >> } >> >> -- >> 2.29.2.windows.2 >> >> >> >> >> >