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 [40.107.96.67]) by mx.groups.io with SMTP id smtpd.web09.19052.1627907554826990751 for ; Mon, 02 Aug 2021 05:32:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@amd.com header.s=selector1 header.b=MXqKJlEm; 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.96.67, mailfrom: ashish.kalra@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DJGxj5t1ftOAVbruasSm1ZMkZ9LDXWb1hAxAp0wkxygt/14APyyuV8QxSvyX1RTRHjrpZHiew+dUl1vGH5Mdh3I7bmdUmAuG28jMbyQY1rPyjaGlmNfQXc2pVVxguf8b1zoroCdvZFg/LKyKpth2e+sd3XVtnvx96Ku5e7Ks+HU6lDk/mkOK16zUH5x4BiZhRvTMW2wpC3hunvrgB+poimQLyxER3wM92G7j0BNjASI4ilTONDKP4995ZxANuObuFCS7U9gNQSi1JuzQOLYw/56sJ66dGDYfl6Awkz9g3Ioj7PWP7Wy7Q2c9O51lfMn/if8oi+pnol7zIR6E/9kIow== 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=XfXwNx7cnYeErCXlgzIiyz2FmbL9KGK3WdHx8tgbyoA=; b=W+IH/DLShq0vhd11VvzRBtshbBU1X+9OIWX/h4pJIa4q8dijQN3+y9Zm7xW4f7MOvTUAJFshJn787HasemuHbxq5I5y+suXoRHUEkz+vq3cx5bQfBVSbw2/9/QHv/ADYzksMPNR07D9qhc9ygaISkBj3CwdtB6mTD7/jEdLusvPjmeOeGwir5ubvAFOHhvoFQGL9Fpcqj/ro3twt+CUWeB8ZMWrXPqam12BgwAPhlJ0tM3haus1didKogLhmPSSHPLRrlMuOYXxuAkD1USV9kl/yJYqmXuWlpLQrtBgY78Lg7wlsfqTr4dqXi4gUcGm3rpwZqCjBjVkvhgQVEToWUw== 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=XfXwNx7cnYeErCXlgzIiyz2FmbL9KGK3WdHx8tgbyoA=; b=MXqKJlEmZ4OSkVjm6YYwc4mD+VUa1EP32oDhNwFsADJLDCZhWLXgcVqrIZMTyZlr/4m4iesN8EQfmBrmRI8PUDv9KCK05gmAFa5z3nYWuz7gU9MTo3z/k8yrfmkqSMYne7JsFM3BvAIsxzu8XZ3UMrsJhabfkYn9yR6FqBr3Hyk= Authentication-Results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=amd.com; Received: from SN6PR12MB2767.namprd12.prod.outlook.com (2603:10b6:805:75::23) by SN1PR12MB2445.namprd12.prod.outlook.com (2603:10b6:802:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.25; Mon, 2 Aug 2021 12:32:31 +0000 Received: from SN6PR12MB2767.namprd12.prod.outlook.com ([fe80::491e:2642:bae2:8b73]) by SN6PR12MB2767.namprd12.prod.outlook.com ([fe80::491e:2642:bae2:8b73%7]) with mapi id 15.20.4373.026; Mon, 2 Aug 2021 12:32:31 +0000 From: "Ashish Kalra" To: devel@edk2.groups.io Cc: dovmurik@linux.vnet.ibm.com, brijesh.singh@amd.com, tobin@ibm.com, Thomas.Lendacky@amd.com, jejb@linux.ibm.com, jordan.l.justen@intel.com, ard.biesheuvel@arm.com, erdemaktas@google.com, jiewen.yao@intel.com, min.m.xu@intel.com Subject: [PATCH v6 3/6] OvmfPkg/BaseMemEncryptLib: Invoke page encryption state change hypercall Date: Mon, 2 Aug 2021 12:32:19 +0000 Message-Id: <472459603fe3fcf83d2aac863128ad21e6975a42.1627906232.git.ashish.kalra@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: X-ClientProxiedBy: SA0PR12CA0016.namprd12.prod.outlook.com (2603:10b6:806:6f::21) To SN6PR12MB2767.namprd12.prod.outlook.com (2603:10b6:805:75::23) Return-Path: Ashish.Kalra@amd.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from ashkalra_ubuntu_server.amd.com (165.204.77.1) by SA0PR12CA0016.namprd12.prod.outlook.com (2603:10b6:806:6f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.20 via Frontend Transport; Mon, 2 Aug 2021 12:32:30 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ee34d606-c6df-4dd6-1c8f-08d955b198da X-MS-TrafficTypeDiagnostic: SN1PR12MB2445: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2887; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gmFC1e+7HZ5ZfnyMm/RrX0xk5BKZLEra2L95YHKxioeCQPCfvHgBMONwEtLdmMynH5s7NXfYFAlwV4Z8IODu5/CTYWEioLp2cshxFk3frmMMZZnxeyt0ewsQnvGXuRbZaBhPSQWAi47BbUIdsKdZ8U3vmuAMuxokMTsNDP9sz+hRR7UMduaN9onAYdXAXwml0u5HFWybrKlPkYjVrZQkdbtDaha8UHdDG6RelFNgtgAuLXTvzasdVoPwB0mk17Yq7U61pzNF61Yab+p2oqRzELDYzF0QDvFjA7VaGwopysJTmQ9XY549pYkrrcH+WAGkkXZVxMEhuFGXMrtD38pl5xoWrPHFs1doVgUpmDoqJH1AlzUufKgl+w5AVj9UBo/l/PPffHeADfsGgbmwZNOD+M/EtYHawymNKsRXR/sp9ZT0mdA+x6FvvSKXkHYJbR6sjB0QmA6fK/QzlNdChKzXGcPch7FnchuMKb5GAbk03clQlyYKtCpEDVxv/MvXmOQe/54VTrqxygxGVkH7QkSTb6EvBveNLXE1/Ah2lnNw6BumCJb5aaj3dZikQgqT0D7OjkhJancXp7Jpnv1wvrOK2CqtEJX9kn/+Lu6TvCAd+24+kZ7VPt9rY4/gOPOWfS2wn7U/JPIjcWulLn5QOyhLjhBfwWQIhAKjGmjFY0vot+PurPz2WsWESYAlctWckh0YUO3YekppBuP1zEtfh7hGpQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR12MB2767.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(376002)(366004)(39860400002)(346002)(956004)(6916009)(5660300002)(4326008)(316002)(7696005)(66946007)(66556008)(66476007)(6486002)(8676002)(478600001)(36756003)(19627235002)(86362001)(52116002)(8936002)(38100700002)(6666004)(83380400001)(38350700002)(2906002)(2616005)(186003)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?J9tKF4E4c3o14C0cJ9AbMZj5QfdPjs68uvvKGwlPt3uRTT5ObRHdVXGYv2sX?= =?us-ascii?Q?ooSfsTlUjIrNvKpsYZyn+Ag4YMFk7hjsnI/OPdZ1EK1roi6G/mUPrDX1uPso?= =?us-ascii?Q?0axSUKSuZtJq5ePHESGY1R7I/xDPC9cp2Z6y42gEzqqbudC26NZBfOqIzXCt?= =?us-ascii?Q?AH/9DZK9NiyWtpvUnrihzJb2G1DqGfW/7zARbljrLyMK7nOm2hrv/ziJyzUe?= =?us-ascii?Q?PyhOqZqLYB0E22VKsf8B3H6xrrCmXM73tHOOhGHPb6G2ylx+fxE9Br6H6879?= =?us-ascii?Q?hJeZJ0nrp4vJnJwdt4xWKdtIha1fbx1rE8hIlMH579GbMR/gdJ3rO+sZoqer?= =?us-ascii?Q?hht2+JZZD99iq89qeTWYxcUz7H2KBUnY3KR3w1KyZvjC+NY6BJsnjDYrockP?= =?us-ascii?Q?0YnAabLzra8T2ColZSeQMg1E/Dq7rmLhBQDgbJrvTflWeFQC98vqxCMn9W/P?= =?us-ascii?Q?KxfmbjGBeuP2tWEcwU7U/cq03kX9zK2tIXgqT+t8MFN6nITYqvr5pjkdpI+7?= =?us-ascii?Q?KraZV7ko0HLw7mflw+WjIIfxjyFmdIiTSpvQSir81+V3UF6mgf7dzfePycJ/?= =?us-ascii?Q?yZ8K6Lq3yAar1MCxJsmvckJkOqWoEm2VQ/v4EZQLGofNrCYZf85WMQlhvMhL?= =?us-ascii?Q?VpNIhznSW4u+6/ifF4BZo1N55wZOur2KIwRybzKXKP5TkiLDjhT9Z59eukZw?= =?us-ascii?Q?9EEWXV3cMxwHFZZrL97XvxVIguumez8Hpc/RsoqopNZZp1C3CuprIzkBBBTZ?= =?us-ascii?Q?IdBSZPOyck5jYZx0zUxNshrz8QuArhtie/+aNqc7rRQ5S+sbLZGna+N6pVPW?= =?us-ascii?Q?3Gq23n+FaKznKAfHaGh87mwWVfVQZJDr/EO05CMASkMBvvUFI8ZZLqiy4s58?= =?us-ascii?Q?VEmEzpnA/AZT2jiFOMsoFB1zbRwmlT4A2IPRob3PTNzzkoD+/1/FTmDSTUhq?= =?us-ascii?Q?SOojX0etKeAaNj3MxrYuxcSRzOPE1zi1HRHhTRXVwZW97SaEHtC1jNHuG+YT?= =?us-ascii?Q?UeWzAOGkZSJQTjX3E8POMjEYmxLsWqrYXfLFathOPF81t81i2BzmSHVs9q4C?= =?us-ascii?Q?ql9pxUaRGH15LBpV28frx86bi1aeLq0yFsgHtmNfs+mOtT+vFhJo0HEP1q+h?= =?us-ascii?Q?ZRAafEXUTEo55wv+TCR0YzvgJ8SkPrE3ZowURVTYzuO+mxu2YA19v+QSC0uL?= =?us-ascii?Q?rwQTMcgxVPNJs7YQ3F+X4fvVGUfinll6BpTAHifZnQo5N5bdDxK8NnFdZt7p?= =?us-ascii?Q?cYzXVy2xScjoXKXdoX/BdiJo1Vw9fCNIwJ/AM7+9DfNnJwmy/nGaA+eUy0Hc?= =?us-ascii?Q?tgb1BjGWk4GLVGCIUQXXewJj?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee34d606-c6df-4dd6-1c8f-08d955b198da X-MS-Exchange-CrossTenant-AuthSource: SN6PR12MB2767.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Aug 2021 12:32:31.3208 (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: zrnVziQ34xfMMTDZ2mnHBv+dwbkjXysYGr1/G9EuhmFl72FAVDcCP4q4Mmed1h2rwZhY7MsJ1NqYz3f3e5b08Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB2445 Content-Type: text/plain From: Ashish Kalra Invoke the hypercall API to notify hypervisor when the page's encryption state changes. Cc: Jordan Justen Cc: Ard Biesheuvel Signed-off-by: Brijesh Singh Signed-off-by: Ashish Kalra --- OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c index c696745f9d..f562e16fc2 100644 --- a/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c +++ b/OvmfPkg/Library/BaseMemEncryptSevLib/X64/PeiDxeVirtualMemory.c @@ -585,6 +585,9 @@ SetMemoryEncDec ( UINT64 AddressEncMask; BOOLEAN IsWpEnabled; RETURN_STATUS Status; + UINTN Size; + BOOLEAN CBitChanged; + PHYSICAL_ADDRESS OrigPhysicalAddress; // // Set PageMapLevel4Entry to suppress incorrect compiler/analyzer warnings. @@ -636,6 +639,9 @@ SetMemoryEncDec ( Status = EFI_SUCCESS; + Size = Length; + CBitChanged = FALSE; + OrigPhysicalAddress = PhysicalAddress; while (Length != 0) { // @@ -695,6 +701,7 @@ SetMemoryEncDec ( )); PhysicalAddress += BIT30; Length -= BIT30; + CBitChanged = TRUE; } else { // // We must split the page @@ -749,6 +756,7 @@ SetMemoryEncDec ( SetOrClearCBit (&PageDirectory2MEntry->Uint64, Mode); PhysicalAddress += BIT21; Length -= BIT21; + CBitChanged = TRUE; } else { // // We must split up this page into 4K pages @@ -791,6 +799,7 @@ SetMemoryEncDec ( SetOrClearCBit (&PageTableEntry->Uint64, Mode); PhysicalAddress += EFI_PAGE_SIZE; Length -= EFI_PAGE_SIZE; + CBitChanged = TRUE; } } } @@ -808,6 +817,17 @@ SetMemoryEncDec ( // CpuFlushTlb(); + // + // Notify Hypervisor on C-bit status + // + if (CBitChanged) { + Status = SetMemoryEncDecHypercall3 ( + OrigPhysicalAddress, + EFI_SIZE_TO_PAGES(Size), + (Mode == SetCBit) ? TRUE : FALSE + ); + } + Done: // // Restore page table write protection, if any. -- 2.17.1