From nobody Thu May 2 08:07:25 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 148727895171949.079164569534214; Thu, 16 Feb 2017 13:02:31 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 79913820FE; Thu, 16 Feb 2017 13:02:29 -0800 (PST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0613.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe44::613]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 90F83820F7 for ; Thu, 16 Feb 2017 13:02:28 -0800 (PST) Received: from leduran-Precision-WorkStation-T5400.amd.com (165.204.77.1) by BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Thu, 16 Feb 2017 21:02:26 +0000 X-Original-To: edk2-devel@ml01.01.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=TnxCXZyeW8DafVI6cuvYVjkwR8HvX6Rw+KgjtXqq6Rk=; b=Y56qL4cdRi0RwOP5bSbkw5cuUV8nX93nB69X6DbJexzi7UtjjI/odlmufDecRl2GSSocZrCRPS3lbvfOsO9QwMwpfccGB57SN8U7eF6+G3rMMuCIikjctcnezudfCiOE6nUhJiV7xZQEYaQZ0hgHeolpEodheTBfJ1eAsU3xvw0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; From: Leo Duran To: Date: Thu, 16 Feb 2017 15:02:03 -0600 Message-ID: <1487278926-14303-2-git-send-email-leo.duran@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1487278926-14303-1-git-send-email-leo.duran@amd.com> References: <1487278926-14303-1-git-send-email-leo.duran@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR13CA0037.namprd13.prod.outlook.com (10.168.240.151) To BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) X-MS-Office365-Filtering-Correlation-Id: f01f91e8-98c2-4a68-b6aa-08d456af1cec X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 3:7FPgkwd/eeTpjlRXNIJDvRp9q5pqqX9aLoM00E6Mu2+YN5LyRWztC4I/9rHTS+wCr7YN//Rj0PNkOB6ETuufJQl17Vs9D0dhvz6La/BM0XL+oyciYvrDN5/ihTbo9t0yVp+uhtmI13QthymhlRnXPF6K955+aG2OhnfsSsD7qOdxWpSwvFCC7/n0TW8l9/kB7kyq4/fIpK8EcYyV5yIcEqFNF9gjbOc67Z5gkeK0o7TRwtjyfQ85Ug8KQu/rFCqKwCZbtJlrv7/rf2OeCEBGxyRgMa3BR5oLGpddq6MVKr4=; 25:82FYn/TK2LwaWfNPmKXgmy+F91IF/XK0CbQF/vmnOmCI4wdl0wljUecw8f4pbSv7ijseSU9wZdkwWHjR96OwMwRcnGkPDHLJgUbr9IUQd/9k9Y+zxw/R/YevidpFL2biWAw8h7HtU3Y+iAkM5VdHDPR2HzT0oN7SOfHS3zeJXhY47Al0OC3OwMaPb2RxzG0mt2uODmk0slnzlABqZiAWaUfMvg9qzDZs/F5PdgPvZWVcaYMZHyDlkc69fgIeLkmz8W/a3tKMfTgSD8EvY43HJn0UiPs4Q8aw9qdDSc4scH4AzPVbGW5B7odzYAzHvozJmL/m4LeLKSbMvLHJl80vDqDEjesI8xjvSzHwL6WEtiuK/vUMGJDNKLiexpe3arsPrliyHUcbLkQkq5ayHGlNzRhGPMPgfhqKWR/YGQT0P7P2xyQEiHg9dsvzoXLyYAdChHwq4eQIxcZsfw8ekZyMwA== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 31:iRniUOgJGypPuF6aj/glPdU8QIDNAW6tQ1MInf8bcKrOIp5/OlGOaP73YyFhrW2P+7rKc79PPoLuTA/WkA3l+CwiJgt//wVkPly+84zABOvGjTngJez2MBee+AUtrGT7hHR8eW2MxWwGqmXgBokfNWM9/Fej7JcMxMFdnSqHCWDD7PMVugDEE7r6yFF2+NuYz8lk3wV+wuzurHWjzuMCbnKN+nk+F/vRch0YazLVUKO44YRUPTdQouTg+fEpISbN; 20:TgnD5kNwjXlaGMp1PUwXTar7DZPgYWhoddFa9EMv5KADr5w/cnmriSNT07LYt5b2dhDU9EC7lZfv/JrcPplxwEQrPASUuQZ7niwTCDbMw7Lh30Zq+mG6+EtVNZ0gYmKgLv4yhGQhY9Rg3TelwIvJULWn29hcHRJ8eTaS062ZS3pLUVAef9ssW78kBDTakCv9EP5mTO8j27ZZG9xdzwFtFlLZziBcrRgJR4FiCuNigSMwC5KLBocAZx0Xv/B34FP8OGz2GRd2y0QqMmO0btjnzwXK664MZg7wAZkG1Ff9frYGMcU7rTDo5AiGKKXmZ3dOkhZnHNPvhQbuT7gWtEAMV0Xy7sdLWC9hxyKkR4C8uEzPsH3SJCegDzpRqXUUirjN/k8eDHS5NewgaBF2tW9cvtZBwMzC78WvgzIayB+lFNm/9VZCKKRb9bB7pgQXl/7GA2gP3+CjNAv7dWfLcGyyX39/eByHQZsQgETSw40W3zqLisLs1Hk/rVm029ngsy86 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558025)(20161123562025)(6072148); SRVR:BN6PR12MB1236; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 4:HuXrq/VQF+peN9O3YKoA68GkpNdCz+3sAqLkr/MzWMjtYdTx1UnYg3cWC8r0wcERgQmE53f6ZbMPiITZ0QrX9Q4/Kavs+6V02lcAof/5e7Qodc98mSPdPPY5u5XfHDVIrUwOFW4pd9AzKTDh3qcv/6bKpGHo0vaqmvaF/6yLTAehGRprnQRem53joIC2EP+bc1M6GQPbDkCy3vA0CV0sx27Fr5pZxbodKEqFhtEYgZz4pRs5z5ZNCHhKCGYXrs6bwUY778JNfLc7PBdHpIkXxa2ar9VkEoROwe2g+1H5WGbklkTEl6VuK283Yv+xmwgh8EExXBPOJmiNZv9j4fu44mjUK39hGZ3M1CrJVqy6HitG8sXS28Z7pEXokKWq5nvuqeZIsfBW5bwgtw9USMpcJ5vUyfyyCOIRw6uIrxtxpeRWolPuqmPKhT7SkcpT+Ov1t/AHpVNehQIhJiS7LyTPrgGEyIjSiPbho7VMGQE3cuzBT/DhRTARQNSgLi/OtxYcIVpxVlpR7vMm78W4nzGgpAJQIqjNj041l8S1P+t4CkzAhnSOvF2mAjrCyoR8TQIerNRe/7CBAZ6/R1/3lfjEG0b8LeKxS8bFy55vOdHh28Y/11lPy6UPVF1BioDsLtIn2xcrny0ahrVOlUbC8XNC2LAUeX0n7Rr+Mkfq9inXfq4Xe8IT7KIKVeLm42kS0Qcjii4V0lF0V/yR0oFr/YxcVA== X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6029001)(7916002)(39840400002)(39410400002)(39450400003)(39860400002)(39850400002)(199003)(189002)(54906002)(8676002)(36756003)(6916009)(68736007)(38730400002)(6666003)(6486002)(97736004)(53936002)(50986999)(110136004)(66066001)(76176999)(101416001)(5003940100001)(50466002)(81166006)(50226002)(92566002)(81156014)(6116002)(106356001)(53416004)(42186005)(33646002)(48376002)(189998001)(305945005)(2950100002)(7736002)(5660300001)(105586002)(4326007)(2351001)(2906002)(86362001)(3846002)(25786008)(47776003)(389900003)(213903007)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1236; H:leduran-Precision-WorkStation-T5400.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR12MB1236; 23:rBsUBXIq9cKKw/RCoSpoTbMtYh0M/8SoG8lbOvg16?= =?us-ascii?Q?ogN3fIrtjpYjKzjDB6HZ7EuO9+NJCEVsMwakkROSZZ1t+8PljRVPBEbrBxwB?= =?us-ascii?Q?+eIvEkXhjRm4mPTKIJLHGmtfReJDjquAk2Ma0tGp59ZJr8bu3YLh4o+8GWoZ?= =?us-ascii?Q?zhdTamqbKFlv+Z34iapNurNpNivYyJsQIQx4BRSNOtOjSnz+JNdnkIOEb3eF?= =?us-ascii?Q?oAA1HIWogll7xUk/lXa3cHonJ+7qIew5Lsf52kSgKlLYZGyk6gvi+DFo/Sdl?= =?us-ascii?Q?gsxr7L6yTYYsd0mb2VoXTENAf5MT7olD11Ykr3RGSd3ebEX08w1yAYwnT1iH?= =?us-ascii?Q?XQHU+q01umDJrRL1DDWjQjzRhob+xLC4aVmIVsntJp4SJX7i5i9458YYT/wr?= =?us-ascii?Q?uSebQZQkCcQ2cD9mg1HUe5YcyiQKm0MjFA6LxsUmt2vjuTctRN2kDcxsjakV?= =?us-ascii?Q?ieFeW942TCI3leStRXlIg1mlvsRdB/g7Z6K0SX5oDSeMcigZAr0HXf2sqyv8?= =?us-ascii?Q?eCvXAbBqINQ02wuXwMy/tjfx2DFsSeJgH2M8w2nNMz2r0x6ItrWPJ/Wxy1VH?= =?us-ascii?Q?zNVCUlvhQOBLzqiOxZ+obwSzJKFJhgmhYstz6tr/vROCMLkUn2qWGDzI+hZW?= =?us-ascii?Q?oZLBiUtKtFKOlCY1mJDtHtSLLE1HUqDDkBsh/5ZPyVCkZAZqoW0ioiooTUzL?= =?us-ascii?Q?mIHUcYxK/QJTf/UEtLqN/ZdDfEFaIJkBrBqPSN8cE2qicX3b7kHnARq7cE0j?= =?us-ascii?Q?vK9CPiqhFnJgTITcJuc26cRCob5eaSoshUVY/p2QLDcbQwpV02+hYKXEHj/P?= =?us-ascii?Q?CB+O6B6FvWhGSN0O3Vjd88oACkeDZeTW/omSAAo1vmcNj/ksucT/MzlK9vZu?= =?us-ascii?Q?/3vOOKb39gJnXHCOXgJmiJxiG2Ibf//NMh7uTVkyqDgYdshKZX2MG5GJNNHR?= =?us-ascii?Q?omYHVgLp3SN5vv/p1C9v6IT08PI1BLeT/HSvYfj7jLG2JddIKLLPfEzhKLUR?= =?us-ascii?Q?T3XxROD4P3ylC4uHL1vzCvPq7s+GJ9kt2NC7HYFPbAff+d5aqMyi5NqJr5d5?= =?us-ascii?Q?rs5F5Kn4BZ/rlW4udfoP+/BH76ymEFBfq9ySmUfruz/X+F7STpPhAMTgR7QJ?= =?us-ascii?Q?1Y8y9y6as5busCj55MjtYT1TFovDYM9UNsdMPnT8K+OKfoPvElZg9PjvgugG?= =?us-ascii?Q?Lyqzs4uqfuudCu56xC8g8nnKgDw9mekElX+o7CB00782ogYtQ9keYB3V8QlQ?= =?us-ascii?Q?4WSL/Pv1YqhtIpWFEfwob10O0TY0E8eM3tPoSOtP9UdyNsNyH91oZupUM+Hq?= =?us-ascii?Q?im7AVSlzuPQpzqZoj9bYvI=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 6:q6hocFdEg+Rn1WEQZCrEOsVGLjn4XeKTAXvN68GEmKfxk/C5Ywu64jzOpwR97kYcCuojO+kXlSCEF2QeX7N21T8LdWu4zuKtfPi6v03gTlMaaPj7kfVQwJw13+/G3/gN4TsJUeyXd3+kutgAs0/Heu3HAq2F40PSxyojNyiA/QswOIUupOLeKg1+h3k+za6XYdkN2bKtsEPyUz1tT/y+VFaKAUvhphh5QG6UGFXZzW1txnt7cGKBQQo+9yK1Slv22C0R8RYC5IX6ad4Ad+6A4nk5M9ijvO8NZ6JfXy+aPqbMWCdPbDFkuCuaB9ee25AYmEKJpYxjdpCAi+zg+M4fFB3Vl7/6poCuXnqVFZIghBJvFQuHuEhUSOzduKgHOOU6oRn+mcTdWZpijGueV/noknhqqPY5obJQNkxGvAmZdyA=; 5:mYPVCZQpe2XFMf3KfVJk983+tqOQEINu95wdsfWK57DYYI2THlpq9NLNTFvnsQCLdmUKlRxOF41sT0R33tfZnzl4tF3rLEcnJC2VZpTjd6vDb+KxymB68m643zV66u+KJUCBd75A5OdLQ7VPbYW3rw5pvucUDjsoSxh2V9MF3F0=; 24:cHrFL27MxDQj0V7HJrYo9RosJEfbhjnMNLlk5XY5vGFPluEww8sNfOZLqAtD8d8KxoTfqNNO8O7t0O9VFiQ5hPxq6DpaUaB1F4dmWUSsx4c= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 7:iJrGRLXfbqt+r/LLuZ2zgDrPAPQkv2urLYROJZG2HupNbx/ZG1hbAQdenVuasibCg7lM+TiD/A4pS0uQxJX3Dicgqpnx9OnEk86mjZbm0v6tdRxsE9XCc7hDkVRzwxD+3ecveBW0/97yNIHoPpIX0JlCVPQrhGEmU7q1qintIZwofPspW6zf90F86kj9YV9m83sYSjJ1VHbWaImdOwpzFSFsQBCrEh+uNOoVa5BPCPlUd3rACtYa/6NwpseXTgW0l2RAmOBh5AuYG01gxmdh+GWqU7A5czPOnL9iiKQKxcd8jEGbTDfq1QVTzzJw3Poj1CPkZ2o6LbfAVUhBsMoCVw==; 20:8+CP2Rbd56OJnOUDj0gzFn6bMSRuNNeh1mrTEm0LuhR/zLvS6dLATZdvdeY60X9/vmq9aoJwigqEje58gwWfR9M+1nhbJZIx0FV2T3RGHotNpk/lD3fsC9IP3l/KJ0XodxpSP8ntYMpDgVn5V1c3shvXazTTVHkUeS2xiQSwZ4iLxiuKmnbnZ1u51AHcuX0XtnpYXrqen6ZRhEiJJnX4nZHAnDM1O6mwFpVEZ16HK4p+KozPIJ11AjzoF53P1+6q X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 21:02:26.6169 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1236 Subject: [edk2] [PATCH v3 1/4] MdeModulePkg: Add PCD PcdPteMemoryEncryptionAddressOrMask X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laszlo Ersek , Feng Tian , Leo Duran , Brijesh Singh , Star Zeng Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This PCD holds the address mask for page table entries when memory encryption is enabled on AMD processors supporting the Secure Encrypted Virtualization (SEV) feature. Cc: Feng Tian Cc: Star Zeng Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Brijesh Singh Signed-off-by: Leo Duran Reviewed-by: Star Zeng --- MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 5 +++- MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c | 29 +++++++++++++++++---= ---- MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.h | 6 +++++ MdeModulePkg/MdeModulePkg.dec | 8 +++++++ 4 files changed, 39 insertions(+), 9 deletions(-) diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf b/MdeModulePkg/Core/Dx= eIplPeim/DxeIpl.inf index 2bc41be..d62bd9b 100644 --- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf +++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf @@ -6,6 +6,8 @@ # needed to run the DXE Foundation. # # Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2017, AMD Incorporated. All rights reserved.
+# # This program and the accompanying materials # are licensed and made available under the terms and conditions of the B= SD License # which accompanies this distribution. The full text of the license may = be found at @@ -111,7 +113,8 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSupportUefiDecompress ## CONSUMES =20 [Pcd.IA32,Pcd.X64] - gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable ## SOMETIM= ES_CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable ##= SOMETIMES_CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ##= CONSUMES =20 [Pcd.IA32,Pcd.X64,Pcd.ARM,Pcd.AARCH64] gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack ## SOMETIM= ES_CONSUMES diff --git a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c b/MdeModulePk= g/Core/DxeIplPeim/X64/VirtualMemory.c index 790f6ab..89b116a 100644 --- a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c +++ b/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c @@ -16,6 +16,8 @@ 3) IA-32 Intel(R) Architecture Software Developer's Manual Volume 3:Sy= stem Programmer's Guide, Intel =20 Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
+ This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License which accompanies this distribution. The full text of the license may be = found at @@ -65,20 +67,24 @@ Split2MPageTo4K ( EFI_PHYSICAL_ADDRESS PhysicalAddress4K; UINTN IndexOfPageTableEntries; PAGE_TABLE_4K_ENTRY *PageTableEntry; + UINT64 AddressSetMask; =20 PageTableEntry =3D AllocatePages (1); ASSERT (PageTableEntry !=3D NULL); + + AddressSetMask =3D PcdGet64 (PcdPteMemoryEncryptionAddressOrMask); + // // Fill in 2M page entry. // - *PageEntry2M =3D (UINT64) (UINTN) PageTableEntry | IA32_PG_P | IA32_PG_R= W; + *PageEntry2M =3D (UINT64)(UINTN)PageTableEntry | (AddressSetMask & PAGIN= G_2M_ADDRESS_MASK_64) | IA32_PG_P | IA32_PG_RW; =20 PhysicalAddress4K =3D PhysicalAddress; for (IndexOfPageTableEntries =3D 0; IndexOfPageTableEntries < 512; Index= OfPageTableEntries++, PageTableEntry++, PhysicalAddress4K +=3D SIZE_4KB) { // // Fill in the Page Table entries // - PageTableEntry->Uint64 =3D (UINT64) PhysicalAddress4K; + PageTableEntry->Uint64 =3D (UINT64)PhysicalAddress4K | (AddressSetMask= & PAGING_4K_ADDRESS_MASK_64); PageTableEntry->Bits.ReadWrite =3D 1; PageTableEntry->Bits.Present =3D 1; if ((PhysicalAddress4K >=3D StackBase) && (PhysicalAddress4K < StackBa= se + StackSize)) { @@ -110,13 +116,17 @@ Split1GPageTo2M ( EFI_PHYSICAL_ADDRESS PhysicalAddress2M; UINTN IndexOfPageDirectoryEntries; PAGE_TABLE_ENTRY *PageDirectoryEntry; + UINT64 AddressSetMask; =20 PageDirectoryEntry =3D AllocatePages (1); ASSERT (PageDirectoryEntry !=3D NULL); + + AddressSetMask =3D PcdGet64 (PcdPteMemoryEncryptionAddressOrMask); + // // Fill in 1G page entry. // - *PageEntry1G =3D (UINT64) (UINTN) PageDirectoryEntry | IA32_PG_P | IA32_= PG_RW; + *PageEntry1G =3D (UINT64)(UINTN)PageDirectoryEntry | (AddressSetMask & P= AGING_1G_ADDRESS_MASK_64) | IA32_PG_P | IA32_PG_RW; =20 PhysicalAddress2M =3D PhysicalAddress; for (IndexOfPageDirectoryEntries =3D 0; IndexOfPageDirectoryEntries < 51= 2; IndexOfPageDirectoryEntries++, PageDirectoryEntry++, PhysicalAddress2M += =3D SIZE_2MB) { @@ -129,7 +139,7 @@ Split1GPageTo2M ( // // Fill in the Page Directory entries // - PageDirectoryEntry->Uint64 =3D (UINT64) PhysicalAddress2M; + PageDirectoryEntry->Uint64 =3D (UINT64)PhysicalAddress2M | (AddressS= etMask & PAGING_2M_ADDRESS_MASK_64); PageDirectoryEntry->Bits.ReadWrite =3D 1; PageDirectoryEntry->Bits.Present =3D 1; PageDirectoryEntry->Bits.MustBe1 =3D 1; @@ -171,6 +181,7 @@ CreateIdentityMappingPageTables ( VOID *Hob; BOOLEAN Page1GSupport; PAGE_TABLE_1G_ENTRY *PageDirectory1GEntry; + UINT64 AddressSetMask; =20 Page1GSupport =3D FALSE; if (PcdGetBool(PcdUse1GPageTable)) { @@ -229,6 +240,8 @@ CreateIdentityMappingPageTables ( BigPageAddress =3D (UINTN) AllocatePages (TotalPagesNum); ASSERT (BigPageAddress !=3D 0); =20 + AddressSetMask =3D PcdGet64 (PcdPteMemoryEncryptionAddressOrMask); + // // By architecture only one PageMapLevel4 exists - so lets allocate stor= age for it. // @@ -248,7 +261,7 @@ CreateIdentityMappingPageTables ( // // Make a PML4 Entry // - PageMapLevel4Entry->Uint64 =3D (UINT64)(UINTN)PageDirectoryPointerEntr= y; + PageMapLevel4Entry->Uint64 =3D (UINT64)(UINTN)PageDirectoryPointerEntr= y | (AddressSetMask & PAGING_4K_ADDRESS_MASK_64); PageMapLevel4Entry->Bits.ReadWrite =3D 1; PageMapLevel4Entry->Bits.Present =3D 1; =20 @@ -262,7 +275,7 @@ CreateIdentityMappingPageTables ( // // Fill in the Page Directory entries // - PageDirectory1GEntry->Uint64 =3D (UINT64)PageAddress; + PageDirectory1GEntry->Uint64 =3D (UINT64)PageAddress | (AddressS= etMask & PAGING_1G_ADDRESS_MASK_64); PageDirectory1GEntry->Bits.ReadWrite =3D 1; PageDirectory1GEntry->Bits.Present =3D 1; PageDirectory1GEntry->Bits.MustBe1 =3D 1; @@ -280,7 +293,7 @@ CreateIdentityMappingPageTables ( // // Fill in a Page Directory Pointer Entries // - PageDirectoryPointerEntry->Uint64 =3D (UINT64)(UINTN)PageDirectory= Entry; + PageDirectoryPointerEntry->Uint64 =3D (UINT64)(UINTN)PageDirectory= Entry | (AddressSetMask & PAGING_4K_ADDRESS_MASK_64); PageDirectoryPointerEntry->Bits.ReadWrite =3D 1; PageDirectoryPointerEntry->Bits.Present =3D 1; =20 @@ -294,7 +307,7 @@ CreateIdentityMappingPageTables ( // // Fill in the Page Directory entries // - PageDirectoryEntry->Uint64 =3D (UINT64)PageAddress; + PageDirectoryEntry->Uint64 =3D (UINT64)PageAddress | (AddressS= etMask & PAGING_2M_ADDRESS_MASK_64); PageDirectoryEntry->Bits.ReadWrite =3D 1; PageDirectoryEntry->Bits.Present =3D 1; PageDirectoryEntry->Bits.MustBe1 =3D 1; diff --git a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.h b/MdeModulePk= g/Core/DxeIplPeim/X64/VirtualMemory.h index 20c31f5..2e0691e 100644 --- a/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.h +++ b/MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.h @@ -8,6 +8,8 @@ 4) AMD64 Architecture Programmer's Manual Volume 2: System Programming =20 Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
+ This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License which accompanies this distribution. The full text of the license may be = found at @@ -23,6 +25,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHE= R EXPRESS OR IMPLIED. =20 #define SYS_CODE64_SEL 0x38 =20 +#define PAGING_4K_ADDRESS_MASK_64 0x000FFFFFFFFFF000ull +#define PAGING_2M_ADDRESS_MASK_64 0x000FFFFFFFE00000ull +#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull + #pragma pack(1) =20 typedef union { diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 273cd7e..15119d0 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -6,6 +6,8 @@ # Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
# Copyright (c) 2016, Linaro Ltd. All rights reserved.
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
+# Copyright (c) 2017, AMD Incorporated. All rights reserved.
+# # This program and the accompanying materials are licensed and made availa= ble under # the terms and conditions of the BSD License that accompanies this distri= bution. # The full text of the license may be found at @@ -1682,6 +1684,12 @@ # @Prompt A list of system FMP ImageTypeId GUIDs gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{0x0}|= VOID*|0x30001046 =20 + ## This PCD holds the address mask for page table entries when memory en= cryption is + # enabled on AMD processors supporting the Secure Encrypted Virtualizat= ion (SEV) feature. + # This mask should be applied when creating 1:1 virtual to physical map= ping tables. + # + gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask|0x0|U= INT64|0x30001047 + [PcdsPatchableInModule] ## Specify memory size with page number for PEI code when # Loading Module at Fixed Address feature is enabled. --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Thu May 2 08:07:25 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1487278954838932.5434466730431; Thu, 16 Feb 2017 13:02:34 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id B213082102; Thu, 16 Feb 2017 13:02:31 -0800 (PST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0613.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe44::613]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DDAB1820E6 for ; Thu, 16 Feb 2017 13:02:28 -0800 (PST) Received: from leduran-Precision-WorkStation-T5400.amd.com (165.204.77.1) by BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Thu, 16 Feb 2017 21:02:27 +0000 X-Original-To: edk2-devel@ml01.01.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=VHWNCeT0ia2gDyQ8py+AkQk2gvCVzwwqEEp9MzbKrcU=; b=ZINvFki7RVAfHCUJM06KKkH/Wp4rkps10l0d3iIkbDf6ftIf9iaU+tR5Nrx7kuh/gcwebg6pIsMZGuQcCMrmarNW+L3jFNjoGzeGNralTF5yfmyZOUt5gmvNrtcVWFG5lWtmJxn3m2LZ1EFU1IJW2o/XPl41NAOEpUfcbeP1aXg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; From: Leo Duran To: Date: Thu, 16 Feb 2017 15:02:04 -0600 Message-ID: <1487278926-14303-3-git-send-email-leo.duran@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1487278926-14303-1-git-send-email-leo.duran@amd.com> References: <1487278926-14303-1-git-send-email-leo.duran@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR13CA0037.namprd13.prod.outlook.com (10.168.240.151) To BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) X-MS-Office365-Filtering-Correlation-Id: 15c5adb3-b427-4ba7-9749-08d456af1d6f X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 3:yMuO6IJR392+pXJIHJzWAyOgaiE/UqEMYIeIdZamRNaZ2J5xjtLosIVnnW7UC7bQai/ua3FnxG4BM0+en+75iaBDA6525lbvJVqYZ9O+unZmxY4P+yNtVaNN+BVNtV05LDwiYulGLOb5fAL5bn5+Nb5qku4GRS6NWQocjWdsl/8rUzhFGbD2hzx7R9mC+8Jd/1L36+1JXKK+fY7UTqEzsdTmDsQx6910RaWkBrnuWFrp47wr8snRPGo0meg7cw6snLZhhbexiWSvX+2HP7y/Yvtmpn4Z5BY35GNvhI3wjdg=; 25:IXGYngTtU8oY4zcdNL87oKnNdMdZwuSVwIC2NgwkhebHaCi4YigZ5X9HnbleSZo7Fao3QRjC1K26pMIvAeNNeqTP3xCOGYMLQvJo+F87YyIfJmJxuMpKyMcC+Ct7kck7WVuUSs6k6EunjgxOedXVwJOHhV7Hmxn+N+mgCD2yI+N/uef8o1+tAhg+sckJ+g/CAztYag0Grid+a/dY9jYUe3ixKXMa51P6eg6jCI6/Dey6L3rR8FcV4GGHVuXlQ0igt5/jyx2O3HeFs6Zq7pundtrFBW1BqQPoPmMrnsypx31WzEYUu7uxEUdpYwfuLjXwn/CAAP2xvWxHQD5EC+gR1LZcesVFh77FOI88B0FEJIQIlSrp6SzGN4FVyyJuZdAdeaxtVVa0Hbm/4aRDoTWH2natda5Ec70MCySzTqNskcYDI+DezqL9CRA+hzFCwEk1Aup3pMNKfuZT20bjkLzWdQ== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 31:aVakooi1BreuOtCVLlLrXJiZtrpsrwYPSoWennaZq53+CR7Nt5iiYF6fVv5nAVemRjT99Dbn+3Xc8+DhrOYrc1sUIv4RZxA7NNNMhw2N0Is+02yKbh4raEGdu5LZaH/WmU8cNO9SF4ZIgQTGosV6inZPwcec+sx8vnIuskfTzLXTrSdDuRUjwTsiuirNrsrAv2tT+6ihDigzR8TKfYcE1tKK19I2kKoz+MbzeTvUVW0=; 20:wOINSGz7GGY/pzDyKnhWy0p4MdLzn1XlwcA1zNfr3lTxE3GrdrpGUkTS+wOan8hGkc8Ni6wnoTaczyUKknj0Ze0RfBBjyuBieLZa2P/y+UivDSqDeVu5IDtGaPFwkqfygrf3uG6GJTKvl1cRsTcN+w7QC0KShZksu9P1uGSIpod8zs1cv2Gu+fdOXUmx0TRWVrUbTJsz3eM6i4wt9lBCS3ZfuhCKJw9izxyXVAw018xdqwkV2WbmWG/wG4YnupwCtJ6QcYgpqaswwzh62i9L2DzQ1wN2+JOeC+iAsYvJ6a6I3l4V6SZiMjI9/JvThoDVt2Chyi0ceWhWTDAODT1eg4MtLsKacr4383ODvaULdp7AmqShBnnQAxRonSZUuE/GU9SD7+HMKGVGZSBa7SHfl7ZkNjaCDegxIIBwl1Q8JrYTQakSibdmSiEYSEA8BE7NQ/7+pg3sHrkY7gohisvExkAXTIo/3meJWQZr11vETper2C2AF1YH3WJKPZ8/Yap8 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558025)(20161123562025)(6072148); SRVR:BN6PR12MB1236; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 4:WezIVlZvqSPqray5gpBpUMhnpd/7mXe5XB/g1EVMR9medxOJjC/fVwWZ8uNrcTSuYe6SFeaKsWfWc9DWfWR4xH6GnJxBCn/1JAxzgM/tBwpZwT+S4fTGutli4L3Sq9xJptNzRnZQ9OVmi7FXP8BaAO/xUN3wxJeALrNLly9yPzajtpb4yLPPI0ELIqam2uqqWG9ogtgKx/3SzLvxEQHvk9ySCRXaj0lRuUdfJsNZd8RxCWkKbbUNzkO/pLqXYLI7mJpSESAyt4iYL+gAICpZcWxkcAnFl/Z1Kq0TnySbnqoj+VFjzm0I2WGn3zyITVYo0YFShcKs1/wS0d7QBa8NGx7MqnzfLiM8E87istNTD2n6vtVJQKAopByr/f8qaE7hGBT7QDYjrPtQewEpik1ywqFG0R+7Gu79kO+POgyKPDwGH9ORMjGl9KUPLLPCU/AX7HZgfRqU1lX/6/XDAlaT3AAtRN6lmNjPnzif1Ilg44q3iQkNJTx8M86d9343ZjFZ4lVC2YJzKTb+gZbeHHprPSi9NLklj2blmHS3Bjk3DYEw+JaF2TZJu6fTvTTyRiDHxTJVlzJ/yjsbxXqQDCUaTVoE9LK2fr2GzPcrNK3nWtDjCMO1rMZ+MjLKlSmL7GwB5x1zAGkjRPmBMo19iiIAPMBf1KMY8+bRiBIoZqagfM4a/Gj/jyHmxxJFMlLWoX7Wl3jL2Qqknqhe1/PsgTQDiw== X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6029001)(7916002)(39840400002)(39410400002)(39450400003)(39860400002)(39850400002)(199003)(189002)(54906002)(8676002)(36756003)(6916009)(68736007)(38730400002)(6666003)(6486002)(97736004)(53936002)(50986999)(110136004)(66066001)(76176999)(101416001)(5003940100001)(50466002)(81166006)(50226002)(92566002)(81156014)(6116002)(106356001)(53416004)(42186005)(33646002)(48376002)(189998001)(575784001)(305945005)(2950100002)(7736002)(5660300001)(105586002)(4326007)(2351001)(2906002)(86362001)(3846002)(25786008)(47776003)(389900003)(213903007)(44824005)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1236; H:leduran-Precision-WorkStation-T5400.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR12MB1236; 23:QheN8t1mXEW5ByNzppzs3JJGz7c6acVQG6g2KL+ky?= =?us-ascii?Q?XJZ6RaJN6OCx2luvO03yRImItcyJ8nGPmkXy+0zzF0royCqhtxPoa/Z2XMwN?= =?us-ascii?Q?h+1PQqrxeyVqKVackYmTiO8sMvSonrVAjUUmF0Z2K2ytk490wSI5++FYA59h?= =?us-ascii?Q?soLIaGTYpx6WKcmpwkVpxFG6pV86N/DxLwIfY9RAP9AX+J8j9No7IDhiayoE?= =?us-ascii?Q?d0FUfIPbMjfi0fErnSJBJHv2dijS91CAWvX7N8arnl7Xir/I2zJIZMDS8ltw?= =?us-ascii?Q?FCpAF+MTrWH9uJavGbhm7ubJKa8pPJHNeN4mxoHbT/hrJvJTIv6x52gC7Iw6?= =?us-ascii?Q?jPgUEeB0YpA8yCqgdryyeK2geeLyy7SpAyshMQaq7ZbqX0oWzrO26tjfg0ny?= =?us-ascii?Q?lquJKkqX+RWw/LiPzuJ7hqNK2yNXc251qHUI0CJEEtaniXKxc0yeg8l3k2kl?= =?us-ascii?Q?aVs3QBwKp+7Ow+PaRH84pU2wOn9dBzetaoHIrarbx8gL6sMIlOf1/cCdmLAc?= =?us-ascii?Q?yv9npWdSVhVm31Dcm+xQyaMLUT7fFSV+e0GZepFYUhHApsuaUY0q+183sI22?= =?us-ascii?Q?a3DEltRNprPxDw4cthnptMIuSVbskj5Wo4aiko2Rl6yL6YInjfwMHj4n7Lsb?= =?us-ascii?Q?3XzPaqoMp2hRy3UC14lUQim4oBU+4AHkqghRyMcsgpFOjj7W5E8iNF5w35Fw?= =?us-ascii?Q?ny4rSscMkVI+KQ1NHjHKYeD6Ylt2x8wCWedlqPxrYKuT8/pFyiH+Y4Kc7o4P?= =?us-ascii?Q?7Op8XVrtbr+sm+KgcivQ9E5UbdwUJ0Y7jTkRveJcff+Yw13ZWpb60odRN5+j?= =?us-ascii?Q?mP3uFufZ4ihgwWkS3TL5mx0x5QdrgQwK3eNCTbj3ECXIeMvyFuD4wzEbR+f4?= =?us-ascii?Q?Vxxg8ugCqgvvDJ9IO0bcfSMjgEUy5sHGPJ7851JMzN0kTdpk42Pq3tgf7JGn?= =?us-ascii?Q?I15+NCKpTUfw3kVMBq7rl8vjI7TtGhpZpJmNBXg9yKPj36WuHIjf4hp4mWV9?= =?us-ascii?Q?jvicZm97Oz1LmawICDBwazCtBxZR2WV9rv2tC2QZlIKzB4+C9WvldrovBRlb?= =?us-ascii?Q?3kASTRGqm7p1NUb/+IRc2skNOh6a8QeoWYYTdLduvVIEX48z7kJ9B2dWmt3F?= =?us-ascii?Q?HgLW0m9tocumP2jChdnhOOTO36sHFdDCyDshzSE/gdkh00UQsCj6ysSenQL8?= =?us-ascii?Q?P1r5dtQLbJZT0LmJhJK4F7RWD/AgIDegzNTOCu2Ga6mlc3wUFBHqWlSSNR0T?= =?us-ascii?Q?77E8GcorhNLqoQ4kr0Yp3s3/kR4xkBiIfYSK21FXcYcphlPAC8OEmpMPAkha?= =?us-ascii?Q?/cKfTYXZMEg3h+k9OFgyiZwJzUimaZpTIp8PxbcOVfLUOlopp2pwCp/AQmtZ?= =?us-ascii?Q?gwoBw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 6:OLTSBw2owqXADIaFgSxjL5A2Xpa5b+iYtXIZTS2Uer2jk2UUdA0K3QxIHEBFglTGAIOD36Wg3qRCdC3lXX4my5Sbp9HacRrrhP60vVDog629mGik1vSFXxTUt3yjy1vjC9ev4ge4DOb8wXIIewb3FxdIwpwH3J1xQ61IXQqev3sUPCfWs0gYJtncOUk7fGNEMxxTLz89Pr4ymLw2nSpIFRz9v9l1iNFJDoHXoLmM3YRXGewb1eBX2MAka0Hxq8GcxmP937/0TuVKu1UKB1jGSCxyoDw/PwSq1Atk3d9gYEeGga5YvG375KO43wKZeTi8MIHwdMKz6WSWvSjLjjS12SeuHpqHXZdQDjhN9N2LCpH5D2bu3Ph52vA59+ILlOlTdWsmHlv+6yl2Gsav8tJWecSWjutroORjo8uRsRZAo3E=; 5:MvPUHyorN5ijUqy+3Sltp2g6UsNvx8t2qzXAgYPfaN/JgEB95N4CDsZXHaLv493Zj4dJv+vlIF7FurjnaA+6zWObwSRsTPCgTHKcDpbtL767QDchc3f1VMGQk4Y/bAcqrWluMB5ABsfe92KSaOpeJZJGkX+ZzPXHts2bTbZvAco=; 24:ZBGSik8v7koUbZgPc0tZn791uAKlRxWXX5qBqSUBuHmcPYcUw4g3xlluqNwPWCH4VhxJYSPaOEMiKQ3U3L4UBapk8eDRxIAs12N3PCVRvZc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 7:kX11VYxPZSdajc7oBNHZwoL9aIelglLt7VNRmxMDkzQmbVUtb5ZwhtbOIMLVxmcXcUN1aUAnnCZjECKzYarVkvaxCBb/7VcvrE1862qXg4Y6be80ZMy2KDjPpKLKNNNIUUkwZxzoByNm8lRgQ2W26Yt9+SVvLCo7Td3AYrHJcPsj5Wd5ObNOFCsP9far/VgGdTlkr5ESruwoHrC72sKa7Ey5Zt0sZ9Utj1AnhC2EAcZRYOrHt/AEokJhVxZ62UgGXw0KYyC+Y+IGf9Jz8cV+wmXjF1ObgboL6mW5uF1gpqWzoOyctqNVSrwxwhE8fF0Y3tcKMIULF5hh8J8NNd/nVw==; 20:iSBHlhCHPUWLpjN7XjI1Ek75RRZYYRTapeTmN0ZkJIkCeq1JPVrUujUwyMu+GPr3JDsc7NMI4zQeQP3Lt/qtIZ6e1v4shTxDsUSQ/JDrDXCKAs3CygsRwjQ0rR36Az3+rjrmFkH7H74UlzjC4vf2isEC3N+NARcjM5d9JpmilcrMjbJI5w6ZCI4ZPgOPikRTB6lWJrgHDx0wvUD8ZPfC10HFvFCFWkT4qFqjHSxwObaBEavfyake9yXXxtQTLIX7 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 21:02:27.4776 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1236 Subject: [edk2] [PATCH v3 2/4] MdeModulePkg/Universal/CapsulePei: Add support for PCD PcdPteMemoryEncryptionAddressOrMask X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laszlo Ersek , Feng Tian , Leo Duran , Brijesh Singh , Star Zeng Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This PCD holds the address mask for page table entries when memory encryption is enabled on AMD processors supporting the Secure Encrypted Virtualization (SEV) feature. The mask is applied when 4GB tables are created (UefiCapsule.c), and when the tables are expanded on-demand by page-faults above 4GB's (X64Entry.c). Cc: Feng Tian Cc: Star Zeng Cc: Laszlo Ersek Cc: Brijesh Singh Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leo Duran Reviewed-by: Star Zeng --- MdeModulePkg/Universal/CapsulePei/CapsulePei.inf | 2 ++ .../Universal/CapsulePei/Common/CommonHeader.h | 7 +++++++ MdeModulePkg/Universal/CapsulePei/UefiCapsule.c | 13 ++++++++---- MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c | 23 +++++++++++++++---= ---- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/MdeModulePkg/Universal/CapsulePei/CapsulePei.inf b/MdeModulePk= g/Universal/CapsulePei/CapsulePei.inf index d2ca0d0..c54bc21 100644 --- a/MdeModulePkg/Universal/CapsulePei/CapsulePei.inf +++ b/MdeModulePkg/Universal/CapsulePei/CapsulePei.inf @@ -7,6 +7,7 @@ # buffer overflow, integer overflow. # # Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2017, AMD Incorporated. All rights reserved.
# # This program and the accompanying materials # are licensed and made available under the terms and conditions @@ -76,6 +77,7 @@ [Pcd.IA32] gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleCoalesceFile ## SOMETIMES_C= ONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable ## SOMETIMES_C= ONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ##= CONSUMES =20 [FeaturePcd.IA32] gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES diff --git a/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h b/MdeM= odulePkg/Universal/CapsulePei/Common/CommonHeader.h index 7298874..0a9761e 100644 --- a/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h +++ b/MdeModulePkg/Universal/CapsulePei/Common/CommonHeader.h @@ -2,6 +2,8 @@ Common header file. =20 Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
+ This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License which accompanies this distribution. The full text of the license may be = found at @@ -20,6 +22,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHE= R EXPRESS OR IMPLIED. // #define EXTRA_PAGE_TABLE_PAGES 8 =20 +#define PAGING_4K_ADDRESS_MASK_64 0x000FFFFFFFFFF000ull +#define PAGING_2M_ADDRESS_MASK_64 0x000FFFFFFFE00000ull +#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull + // // This capsule PEIM puts its private data at the start of the // coalesced capsule. Here's the structure definition. @@ -60,6 +66,7 @@ typedef struct { EFI_PHYSICAL_ADDRESS MemoryBase64Ptr; EFI_PHYSICAL_ADDRESS MemorySize64Ptr; BOOLEAN Page1GSupport; + UINT64 PteMemoryEncryptionAddressOrMask; } SWITCH_32_TO_64_CONTEXT; =20 typedef struct { diff --git a/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c b/MdeModulePkg= /Universal/CapsulePei/UefiCapsule.c index 9ac9d22..7c651f6 100644 --- a/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c +++ b/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c @@ -2,6 +2,7 @@ Capsule update PEIM for UEFI2.0 =20 Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions @@ -145,6 +146,7 @@ Create4GPageTables ( PAGE_TABLE_ENTRY *PageDirectoryEntry; UINTN BigPageAddress; PAGE_TABLE_1G_ENTRY *PageDirectory1GEntry; + UINT64 AddressSetMask; =20 // // Create 4G page table by default, @@ -168,6 +170,8 @@ Create4GPageTables ( // BigPageAddress =3D (UINTN) PageTablesAddress; =20 + AddressSetMask =3D PcdGet64 (PcdPteMemoryEncryptionAddressOrMask); + // // By architecture only one PageMapLevel4 exists - so lets allocate stor= age for it. // @@ -187,7 +191,7 @@ Create4GPageTables ( // // Make a PML4 Entry // - PageMapLevel4Entry->Uint64 =3D (UINT64)(UINTN)PageDirectoryPointerEntr= y; + PageMapLevel4Entry->Uint64 =3D (UINT64)(UINTN)PageDirectoryPointerEntr= y | (AddressSetMask & PAGING_4K_ADDRESS_MASK_64); PageMapLevel4Entry->Bits.ReadWrite =3D 1; PageMapLevel4Entry->Bits.Present =3D 1; =20 @@ -198,7 +202,7 @@ Create4GPageTables ( // // Fill in the Page Directory entries // - PageDirectory1GEntry->Uint64 =3D (UINT64)PageAddress; + PageDirectory1GEntry->Uint64 =3D (UINT64)PageAddress | (AddressSet= Mask & PAGING_1G_ADDRESS_MASK_64); PageDirectory1GEntry->Bits.ReadWrite =3D 1; PageDirectory1GEntry->Bits.Present =3D 1; PageDirectory1GEntry->Bits.MustBe1 =3D 1; @@ -215,7 +219,7 @@ Create4GPageTables ( // // Fill in a Page Directory Pointer Entries // - PageDirectoryPointerEntry->Uint64 =3D (UINT64)(UINTN)PageDirectory= Entry; + PageDirectoryPointerEntry->Uint64 =3D (UINT64)(UINTN)PageDirectory= Entry | (AddressSetMask & PAGING_4K_ADDRESS_MASK_64); PageDirectoryPointerEntry->Bits.ReadWrite =3D 1; PageDirectoryPointerEntry->Bits.Present =3D 1; =20 @@ -223,7 +227,7 @@ Create4GPageTables ( // // Fill in the Page Directory entries // - PageDirectoryEntry->Uint64 =3D (UINT64)PageAddress; + PageDirectoryEntry->Uint64 =3D (UINT64)PageAddress | (AddressSet= Mask & PAGING_2M_ADDRESS_MASK_64); PageDirectoryEntry->Bits.ReadWrite =3D 1; PageDirectoryEntry->Bits.Present =3D 1; PageDirectoryEntry->Bits.MustBe1 =3D 1; @@ -443,6 +447,7 @@ ModeSwitch ( Context.MemoryBase64Ptr =3D (EFI_PHYSICAL_ADDRESS)(UINTN)&MemoryBa= se64; Context.MemorySize64Ptr =3D (EFI_PHYSICAL_ADDRESS)(UINTN)&MemorySi= ze64; Context.Page1GSupport =3D Page1GSupport; + Context.PteMemoryEncryptionAddressOrMask =3D PcdGet64 (PcdPteMemoryEncry= ptionAddressOrMask); =20 // // Prepare data for return back diff --git a/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c b/MdeModulePk= g/Universal/CapsulePei/X64/X64Entry.c index 5ad95d2..2197502 100644 --- a/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c +++ b/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c @@ -2,6 +2,8 @@ The X64 entrypoint is used to process capsule in long mode. =20 Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
+ This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License which accompanies this distribution. The full text of the license may be = found at @@ -29,6 +31,7 @@ typedef struct _PAGE_FAULT_CONTEXT { UINT64 PhyMask; UINTN PageFaultBuffer; UINTN PageFaultIndex; + UINT64 PteMemoryEncryptionAddressOrMask; // // Store the uplink information for each page being used. // @@ -114,6 +117,7 @@ AcquirePage ( ) { UINTN Address; + UINT64 AddressSetMask; =20 Address =3D PageFaultContext->PageFaultBuffer + EFI_PAGES_TO_SIZE (PageF= aultContext->PageFaultIndex); ZeroMem ((VOID *) Address, EFI_PAGES_TO_SIZE (1)); @@ -121,14 +125,16 @@ AcquirePage ( // // Cut the previous uplink if it exists and wasn't overwritten. // - if ((PageFaultContext->PageFaultUplink[PageFaultContext->PageFaultIndex]= !=3D NULL) && ((*PageFaultContext->PageFaultUplink[PageFaultContext->PageF= aultIndex] & PageFaultContext->PhyMask) =3D=3D Address)) { + if ((PageFaultContext->PageFaultUplink[PageFaultContext->PageFaultIndex]= !=3D NULL) && + ((*PageFaultContext->PageFaultUplink[PageFaultContext->PageFaultIndex= ] & PageFaultContext->PhyMask) =3D=3D Address)) { *PageFaultContext->PageFaultUplink[PageFaultContext->PageFaultIndex] = =3D 0; } =20 // // Link & Record the current uplink. // - *Uplink =3D Address | IA32_PG_P | IA32_PG_RW; + AddressSetMask =3D PageFaultContext->PteMemoryEncryptionAddressOrMask; + *Uplink =3D Address | (AddressSetMask & PAGING_4K_ADDRESS_MASK_64) | IA3= 2_PG_P | IA32_PG_RW; PageFaultContext->PageFaultUplink[PageFaultContext->PageFaultIndex] =3D = Uplink; =20 PageFaultContext->PageFaultIndex =3D (PageFaultContext->PageFaultIndex += 1) % EXTRA_PAGE_TABLE_PAGES; @@ -153,6 +159,7 @@ PageFaultHandler ( UINT64 *PageTable; UINT64 PFAddress; UINTN PTIndex; + UINT64 AddressSetMask; =20 // // Get the IDT Descriptor. @@ -163,6 +170,7 @@ PageFaultHandler ( // PageFaultContext =3D (PAGE_FAULT_CONTEXT *) (UINTN) (Idtr.Base - sizeof = (PAGE_FAULT_CONTEXT)); PhyMask =3D PageFaultContext->PhyMask; + AddressSetMask =3D PageFaultContext->PteMemoryEncryptionAddressOrMask; =20 PFAddress =3D AsmReadCr2 (); DEBUG ((EFI_D_ERROR, "CapsuleX64 - PageFaultHandler: Cr2 - %lx\n", PFAdd= ress)); @@ -179,19 +187,19 @@ PageFaultHandler ( if ((PageTable[PTIndex] & IA32_PG_P) =3D=3D 0) { AcquirePage (PageFaultContext, &PageTable[PTIndex]); } - PageTable =3D (UINT64*)(UINTN)(PageTable[PTIndex] & PhyMask); + PageTable =3D (UINT64*)(UINTN)((PageTable[PTIndex] & ~(AddressSetMask & = PAGING_4K_ADDRESS_MASK_64)) & PhyMask); PTIndex =3D BitFieldRead64 (PFAddress, 30, 38); // PDPTE if (PageFaultContext->Page1GSupport) { - PageTable[PTIndex] =3D (PFAddress & ~((1ull << 30) - 1)) | IA32_PG_P |= IA32_PG_RW | IA32_PG_PS; + PageTable[PTIndex] =3D ((PFAddress | (AddressSetMask & PAGING_1G_ADDRE= SS_MASK_64)) & ~((1ull << 30) - 1)) | IA32_PG_P | IA32_PG_RW | IA32_PG_PS; } else { if ((PageTable[PTIndex] & IA32_PG_P) =3D=3D 0) { AcquirePage (PageFaultContext, &PageTable[PTIndex]); } - PageTable =3D (UINT64*)(UINTN)(PageTable[PTIndex] & PhyMask); + PageTable =3D (UINT64*)(UINTN)((PageTable[PTIndex] & ~(AddressSetMask = & PAGING_4K_ADDRESS_MASK_64)) & PhyMask); PTIndex =3D BitFieldRead64 (PFAddress, 21, 29); // PD - PageTable[PTIndex] =3D (PFAddress & ~((1ull << 21) - 1)) | IA32_PG_P |= IA32_PG_RW | IA32_PG_PS; + PageTable[PTIndex] =3D ((PFAddress | (AddressSetMask & PAGING_2M_ADDRE= SS_MASK_64)) & ~((1ull << 21) - 1)) | IA32_PG_P | IA32_PG_RW | IA32_PG_PS; } =20 return NULL; @@ -244,6 +252,7 @@ _ModuleEntryPoint ( // Hook page fault handler to handle >4G request. // PageFaultIdtTable.PageFaultContext.Page1GSupport =3D EntrypointContext->= Page1GSupport; + PageFaultIdtTable.PageFaultContext.PteMemoryEncryptionAddressOrMask =3D = EntrypointContext->PteMemoryEncryptionAddressOrMask; IdtEntry =3D (IA32_IDT_GATE_DESCRIPTOR *) (X64Idtr.Base + (14 * sizeof (= IA32_IDT_GATE_DESCRIPTOR))); HookPageFaultHandler (IdtEntry, &(PageFaultIdtTable.PageFaultContext)); =20 @@ -298,4 +307,4 @@ _ModuleEntryPoint ( // ASSERT (FALSE); return EFI_SUCCESS; -} \ No newline at end of file +} --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Thu May 2 08:07:25 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1487278959414288.9419291058198; Thu, 16 Feb 2017 13:02:39 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E8B4382105; Thu, 16 Feb 2017 13:02:34 -0800 (PST) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0626.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe4a::626]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id BD6FE820E6 for ; Thu, 16 Feb 2017 13:02:33 -0800 (PST) Received: from leduran-Precision-WorkStation-T5400.amd.com (165.204.77.1) by BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Thu, 16 Feb 2017 21:02:28 +0000 X-Original-To: edk2-devel@ml01.01.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=JNVE2QPbsTM6ECMKYub9NN/O3QL3+CmopNi/Wt6wGzM=; b=468M57id3q5z40CgWGn0tIFOn8uRLPVpmIJYomazQDTYoUTN15hssSBZweAraNKoRQzbBVtCiALbzMShqSXRXji+6tXv2U4d4zE6jyeYaW3QPhvc4VYXuOcaGicCQ5jNp1Jc3H+NfqT5jyZuzVuSqbLkilbrrzlhQzFgZT88eQg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; From: Leo Duran To: Date: Thu, 16 Feb 2017 15:02:05 -0600 Message-ID: <1487278926-14303-4-git-send-email-leo.duran@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1487278926-14303-1-git-send-email-leo.duran@amd.com> References: <1487278926-14303-1-git-send-email-leo.duran@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR13CA0037.namprd13.prod.outlook.com (10.168.240.151) To BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) X-MS-Office365-Filtering-Correlation-Id: f3db6557-5d10-4590-2cf6-08d456af1e39 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 3:6SStCeEtt9bjPEA+b2as1oJBL4+Z3zwDAiaNIGwDEYCbWijOsmPE4wijRHcoWezYbxbOV6IV8wiljlfljDRVha3kpOQSSA8QE3omd5ZJRH0H6V3koRpLIVFeFB69AEe52en5IdOyn8SUfBf437AZ/Glh/QSMVIRluyJNdIuUyxofXEzeRSpvyvGXwTdXAR8Mh4unBIIG0FKM1fysLCGSqFyBKnxmQ1DPhSdZ3sEepEhHxsyfWDkd7CHfiEX7bQJYey9+D7D3YB4oxT3B4SKqfmnEqYa/KGTR1+5ZIJrcBmU=; 25:Ppy1fJApIfJICpa8gzPbB5DYaXXmwRkKIN93838ft/XO+RL69e0XBxB0zPnf3RJXElBaQZx4rLlKxInvu/IUH1T82gftwO2azv0Z43O8DN/YmckERd+kV9pYS0OFp2xaLMBj3oX0PDhwuoy34VItyPkpSJPw3fh3nb+G9RGeFSciGnG4UtiddweTPQZN3/E+NbLmhD9ptC9sAbhR+Km7JoBnduEO9/H2A6Ji/FlbmHNU3RfawrBU8fYS7QeR/6rEGZn8u5tORH39k2Sksf/54ECjzDNbXJKJae25XGG8IL0MoFXEVoe/7EWzivgt6pAlMULj2iank1J3/VFvBZjii7LFvXYY5eJ4CHozFKsOU55h9+aBcLovd+0Ed5yslxaiVhE5haSBRcPWhOKPskmwbxD6j2TqigPcvRI8y5ZZ1ybHHuWAByqX8NTa/ufLl0UlNLVZ8V4TMsQkaaLIZyl8XA== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 31:fc18dA6rjtNyxvkWddeWJnsVfKfBGLOY55bwnuRPaRVB51GoKTUiEM+WvaGJAV86lHawWp4ch1/gPO2MqMFR+CViDt897eKJs9L2zXGLKWbGsXi+WIV+msrBLPrZBXJEK6tZgT9veQU0F51ZABoQeRPcot9TVZjI/BcEWWBkl5Y5R3udi8XIlAIVJwYMOV5qAy5WpvyCqyNZnEu7+qnL8gVeC0/Jo5ubEhLuo7SuOTo=; 20:yMepGsPkVDNn2QL+ELbv0IxPM3Ie5m586qKb9ZljOT3WvyY2NmsLpUkILy9xlUKlNOpj37XjIX9sAcI8F+008e9d9QcuodFEZJwSBrJzYoDAI85xALOeWVvR3pq8Rleqh2pK4aRozYp8gQWuABn9Y1UBhZiDfrwmRXgaGaAUEpFwoLq8fPq0LAhsbP0+npBsNkU0exlEyENJeX1tMmOH9EPmNU8dhVAnpf46nS01YZaWyjq4JnhzvM/EN2sYFmu/OT1zdaXMlvSwvQeJWsWl8KgnZ45uG+5zkAUKrY4ZD4M6uD9K3vu+En5I//HuKZQVWeLGfK0tOpQkVmzVoGf5EuwKdm9gjwBMzR7eG23ernbhNno2fk/SelwJEBnF+QlAeHam6dVEVRT+h5DxqKe9vafP5WwS8ZmCU6O0ZXrGLan1O58UtMNDeYoXtfQ/XjNpDl/i85Rv+1G9UkSQiqs/8LloRuCyt1oqa0gIldtgxdsYNaRjNdXbiiATBdTiAu6O X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558025)(20161123562025)(6072148); SRVR:BN6PR12MB1236; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 4:IGQgr1lwA5efUi/4wshHoUq3UGihqkwArsRsR6suLvRGXcymZzxAoyRVR4gcUNXj+NqGkCUMpqvJdMfRO4XOY2nVhSm1MGKDeTOlCOh+0bYfV5ux/E0F8S6TwvO0/ckPr+zVirxZ4hXxCvdMyJ/2XJg+8yio6lnZUmqWluLsp5kPT0HujKqzbDgkpACK82V8OkIQL3mN2HYdD4BMFp8vgjXxvnFqfMdjUhcTZvFfA6XL1/zbPmUbQcxwbDouoHWa+/DbCGUFw4pXRbWZpfqy+GlSU5FVmPcjK8UsFZLlF0okqaCaFIMIqzjhky8D7TKJGb9/gl0K7tjb4IMktumGgBVX9RRBlAUtRl6BWfSxjfedxajGI3KARXqGZo1H4/vwWvNwkbJLbJ8WyA4fzdXrdMRYhgnz6umzuw6d+5AIiBDV+2ArNjfp2eurwE7y4nFFjhVi/opoIpcntMRpaCozcCp/hsjU61pFq1859qF/HmNTEFkYGdYg9cZ43Kd17VRYrDyi03q7aLCloSs9rCLKrBVOfRAfy1AAhhmBKKIEf9bwKGSS/bS9N+UtlexUYimM6SP8YJrr9TIYlAGklLAV2flOcCbwh/5hsfcwjQdgGYNy8cnOJHgMRrjnyIPfi8uDcmoUyXPvVFpnEFHrnMCkqdtEIYVN89dRTjZXIiJXY6rp5QLiYIYFZZ0jJ5GWxvJyRtoDbqVNsoqeOmWZLNJE1Q== X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6029001)(7916002)(39840400002)(39410400002)(39450400003)(39860400002)(39850400002)(199003)(189002)(54906002)(8676002)(36756003)(6916009)(68736007)(38730400002)(6666003)(6486002)(97736004)(53936002)(50986999)(110136004)(66066001)(76176999)(101416001)(5003940100001)(50466002)(81166006)(50226002)(92566002)(81156014)(6116002)(106356001)(53416004)(42186005)(33646002)(48376002)(189998001)(305945005)(2950100002)(7736002)(5660300001)(105586002)(4326007)(2351001)(2906002)(86362001)(3846002)(25786008)(47776003)(389900003)(213903007)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1236; H:leduran-Precision-WorkStation-T5400.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR12MB1236; 23:t7oIjvO++i3xnuETIQw2vDgze5cVILlqs4r91Wnfs?= =?us-ascii?Q?wlo6LJI04tOfy36ct1y7he3U4O2oxJ2WphVqmIpdhvz1gNbDAxj8LBvklUc9?= =?us-ascii?Q?z+NktSApIA4c49KOtoiH18DPF6zcmblFn5xjBkjQiDYOtCRYOOqKHwiAhug4?= =?us-ascii?Q?83eZMDBccAYLNLD+MeWJtpN/mgReE2ey9x5AQpD/CgrHp8mmtz+/UvXbKIBN?= =?us-ascii?Q?kdrxNgvltxNhUmQT3MxqFV9RkieMFk4d1pHn5pLHwHJQOrq/bz0u/7ae1oGv?= =?us-ascii?Q?WcrPH0DfA0E7Un3sRg17P5l9+qN4SCtEDioFoUuC1bVIutRvr4O4kctREH0E?= =?us-ascii?Q?XDJNeGbR6J4n1UL1Idk0hGaIwgf7y0hB2Yu4fhl+WdxvY2zWF4hz3L49rtoy?= =?us-ascii?Q?pHAJT4OrmZZ7OQk3OiLqdkD/OqPbBxmqWzHOHXiLhZUjzAKBDnuLuUxl1cgD?= =?us-ascii?Q?G6nmpCXQunVXGKxgKKywp8jVbKuuNwBFVw5vEunDGgjJU3niOm18UcvrkIFF?= =?us-ascii?Q?tTNQ8+iSZeLgeNlfSScNcE4BKydu2pYpc2fZCV56CQ6ON0rpmB407rbXf2P4?= =?us-ascii?Q?QGyKg4yhAbih5bjhf6N9wz7krp/0Dx8qYlSPqRCEw2v7exhyNfVxUphpa0s4?= =?us-ascii?Q?t42JUHRACjxU9MBOMs8hIZOt31j9yNqxc9jHsSmdnsIEJJHE435UbC5n8hN3?= =?us-ascii?Q?W5qKS18tVyolnLUuwMAvCHkF2hJiK0AJFql6tjxSwfFt0eaiO0EeCMJA+26T?= =?us-ascii?Q?u6NhiTBWCdmCZygRqPBhHHnMdyS/oPWcVmZOmnDhCLsdLJ3s0LfkENt8YNMs?= =?us-ascii?Q?AUoiH8wOIwt3MTvr2EW2NLm5klNaQL+07895w5C1q2jqYNAX/XPelIn/TKUG?= =?us-ascii?Q?bY16MzxOspA0AOCQSZobBTvkb+NQ0mMlKhVlc5RvqsuohN+pOi/UP/t8K6Zz?= =?us-ascii?Q?2NrKIYMtS4srDLWFnY0nYVWAtAXN3ACZqZPZi+jy9AGDOmatx6B8TbI9um21?= =?us-ascii?Q?Uor2E1oGj+VwAWRgcwKaMd2/PfR5O6LxBuC0YL9ZXYORDcz+Dc07XEyKCIsG?= =?us-ascii?Q?nHpaxOJPOxVG+aJhWVOcWKKyX03k93KPH5ip70s8x6+l3g7GWXWgxWXCCKrq?= =?us-ascii?Q?fvGk3I4YAtQBMvkbYNuuTBGmsTK3HLQOqGEdbWyb/QjpQZYuJdJ32WniWpWf?= =?us-ascii?Q?2xzlZMEkHpgkBy3zo9ttUFK4OzHvyVc2Bflbg9bLIxBNomJ+Y6RWOTWZpC3R?= =?us-ascii?Q?ps/EwMO1tLIVkP1ykdUtiL4NYUD/uISk+wQnVr8HbpTQdGxEotEyLHMtgTQT?= =?us-ascii?Q?0lcQdlgCmZs+q43JZkL6FU=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 6:o/kIH7oeFptK4tAXoODbadLTE6l4EGDkzBzO44RfKShEzB7tsz4xFqWmwEsvEDrZKDNotipN3OeyDn7iSxO0N656G4DtlCOKuS4k67OysVVEyVd86eadzGVwcOVuBwDQBFX3DXR55r4cA3KrTSePPV0jzlWglyVc7imEbIa8Sz7L8p70zUJpgXJaZTnPyBMWVRant5erCTTwVqRJ8oilOUTCGbqk2ICww6Ukrn+RjlKVyUXunNAP0xsx/HacX4sbiUMDrUA6eyYEhlyJQhhxXQL4Ixq6druavOKjK/k9dW9gpOY/Ir0zJtMF0tSNSiJMf0N6sS0Rj8B+pMO+cqPlspn8jJFXjKNss6Y6fOZ/XSPTunKUNWSTPpVDhrfA3zFvc/VYe+5OpV2J2s+P7emm3qafv7OWUXgBXqmhsLeXLFo=; 5:/9Rk0WwW6hiOe5jlhmz1RE4gSK7YnBcp0stJnxXILI0CuzZC0gI0VkCiPTSFsVWRvc0uOKAL6cTF/HiKeDG2uu+X5iewi+lv7IgpsnAjG90REHaCkGV05zCOhop7J3LM4yFMTmMzDhLRczfUhCA312XB/qMCfVto0fIGs9gt8Cg=; 24:4us3B3Zq7xcEE/Wf2XqHIl/0eJftQFoHwOL57aJhNoRrmOFkQLYDVN+qRx54yfT0Ls6YnpIjjv8sc1ONWh4eGbKvswGmaUYNn9GoD1zo8Rk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 7:HKpSMVETwEG9Wa/dVxMsEBtbNjx6szFkTmk2nk2zN+JyFUFlQky3RvA6iTSuBhzs3TH4NzeMWkRd5yEAD/+69Er1QfHKsSQqJoOa7CMVRy/9B5CRRjGa7WEloMOf0mU6mQtGnT1eVe2xNHq2SrkpUTux20wlZZJqHPkhyur5W7ZYxHihTUdEKrkxz+Ve0jbpciyjuOHmYMl5iItnGa3HM2gQf5Z0S8SaGQtXB/IoP0FbqUUyP//5LvEsUKbUIUhk9b8tE3UJo2nz7NOO1SmezX56LWb4i4sB4GCzzaSx+NY0pKXUoQKzt+Q3/6fk1KFlkeSAGE3+UJ/SZf2tmCK4qg==; 20:p/BD3UIhW7oWr0cxtltaVyMrDURSsa8CGRoc3eeZTQ9uC0vPM3BTALboS/e2lQIEYKSpRPHTR487n39bF27+C8ItPbL3NSFhEze4UmqRM5J/Lm92zEh0OGLeHFKF1IFTmE2N+PzCrU+N4EBk1X4il23KeAYKIxy1LgLCUvStywfu/u1Ea76xFIV7u1ansGq3J2EBOzp0lGlAPk6hbFKUbWEM5FA57sBvLCdolzC1WRogjIP/ewJJISlwj3mi71RC X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 21:02:28.7437 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1236 Subject: [edk2] [PATCH v3 3/4] UefiCpuPkg/Universal/Acpi/S3Resume2Pei: Add support for PCD PcdPteMemoryEncryptionAddressOrMask X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Feng Tian , Brijesh Singh , Leo Duran , Laszlo Ersek , Jeff Fan , Star Zeng Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This PCD holds the address mask for page table entries when memory encryption is enabled on AMD processors supporting the Secure Encrypted Virtualization (SEV) feature. The mask is applied when page tables are created (S3Resume.c). CC: Jeff Fan Cc: Feng Tian Cc: Star Zeng Cc: Laszlo Ersek Cc: Brijesh Singh Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leo Duran Reviewed-by: Star Zeng --- UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c | 16 ++++++++++++-= --- UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c b/UefiCpuPkg= /Universal/Acpi/S3Resume2Pei/S3Resume.c index d306fba..3701957 100644 --- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c +++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c @@ -5,6 +5,7 @@ control is passed to OS waking up handler. =20 Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2017, AMD Incorporated. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions @@ -58,6 +59,10 @@ #define STACK_ALIGN_DOWN(Ptr) \ ((UINTN)(Ptr) & ~(UINTN)(CPU_STACK_ALIGNMENT - 1)) =20 +#define PAGING_4K_ADDRESS_MASK_64 0x000FFFFFFFFFF000ull +#define PAGING_2M_ADDRESS_MASK_64 0x000FFFFFFFE00000ull +#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull + #pragma pack(1) typedef union { struct { @@ -614,6 +619,7 @@ RestoreS3PageTables ( VOID *Hob; BOOLEAN Page1GSupport; PAGE_TABLE_1G_ENTRY *PageDirectory1GEntry; + UINT64 AddressSetMask; =20 // // NOTE: We have to ASSUME the page table generation format, because w= e do not know whole page table information. @@ -682,6 +688,8 @@ RestoreS3PageTables ( NumberOfPml4EntriesNeeded =3D (UINT32)LShiftU64 (1, (PhysicalAddress= Bits - 39)); NumberOfPdpEntriesNeeded =3D 512; } + + AddressSetMask =3D PcdGet64 (PcdPteMemoryEncryptionAddressOrMask); =20 PageMapLevel4Entry =3D PageMap; PageAddress =3D 0; @@ -696,7 +704,7 @@ RestoreS3PageTables ( // // Make a PML4 Entry // - PageMapLevel4Entry->Uint64 =3D (UINT64)(UINTN)PageDirectoryPointerEn= try; + PageMapLevel4Entry->Uint64 =3D (UINT64)(UINTN)PageDirectoryPointerEn= try | (AddressSetMask & PAGING_4K_ADDRESS_MASK_64); PageMapLevel4Entry->Bits.ReadWrite =3D 1; PageMapLevel4Entry->Bits.Present =3D 1; =20 @@ -707,7 +715,7 @@ RestoreS3PageTables ( // // Fill in the Page Directory entries // - PageDirectory1GEntry->Uint64 =3D (UINT64)PageAddress; + PageDirectory1GEntry->Uint64 =3D (UINT64)PageAddress | (AddressS= etMask & PAGING_1G_ADDRESS_MASK_64); PageDirectory1GEntry->Bits.ReadWrite =3D 1; PageDirectory1GEntry->Bits.Present =3D 1; PageDirectory1GEntry->Bits.MustBe1 =3D 1; @@ -724,7 +732,7 @@ RestoreS3PageTables ( // // Fill in a Page Directory Pointer Entries // - PageDirectoryPointerEntry->Uint64 =3D (UINT64)(UINTN)PageDirecto= ryEntry; + PageDirectoryPointerEntry->Uint64 =3D (UINT64)(UINTN)PageDirecto= ryEntry | (AddressSetMask & PAGING_4K_ADDRESS_MASK_64); PageDirectoryPointerEntry->Bits.ReadWrite =3D 1; PageDirectoryPointerEntry->Bits.Present =3D 1; =20 @@ -732,7 +740,7 @@ RestoreS3PageTables ( // // Fill in the Page Directory entries // - PageDirectoryEntry->Uint64 =3D (UINT64)PageAddress; + PageDirectoryEntry->Uint64 =3D (UINT64)PageAddress | (AddressS= etMask & PAGING_2M_ADDRESS_MASK_64); PageDirectoryEntry->Bits.ReadWrite =3D 1; PageDirectoryEntry->Bits.Present =3D 1; PageDirectoryEntry->Bits.MustBe1 =3D 1; diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf b/Uefi= CpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf index 73aeca3..d514523 100644 --- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf +++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf @@ -6,6 +6,7 @@ # control is passed to OS waking up handler. # # Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2017, AMD Incorporated. All rights reserved.
# # This program and the accompanying materials are # licensed and made available under the terms and conditions of the BSD Li= cense @@ -91,6 +92,7 @@ =20 [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable ## SOMETIMES_CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ##= CONSUMES =20 [Depex] TRUE --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Thu May 2 08:07:25 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1487278958879335.79366704957147; Thu, 16 Feb 2017 13:02:38 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 237948210B; Thu, 16 Feb 2017 13:02:36 -0800 (PST) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0626.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe4a::626]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 23E3F82105 for ; Thu, 16 Feb 2017 13:02:34 -0800 (PST) Received: from leduran-Precision-WorkStation-T5400.amd.com (165.204.77.1) by BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Thu, 16 Feb 2017 21:02:29 +0000 X-Original-To: edk2-devel@ml01.01.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YmB+UAT8reJ8NkEpGZczzXy6Cg00wmbSp/e1RDLkT/s=; b=a9X4e5LbW6xeEhwVSDXWY+SaU/2g/1HYw7nEx2Q4pJn6nKd9FOxTYiz1LFmLs7anGoMS+vx9ti1EWsxeutrlqTqrcKShrsAhnOGn/fYXqkWrlle9tg0sNf/P4tdarpWhruYcasG/ZjYIHstONCCgkaMBqslbi4Iz1rXe/6QtX5Y= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; From: Leo Duran To: Date: Thu, 16 Feb 2017 15:02:06 -0600 Message-ID: <1487278926-14303-5-git-send-email-leo.duran@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1487278926-14303-1-git-send-email-leo.duran@amd.com> References: <1487278926-14303-1-git-send-email-leo.duran@amd.com> MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR13CA0037.namprd13.prod.outlook.com (10.168.240.151) To BN6PR12MB1236.namprd12.prod.outlook.com (10.168.227.22) X-MS-Office365-Filtering-Correlation-Id: 11b264d2-de14-4ae9-c9d9-08d456af1edf X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 3:zKSqto4JA+pJRiSZ7R67+hVklOrdBWtqeLs6gqtpxQLQeXP7Fx+KmleWo238rjTOTsZZz9eOY8VjpDfTbhdoB2rTnnX9cV1XGrB4pfGQjuRBC30DyLs4AJXfHbCBuRzGMQMjZtxq2jRD44rWhDSiA9ezIu7l870S5yzoIv4VHwQL683tqJlxKViXKiwZh4A7JCgZ17TOiXK2+g2aYcx4ORpCOjaXr7p1c8Wxt7QGzl3pelCP5Tdk7x7BtFCAOqMIFJONhOc/qg/QDCP4ml0uQd5oFv0W4fPxrjsoj4/bT78=; 25:a0bS8XuCXEnN55bhE1xpfcdm7wbpbMZbwlxhV3Q7UUcrHr5LmjV5HmfXUj+Kv/UhRYoUfPnDl7oWZIhFhcOycnjw91l+SftEYqbYBrdVyVESjD+pI8BzxZ5sVRIhmqJEKohjoHFBQwHNTaWaLW2fYInHwQbRiJaZCLzHvvGcJphT9PKDFLTvzAdco9CWWJkIx9Gv+FPMs6PbZwcwHVtcWA0LoPWb4JrSXwJv8UG8HhHjnL8kel5/HoAS2L+9oW8GVYZ2jky3qm9yB4RjyP3DMkAOkBhxzRWzeALeYmVUP9qB0v4t6vD03Q53WbzX0HFOpj3/+k3NhCDv9dP4Mt0dO+pTtxaSyzKqNEliIK9wWyadbcQDpPEw7SDQVZ+nt1seJSbqa1yoOQirdhESbebpAi5Z+RduBOpoqqWdpGGGmM5PpqPX2CLp05kcARKN8X73UU0UXTTI3b+qChNM/nzblg== X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 31:3MOgTIDHlxHYqWs3zungedT9esOqfDzzmhYaWWyau75+bItMfYBot0OsP1EiR1rQDWm/ewp1UEJnKXYmAoGXRCilgGCK+CM5EdVxish87j8f73mZX0kQot2r+fdI+Y6w20iEhAqL3y0MAeuZz7+ya1NN0joZP0GlHAKpA//jQSIpU/xyMbjWD1ommPgFRC5ULyTftZm/CZeLUrHvMvZVLP0URs2a6EhHYeOMd0wULmw=; 20:pGhdwQRbtThDIKMpS7f/j6QD94izvfol+p/Uzueh30ap2snp7hejVhUH9l0jl6T+IZEdZzsCAsnDBqMSEJ/QDDoGNmVubZsxF8N/ATIQIKgCtoAoXTkHoxRmIpGl+jz4uCfROQHCBzxCHZOAXFn4won5Jw+k5nMPbQ+b5aBtG5dSUtfgupbj+/0IsxVz+kaAVsMhbjOEtHEcM/t8Sry020vzfhD2iIDG6mHHr3HOHhUf7SnBZER0AeR9GzEQFNVORi8ZaPSRWiDaKDgDfhbGZM1/F3qkt7qg5FZ993t4yoEGNqO3JwoThLCJRuylFyn82rUh8GrTlLYTOsffykFzQc375lcqHh89qudUJCFi3yh4DkCjl4JYbgxVWCjy6tJ9Is6I/k5DN0ERa9MqFdPOI00Eo6wsNNJGb7HM2fE0N+A16nLDTpi5YO7kavDov3RcL+JikSF7DX4l1XEYPj3xNs1c2ZGzLr+z39x3okWXH+pSfkhXaa4e8MNCg6HAYxHq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558025)(20161123562025)(6072148); SRVR:BN6PR12MB1236; BCL:0; PCL:0; RULEID:; SRVR:BN6PR12MB1236; X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 4:DaD/30qMBZR9xwxlNQhX2GDoJNMIo4Xmv8q10poymLgeckYW//c5vFC0xkthiEoIkuhawFp/RxeBEGEnN6h4EiC3pwYL2OppbWHGwP/PzsAEKYmgcsJ3u11SuefTonDBZRg0ZeK/1XsOADkUYhdDTAcc+vYsdyoZ0EF07DxvSuLWdKrIzFTl7A5dCota3ydM+kjZe60Q2/EgvHTuhUQ5Z8qM63mUujYgpMw2BO4ZqCii8qOwpY9Ii1bcVJ3MxklAzii1CB7f73NXy4XSMiTwew4se73zBdiEYLD78N7sSkWau0A11JtqEM7tlK+TuinwGMfbGNIFU2jr6umVI0++NEBIoudw54ej9Rsg1OzAY4Vfx/PHRCtGnK6jSotZyOHd/XOkU/pIx2b3a6AikSkzkz7CYRGpt3MFhs7c4weStkhf9tEwVVlvfUEBoaqWIVVHn2RUG1g1czS4lTdTTQunnaa2SLezbJHJwBf5e6Hnb9cLRV+HjxlnlEFJI7yldjoZu+FdkUXzWEjdx9afKdVlQv0G0QaJhYBuVCO0hBB6HMTqZs1NeEHVEYDsSmqgHFytxJaIqhbCNDJug/nzaX2FzPVfsZpvcCMp2DFGRoBqfMBKbjntjQs/U6ybQjMcrJW2oJNxBS06YGVJz79FgT/dLQs/zmILmSRyu+4JY6mndPbBMtPEvsCK2zET4iMqzB9P X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6029001)(7916002)(39840400002)(39410400002)(39450400003)(39860400002)(39850400002)(199003)(189002)(54906002)(8676002)(36756003)(6916009)(68736007)(38730400002)(6666003)(6486002)(97736004)(53936002)(50986999)(110136004)(66066001)(76176999)(101416001)(5003940100001)(50466002)(81166006)(50226002)(92566002)(81156014)(6116002)(106356001)(53416004)(42186005)(33646002)(48376002)(189998001)(305945005)(2950100002)(7736002)(5660300001)(105586002)(4326007)(2351001)(2906002)(86362001)(3846002)(25786008)(47776003)(389900003)(213903007)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR12MB1236; H:leduran-Precision-WorkStation-T5400.amd.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN6PR12MB1236; 23:T0ZI8NEltZioEiU3FaSp5EfBBI8yImxZt8vbSMRUN?= =?us-ascii?Q?k4y9TbYBvkTxLWxzINE0s3OjVNJjQj2BNo4LBeIiK3G1rkkAsFzAMWT5CxK6?= =?us-ascii?Q?mPdjz8zP26pr7hv4Xap+7sayqhQTQh+gzyTbsK6WUWBs+ePHoK31sV5Nikmv?= =?us-ascii?Q?JcFNGAladTAVXpMN91+PxGUf+F5FAG1s5LtnA1uAKje1509j+cBRTCqIhmWF?= =?us-ascii?Q?zQ4M3IXvtRoruoO0MXpVmoEp4vsiRBYdS6EK3DEacW1wAtRXid7PXs+Per9P?= =?us-ascii?Q?d2Ir6gjK9NHEE8xy2w9f0Hh59RhLTt+cVZpzrrdJ3U/p1rH8nZyEsekJpSd0?= =?us-ascii?Q?Cw7Ho/e94jKuv1QfSIHXVMhZOs7n+v8mG0mr9LJlSwOMm9TQsKF768PNBs98?= =?us-ascii?Q?qRdTFCuIiqoVUpKeDKlHRVcQiYbJkofbg4sInjTVbYVbB8lS7BoJqZf19/OI?= =?us-ascii?Q?sZGNpJMRHKbrMmH5EZ3BbgJan59Na1TUpJL1JOngdEN2ecp/DmIgDdc1T2GG?= =?us-ascii?Q?IWEwm6e/YqjL893M3rXoY1TzhhOlo+GEtg443L94jSa8twPHNjXukArZb9+e?= =?us-ascii?Q?ReFm2gBMCqnNmFeSD9txrsGLGRRSayvrVecHRSZi+xBwikv4tGrd9d4PJfTz?= =?us-ascii?Q?sIoBEpTkp20qa/QzQdrSAePR7wYb2pAK9Vgll/8HCN+nRPM6DK86EpNXBsjp?= =?us-ascii?Q?AIhS6yzQxUQanX2u1cx1ZBVGLSGzdf76ZC6V0N6pqCvLF7a4+bB2rCDIhoR7?= =?us-ascii?Q?p/5IT89K2E/BvHS6YmxCCYvJxG2+zdCXO2KP83KI4HqZXm/HlHeP3GqWYXPq?= =?us-ascii?Q?K6/ieS6AG90rN/GiEnjkH2IyTqyBWERc6Oi9aZvKj/PHesIxTt2xyihTMHoF?= =?us-ascii?Q?LkvHUaB68Ep9Lo7K/bgK6urwrzSAlCspLTX3lbuBFQG50DdhDeBVeaM7pqdw?= =?us-ascii?Q?7wutMjxk+qUn4iOFjLFhhHC9jaqigTSfJVK4ri/H7BHkjKJqAEoCZQ2FMZMX?= =?us-ascii?Q?nfd6pKl8H8qh48v94QFUNp+psdh7kNu8GJLlqAGIVhiF4Q1EDAOE3/TcUwEk?= =?us-ascii?Q?VDX9cjcyYLlfwBkbK/H4ZhjD6apOL0JmmiUHZzWjbxzbpxQSv14tn5Xm4Zkd?= =?us-ascii?Q?Zyk18xukEAy/PhvIwu4nQtCf45G6kJi3h224e96Gs3N1vgjP2TB6lgD/PYkx?= =?us-ascii?Q?XFeZ+kk7moo4JFpEIFpf/M9yG0ag2FA0mVhvD6MVjHvVs59IR6CsYDLbA2tY?= =?us-ascii?Q?xZLA4vYshwkug6sIbFjmYY6qXCJaCECb4m+p04OlelhWsod0wkeLQErNSB01?= =?us-ascii?Q?/Gg1K8TWZS/94CExaI7oO4=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 6:xGBkRLAuZty0/YWA0AEKZseHoNzYoABv6uEysYx6mBkUSECdTcjaBdc3j8Xc1EZBEPVDnNPmLdrghB4vBnIEeWLoHk2NGdtXFh/acTcxMxzDUfvdMbdNGYvkN6TS2QGv7Wem0RbQuKisQZFEuLiIM/jq50qdeDVH/fo7L8OnGpgrEG3/CUsKkRYJEyeJVaW48xpDd8KD2/b+AmBSjlyBg5ow46BVjSMCTaCoCeEgYA2UGJTLHEUV1eG7QTzm1qnpm7TxBE/Dvj0pKvizRBtEmWCCbr/LeExhMUqGKbrCQseUKq6gR1o2ddVaXfkZMitS5KPgtSsj7elTtgpHqpPDxTWR/R/O3TOKYarY4zeSF2TZZvORtKxo6RH46teivbwwYpe4oMbxTxzNAG+Bj+yNrw==; 5:UgbhMS1KU42UBL6p0yhINjszJRLXfYxDbPViIMB5qfEJyoO/joEQdzcXaStPRzrCz6/cNf7qoz14MlYQC6iyZ0s3ZLkEQNRmqawjlOjCuGqxE9Ai8D0oxdr/T7TFXmBPcRSHwWKRohp2YftIYZ/sTWJzqthKcSUuCA+9RhBpL3I=; 24:3wLatRnV2v425nWGkDA+VXrWNnrXq+8eyTy+e/cPyezF9Dqngr61QTkdoVZXkWzO9EnaooDcRWVAonAVDxTfhCYvb4txiHfmRZXUTA7Xwug= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR12MB1236; 7:VcXLYGu8OaSXQigJAQOWJ+HrAIa+aMM6+BZzVzJtsdaPaiegrsJXRFXIvMikHuNon0wT1w9ZCshXI9qVluhcVLwdmmOmYe8BS+zXSGgECpKFQ4CegMIK5WS83Fb9Dj+D3uY1yfxMcFKuF6EbAqQSt/jQH/pfLYCQK98c4YWmkFFasp7C+xa+JYsw6WwbxC9IMiufZqi1oH70DS9Mhtw2MG7sbhieuOwVJQ7koIFCZKJHbNjDxlnSYQnjCc+hHDastx5mR/69AzFIV+dYiAcY3hiEUxdX2maxb9U2QkCCmaTSi+QXAHkqsPxGCE6I+J27bzsBR9HpGrHoAPYX8vBdSA==; 20:FTaGt64T4t2aCz92x/YKZDtb8oWAZ6yCfBSh4uy7imoemMGJRmqOJjWtOcSVPdcBJUEPVgJfmvwqPouET7Iteqkr0hdNV359t1Q+tlR89nWYjT8c0t6ZFA8NnXp074ijnWZn5PfpDn0laQD+QW1/+TUqUz2q4uU+8vmDxqBLucaYum6HeyVqJFAubHJC+DxstPm8iSz0HhGRREQJLAhRuzCBCKvrStTc16bpLAmOWYIV/i7NVtPt0UA7pfDAeWaN X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 21:02:29.8326 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1236 Subject: [edk2] [PATCH v3 4/4] MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe: Add support for PCD PcdPteMemoryEncryptionAddressOrMask X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Feng Tian , Brijesh Singh , Leo Duran , Laszlo Ersek , Jeff Fan , Star Zeng Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This PCD holds the address mask for page table entries when memory encryption is enabled on AMD processors supporting the Secure Encrypted Virtualization (SEV) feature. This module updates the under-4GB page tables configured by the S3-Resume code in UefiCpuPkg/Universal/Acpi/S3Resume2Pei. The mask is saved at module start (ScriptExecute.c), and applied when tables are expanded on-demand by page-faults above 4GB's (SetIdtEntry.c). CC: Jeff Fan Cc: Feng Tian Cc: Star Zeng Cc: Laszlo Ersek Cc: Brijesh Singh Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leo Duran --- .../Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf | 2 ++ .../Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c | 7 +++++++ .../Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.h | 2 ++ .../Acpi/BootScriptExecutorDxe/X64/SetIdtEntry.c | 16 +++++++++++-= ---- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptEx= ecutorDxe.inf b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScrip= tExecutorDxe.inf index 7cd38cf..29af7f5 100644 --- a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorD= xe.inf +++ b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorD= xe.inf @@ -5,6 +5,7 @@ # depends on any PEI or DXE service. # # Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2017, AMD Incorporated. All rights reserved.
# # This program and the accompanying materials are # licensed and made available under the terms and conditions of the BSD Li= cense @@ -85,6 +86,7 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable ## SOMETIM= ES_CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdMemoryProfilePropertyMask ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ##= CONSUMES =20 [Depex] gEfiLockBoxProtocolGuid diff --git a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecut= e.c b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c index f67fbca..5146b33 100644 --- a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c +++ b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.c @@ -5,6 +5,7 @@ in the entry point. The functionality is to interpret and restore the S3= boot script =20 Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License @@ -23,6 +24,7 @@ EFI_GUID mBootScriptExecutorImageGuid =3D { }; =20 BOOLEAN mPage1GSupport =3D FALSE; +UINT64 mPteMemoryEncryptionAddressOrMask =3D 0; =20 /** Entry function of Boot script exector. This function will be executed in @@ -440,6 +442,11 @@ BootScriptExecutorEntryPoint ( } } =20 + // + // Save OrMask to fix-up Address field in page-fault handler + // + mPteMemoryEncryptionAddressOrMask =3D PcdGet64 (PcdPteMemoryEncrypti= onAddressOrMask); + BufferSize =3D sizeof (BOOT_SCRIPT_EXECUTOR_VARIABLE); =20 BootScriptExecutorBuffer =3D 0xFFFFFFFF; diff --git a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecut= e.h b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.h index 772347a..cb88549 100644 --- a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.h +++ b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/ScriptExecute.h @@ -5,6 +5,7 @@ in the entry point. The functionality is to interpret and restore the S3= boot script=20 =20 Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License @@ -87,5 +88,6 @@ SetIdtEntry ( extern UINT32 AsmFixAddress16; extern UINT32 AsmJmpAddr32; extern BOOLEAN mPage1GSupport; +extern UINT64 mPteMemoryEncryptionAddressOrMask; =20 #endif //_BOOT_SCRIPT_EXECUTOR_H_ diff --git a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/X64/SetIdtEn= try.c b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/X64/SetIdtEntry.c index 6674560..37724f0 100644 --- a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/X64/SetIdtEntry.c +++ b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/X64/SetIdtEntry.c @@ -4,6 +4,8 @@ Set a IDT entry for interrupt vector 3 for debug purpose for x64 platform =20 Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.
+Copyright (c) 2017, AMD Incorporated. All rights reserved.
+ =20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License @@ -25,6 +27,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHE= R EXPRESS OR IMPLIED. #define IA32_PG_RW BIT1 #define IA32_PG_PS BIT7 =20 +#define PAGING_4K_ADDRESS_MASK_64 0x000FFFFFFFFFF000ull +#define PAGING_2M_ADDRESS_MASK_64 0x000FFFFFFFE00000ull +#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull + UINT64 mPhyMask; VOID *mOriginalHandler; UINTN mPageFaultBuffer; @@ -207,7 +213,7 @@ AcquirePage ( // // Link & Record the current uplink. // - *Uplink =3D Address | IA32_PG_P | IA32_PG_RW; + *Uplink =3D Address | (mPteMemoryEncryptionAddressOrMask & PAGING_4K_ADD= RESS_MASK_64) | IA32_PG_P | IA32_PG_RW; mPageFaultUplink[mPageFaultIndex] =3D Uplink; =20 mPageFaultIndex =3D (mPageFaultIndex + 1) % EXTRA_PAGE_TABLE_PAGES; @@ -245,19 +251,19 @@ PageFaultHandler ( if ((PageTable[PTIndex] & IA32_PG_P) =3D=3D 0) { AcquirePage (&PageTable[PTIndex]); } - PageTable =3D (UINT64*)(UINTN)(PageTable[PTIndex] & mPhyMask); + PageTable =3D (UINT64*)(UINTN)((PageTable[PTIndex] & ~(mPteMemoryEncrypt= ionAddressOrMask & PAGING_4K_ADDRESS_MASK_64)) & mPhyMask); PTIndex =3D BitFieldRead64 (PFAddress, 30, 38); // PDPTE if (mPage1GSupport) { - PageTable[PTIndex] =3D (PFAddress & ~((1ull << 30) - 1)) | IA32_PG_P |= IA32_PG_RW | IA32_PG_PS; + PageTable[PTIndex] =3D ((PFAddress | (mPteMemoryEncryptionAddressOrMas= k & PAGING_1G_ADDRESS_MASK_64)) & ~((1ull << 30) - 1)) | IA32_PG_P | IA32_P= G_RW | IA32_PG_PS; } else { if ((PageTable[PTIndex] & IA32_PG_P) =3D=3D 0) { AcquirePage (&PageTable[PTIndex]); } - PageTable =3D (UINT64*)(UINTN)(PageTable[PTIndex] & mPhyMask); + PageTable =3D (UINT64*)(UINTN)((PageTable[PTIndex] & ~(mPteMemoryEncry= ptionAddressOrMask & PAGING_4K_ADDRESS_MASK_64)) & mPhyMask); PTIndex =3D BitFieldRead64 (PFAddress, 21, 29); // PD - PageTable[PTIndex] =3D (PFAddress & ~((1ull << 21) - 1)) | IA32_PG_P |= IA32_PG_RW | IA32_PG_PS; + PageTable[PTIndex] =3D ((PFAddress | (mPteMemoryEncryptionAddressOrMas= k & PAGING_2M_ADDRESS_MASK_64)) & ~((1ull << 21) - 1)) | IA32_PG_P | IA32_P= G_RW | IA32_PG_PS; } =20 return TRUE; --=20 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel