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.107.94.76]) by mx.groups.io with SMTP id smtpd.web11.77767.1670947530472721214 for ; Tue, 13 Dec 2022 08:05:30 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=1eI0EBk1; 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.94.76, mailfrom: thomas.lendacky@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I+VZL7IgzOzNeYOcXAGDUPpJc9llFyCTMHftHSBysimg2m9ZIvJLI+nQQ1bEQ2Dcc1j+Vu0fdHFznzOrnfdLQu6a839DfmsYNm0Gd/B2PZXWdT0rY2vlIc8EkBgYR3GoJ0+zmcPpUaCXQwcSJ3bRB8l93kr7RVI/je+0POPDFRzFVgfE9ilXe30MrCvLwZYA3WWzmFL3Q2cd9afjW3IYwtsGJGf2fkAkOOOKI5sLHkuAOuw/I1rLQOb3LZJ+MVJ5/T1yqlPgcUVuDdj2fElCSUzmABwLMgFtZvhLJIpXMzfh+UrCxTUvYTtFHNxiJyJ6zsV1KYGnEthyOUSaYIJbLA== 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=eUcmcdfbjiSSLoT6zTPADbfA1EqI9NuwIwpBOEWdY/g=; b=AG3gwNFVeRyH2uHI/DDaNYUSRhTiK8wrqLrz7b7bZnJvtMh+yfxiUrGUuvptgi7A1hBnKGx1hb6k3p61mV2GUvPZH7jlBiutJdFH/uNps8xk4etU+T44V9YDydEL0HwNBFFztESgc7PBP0fDt0yH3dZ/TO1TltaqUu5JCILlcK1cHaV1DJ/P4iBf1MsovMgjobi9EySbbXA+V444tID93Wj1TWNviWnKSk7MNr0lZaDVIZZbCMgxX7JZv+Sn0GUfw8gHhvsq3DGUQAHs6wuGIabVlDHLNH2G74ioHvF72aJUcQ72tFFm6aefC0g9HpfgLaKJA+UfgFU4p97pN/48GA== 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=eUcmcdfbjiSSLoT6zTPADbfA1EqI9NuwIwpBOEWdY/g=; b=1eI0EBk17WRth4eZXpTGKJiL9zYK55MZXzDQs8hpKIZtzgu3b9wncfwugpmapo+StISsQAgfaIREras+sE6eTp5UhLlqCtlY0fyiAaDBrgpDsyjghlfjzJjm5VaXxX9LOnKfBxQQTrEKwzKhhAakZExZnWSHhKMXeWaec3G8GI4= 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 SN7PR12MB7372.namprd12.prod.outlook.com (2603:10b6:806:29b::15) 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 16:05:28 +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 16:05:27 +0000 Message-ID: <44b6e3ca-69e4-bc23-6a46-6138456c7ae1@amd.com> Date: Tue, 13 Dec 2022 10:05:23 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH V2 3/4] OvmfPkg/IoMmuDxe: Add SEV support for reserved shared memory To: Min Xu , devel@edk2.groups.io Cc: Erdem Aktas , James Bottomley , Jiewen Yao , Gerd Hoffmann References: <20221213054824.53-1-min.m.xu@intel.com> <20221213054824.53-4-min.m.xu@intel.com> From: "Lendacky, Thomas" In-Reply-To: <20221213054824.53-4-min.m.xu@intel.com> X-ClientProxiedBy: BLAPR03CA0056.namprd03.prod.outlook.com (2603:10b6:208:32d::31) 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_|SN7PR12MB7372:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e0cb4ba-e13b-4369-f42a-08dadd23d9c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gz8kIu/Ul0K04yvHvqk8NMBnE5VwJNXXyZ76qvjxP+3dN2QwLibMbNZWe6urK6LydTUFTit6UdRLVDrHl2O350llZ5FTn0v6gA6fxdPIBRfbB4h7e9MbZ1zOYmXuOeFJU6KdDfidFcbDzLbkIEHRCJCX9MzewraoaLhmQxpRAGDAbNx64Hq3/YKoPSldt0xxPfcHNqUVipQh91BulbC4+zYbCO3JgRkldx3hSPj/Ab0H/attFdKGQcADkGZh5GJdXK0/NTFFLzuKcScuPrVWhhHhbZLRkR7W+qssqUMQS8RiRoYL8n60TM/lZNflqM9f4GH8BJcT7w7bhJjOAYR2iilTNKAnJyZVgWbFehRGBI3sJtfeRp29Yvxkq6m+5LC6ltJMYN/yBgWySYCKb4I+rQWMkDnAieI3kLgdggmrVOxc8f5WRZx8zSQNXwgC14y9Z93OSGvJNj4mR4I8tRTQxBOi2e7e8/tFRcKOABx+uA4RE8iuxOGGdJxlv+nQzdkuFZBMQ0Ws9axfG75fQrc0s3IMFzB3DYKd2fCPWHO998nBgYh5PWEevgmWVVl9bGP/PF8/jBodZouZNP4KO+MlQ+nZGlwhuhNh+h+eKxQBL5d5cyiByP36uWCwaCAniuHVGGgYPcL065LBNN5SjvWP3cIAVHunsgnhnC8Yl+Mu9ELs/kVzVWNHF1/jAkA4xxYHe3LlQKxcywyaStlgA30PUffArLJ3cNAiT70KOLVYQxE= 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)(376002)(366004)(136003)(346002)(39860400002)(451199015)(86362001)(31696002)(83380400001)(6506007)(316002)(6666004)(6486002)(6512007)(53546011)(26005)(186003)(478600001)(2616005)(41300700001)(2906002)(8936002)(5660300002)(66556008)(4326008)(66946007)(31686004)(66476007)(8676002)(38100700002)(54906003)(36756003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZjcyaUE1YmZocDF0NXl3VnZ1YjR0clBPK0x3SnBDcDJEWGdDNDhwTmZiRXd2?= =?utf-8?B?NDQwRWZDSFlsY0NKaStmMHNHWjB6bDNFMi9qQXhHR016YjBDNENUb0U5bkJi?= =?utf-8?B?ZEUwMVVmZkk4dkpYNjdwaWQ2SndRb0I3RS92ejRKZUxFcmdVTjRJTjQxR0o2?= =?utf-8?B?TGNmcDBFQVNDOWY0WjluVlltdE9rRWVnckxoenJNTTFGTzVlQVF0LzFzc0Jm?= =?utf-8?B?aTFMb0tMaWJDZmhHcHVtdmNqQ1VFeS9HK3l2OXRvSkplN3lPVHZrRkJiaWpl?= =?utf-8?B?RVZySWdYMjh4YjRQZnVDeEM0ZWZZNTlmRXlpSkdvdHRwMGNKK3NIVGE2czJQ?= =?utf-8?B?WGNpczVyUEVnSXppeGR5ZDlWbjBHcGJFTnRGUTlXU3JyeFRwQVI5bVlyRTVo?= =?utf-8?B?SEFqMnZTbk9pMUxoTmMyaW5QUjRDY3F6dDU4ejc0cGRnb0Urb1VwVXpicTVX?= =?utf-8?B?aVRBbHlXV1pmWXFoNWlVUjVEem9GTFpuLy92V1JTRll3TW5jR3RrS3pwN3ds?= =?utf-8?B?RUUvWWp3UVUxeElBWEtVeUUwZlZ2cTdyUFU0UjUrVnAzZ1dSanFDOFhnWTNr?= =?utf-8?B?Q0xYSDVKVzRPZFNjNFlPanRKa1lHV2dzZ25aSU5FVlVoSitwRnhnL2tqSlhp?= =?utf-8?B?Y3hIWGZ1ZW0vRExXNlN5TldxOUtOanE5cFA4Ymh1cmNkcWRqZmRCRWg4QW90?= =?utf-8?B?THlxK3RIdDBVWlovMnNwdnM2UTB5ZjEvVWpyNUY1VjdMejhIdGVsTUwzd20r?= =?utf-8?B?TG0xa2EvV2Rna3RGU3N3T2FzV3VFOFBOVzl1QTJSSTE0QWNNWVp5K2hBdkdQ?= =?utf-8?B?UXRWRWNmS0lqRkJhM0JiWGtWQkRHV3p6TnY4dDNKUSs5K1Z1UGx0dUJVY2pE?= =?utf-8?B?U3RuRmc2Sm15UC9IWDF3R01UVnkwa1k4MUtiSVJOcXYxdGdnaGtDb1pGT1Rq?= =?utf-8?B?TWpLZ3pxWDcrZGl5cWVKc01hWDVUME1ydzdWWXNsUFRiYUEvM2p3V2FtMWF6?= =?utf-8?B?bWRmbHQ5QUxFaDlaMmdudmd1TkxTVXZXR3JnYXozODdvZHR3UUlTYzhjQkZX?= =?utf-8?B?V0RHbngyc0R4V0Q3U3ZJbFlMYXZPVHpnRFFlSDNUOW5OaGpBTnQxNC90MjlR?= =?utf-8?B?TzkzaDkyWVU3UTVjcWh5K2JKeG13NXl6ejhDZER4eXhBeWtpMjNXZ0JyRjlV?= =?utf-8?B?ZFByRHFNR2JobjJxR3VEOW9wejh6S1VTcnRuR2tjdDBRRG1tWFR2d1ZZTGhM?= =?utf-8?B?SmdWZ0daSXIzUjBaL0ExNUhFZnIzRDFYR0t1dlBmcXpGaXFFZ3NmZktjQ0xx?= =?utf-8?B?RTBYc3pIUWlidFFRQ0dkSG96OEY1dHFjaVV6b29qSzlXTTF2WkNjWFI1T1Mr?= =?utf-8?B?TEFHblFNZHpjeFl3czUvZFlOKzl0cjYwMzFtUnRweXVEQUJ2aU03aDRyWWRG?= =?utf-8?B?SElnS0NaYlhvdThNZ2RIYlhKU1lDUHd3NXpRcDJ2S0kzd3luTUNFcWJZdVhD?= =?utf-8?B?RE1yYUtMQ1dyNmtqUktxdnhPSEd3SnFwYUdlSXZNS0pwakpydmNsaEt6eUJY?= =?utf-8?B?aVdQVTRlK2NQQnBrYUxwVjFCb2JJNkgxZHBmT05NZml5RG5IVTYzY1BobjlN?= =?utf-8?B?YTRMQmE0S0VNeUR2ZzFPaHJiaE1kOFBCeGlIN0ZSa2hkK3RlZExIenBTRjZR?= =?utf-8?B?QXRnS3NWSDJXTU5tT3FvVmpmZE1SL0RUZ3NIQ2J0N0d5U0duWnlTRlJEUUR4?= =?utf-8?B?eHp6ejc5YldtN05xODdENG9ZYy9kQW1GckdmMXgzd0NocHZ1dUFwU2syOW5Z?= =?utf-8?B?T2N3WU90VGVFR3U2TnNaaEwrdllrTEk5L3RQaVpaTmJLbmNFU2w1bTQ1dk5G?= =?utf-8?B?ZXNWZVo5LzdXdU93U2tkd2hmWlJ3VW1scmh4eHFocEZkemVFQlM5aGU3SGlS?= =?utf-8?B?ZGFRcnNoazhMckVaL1d0TVZnYTRvT280WVRHUzZ5L09kNEhjMWtYQVdVdk9q?= =?utf-8?B?OGlPZkF4elZtRlFVYnQ1YWlaUnhnNGRYNUZON016RWw1MGV6SEhMdW5PeitO?= =?utf-8?B?dkhvaS9uMlJDSEdjTlNFZ1VvRnNCQm5yT21ZelVqRGV4dkVVdnZUcWtqQWow?= =?utf-8?Q?cb/TvV00VPEgVrGGih+iqY08w?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e0cb4ba-e13b-4369-f42a-08dadd23d9c7 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5229.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2022 16:05:27.5262 (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: 1TqC6Z3AKOj7jJUyt3PGhv6vb28SFrkzaQYwgsqk+5Kzr4ymo5Qi6HDdIKfRac/evF8p9vFPCIfpJugpXcibuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7372 Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/12/22 23:48, Min Xu wrote: > 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. Thanks for including the patch, Min. One difference between my original and yours noted below, feel free to ignore, though. Otherwise, tested and validated. > > 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. My original patch deleted this line since it is different for each type of CC guest and commented about in each if block. Thanks, Tom > // 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);