From patchwork Thu Feb 16 15:45:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 9577591 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 19E4960244 for ; Thu, 16 Feb 2017 15:50:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0C1702861D for ; Thu, 16 Feb 2017 15:50:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 00AD328621; Thu, 16 Feb 2017 15:50:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 639E82861F for ; Thu, 16 Feb 2017 15:50:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932738AbdBPPp5 (ORCPT ); Thu, 16 Feb 2017 10:45:57 -0500 Received: from mail-sn1nam02on0080.outbound.protection.outlook.com ([104.47.36.80]:27581 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932454AbdBPPpv (ORCPT ); Thu, 16 Feb 2017 10:45:51 -0500 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=QpDdg/Sn4t01KDGCU8OFH/ShgnWhLCvIDn6O8QDRg7Q=; b=Cy0x6pTdnmUFOcfcAMcwGXhNNv5MBW+whXv/Oze3NN/FYCrbwSas8dbZZpLSs/KPQcgHks2qYp6c6YMlz27WzHU4C7xzng027d4UhP7jCMrfZ9MqnFv++/qjD7JoMy2HYys+Ug+B96dFdu3KjuYgR/AuioBvF+VDb/6R7sYllHo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by DM5PR12MB1145.namprd12.prod.outlook.com (10.168.236.140) 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 15:45:39 +0000 From: Tom Lendacky Subject: [RFC PATCH v4 16/28] x86: Add support for changing memory encryption attribute To: , , , , , , , , CC: Rik van Riel , Radim =?utf-8?b?S3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , Konrad Rzeszutek Wilk , Paolo Bonzini , Brijesh Singh , Ingo Molnar , Alexander Potapenko , Andy Lutomirski , "H. Peter Anvin" , Borislav Petkov , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov Date: Thu, 16 Feb 2017 09:45:35 -0600 Message-ID: <20170216154535.19244.6294.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR21CA0002.namprd21.prod.outlook.com (10.173.47.12) To DM5PR12MB1145.namprd12.prod.outlook.com (10.168.236.140) X-MS-Office365-Filtering-Correlation-Id: 5e3f51ad-58f5-4828-53d0-08d45682dd3d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:DM5PR12MB1145; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1145; 3:fQPa3DPiiuG6sJGLRxR9Ng6PoFfyTnLEJJiatRIP1UmX5LqF3CC2StnHw6Qv1V0sUK7A4WaJz/PJKnxn0nqBrwC1cxqsn5DuHJ9YT4KspciH8A42UFS7wJ+zLrLU6AS6hLa0xTDGjJAmw15of4uYZLZ6Zt9CkQ9zkg+MvhNTaUSmCBQRp6eEoGVhPKseYhNaIuDIX9eAMW++vbwCusBsyv49mCG0zLrFaI4kBig0Eq2BHnI2h9NISbkVH3XJe1/pke5inVBhow16Jp8dXS0NGIXqnwVl11HV4AQoBG3Qglc=; 25:BWDfzmpGbhnkwswdbj2P73NJzpcn6rGxGNT+etVqOXXiffmMZ8wjWJa9LGbhmh9ACgjenvtHfklTr3uRFate4nrFs9705HFXHgNSiWz796ene6b8BF8u1DCjyey5szQsLe/VBUDfOIPuGMUS6tZFcB763O3p01nSeTD3/H7y9C33hF2p3GTIN9UJZtXKS6hLTwYCBrV7fcu8lxkp6kFaY+aa4376bgn7Y1zPXEKfbmvd2Tzbww2ZSewB+KA1pb/Y3SnkXKOENfG6lZcMPwkwZZd2Hu8ZN3eJNL5W5hBfIJCJkSJ9c7G94dJMzLdPvA/K2xccowDS5JXh/gxJVvocgBK0f+oTdWekPHOnQ7w4S5xoglOzQ9R3CkWlsP6l2dBFs0WS009+dLl/8rQROAzfux4k8764qgtrGmIScjkfSSIzfQxHYuW7BUb4ywEl2w25v+BhbWJXl5tV1uXDf177Xw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1145; 31:vVEvjHAEmZPxhqe0wB6Cldmd95eqxQA0PjbyN5LiSKYm5JIs9qjvxT1rRNC/EX9VFnd3bbDnz0zvlwrk1bT5yoCJfHdil2k1V+JZWpTtNk70fua213Wb8Cs55JIVCg++R/VQiwd/DvnYsw3N1rYuJHKwqwG3AtYy7qQAICME2lDUqLgJWHmSyXIcWoBZ2b/Gz/sUMbt3vUGguO+VL537D+Vjbp1VqRCd7P1L0LiIIovo5E6wx1jBmR/sdG74p7l7; 20:JBswDWUPoeF7iTn2AihSjXckk7kviK8oMoN6hpUr3OsT9YZaMauD1F28LK9b1xAXXTB9tUuEz9oS6NUiGXTRxDzEVs6K7TWY7p8JSYQYLx0k2f27DjPPOgqh6fpd1UmpET1cSdACEUD9acCErNrozpYvkMm2eER9Cm5j5+EdmNLLs5Lzts4lSQIVpbpJQ0yvj3LC/e5e8JXo8mtCzqvwdoWOYcDOssrt4jy0mRktcRw+ymKncsS7cYLmHgIjmUkylyfNG00KEhZ9ng5bSGraIU3OekY3TLAOT9w0MOX/8QC1s5UqmDxVpWntbnMKQH6TMqTPoa1Sj5Wx8n788jOG9nkkfhbyGjmoJSUi2e5uLkG+h36Dfrq4QfhyATNOt1rzHoglVMev4Jp4jy5RwbRlyP2BPvgE3Obkksi5UOvbnDiItHJNIRfA7rP6PmW/7JBx7LzmXU/b7bOhnd23sSTUkrKOuKuv0TQsNZ9Cjq7TuuktgAry+mD7XQv9vE7nkZPS X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123558025)(20161123564025)(20161123560025)(20161123555025)(6072148); SRVR:DM5PR12MB1145; BCL:0; PCL:0; RULEID:; SRVR:DM5PR12MB1145; X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1145; 4:Gg7v95hUMRLI+x2qXaVB5fMRf35XJ5KRcPJdHnA+E5ChHlDBoDiuZHY9u9DsNpkGAlo2HyuNJGKfGwS7gGa/aYYq4HwIRvIZtS3dZ8ROohzHD31bcc2F5nbjvGPbTptqqtMmkGfGgJjMok6fmy9VBkgCGXY/lhGq/6p+WbP9b3lqw0iAPCZSndw/x/+duC403qUt6zYwUz+nv46ELN3gBfsRrW2do+1+4Pe7+VKP9hRKkOX0JmGN7+TaLWOhlx9LdPbjmXmve/TZxaRyQ3/Rzhh1CjqSX8gHuINXcz2Rg3TBMT47qtpGrkMd9nyxTZYakrDlDH4V5ircGp5OSeWVBwyCh5X+OZcA4hnevvU99W8qI0TeQ76Co+rmTiNvyqKhWyG75JKDscdrwXgolzDumdEndJsw9r1vRXkmL0xe9RlZzvNdDdDwdmN4ixb2h+uBgkYJPwWbjSShUgJQrHb7OcMIAvQxEu08cxgMPt85717aZK77ADnVOk6n4V5wnQgLugN7OfPtxraSa+mfmOYiLwTehfWMWHpyQ80F9TN9HSYrXRW5PM8xWcC6wTGXTwpWcv1LvRoHoyH5aTZOprIgWGX1L94BLIgW+pVNMLFg0/0EoHrSEOLSyX2axoMdxZbgWF3hwFfwGwtw6rcE02lp80/ElNlKmsWAATkwI4vL5qE= X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39860400002)(39840400002)(39850400002)(39410400002)(39450400003)(189002)(199003)(5660300001)(6666003)(230700001)(2950100002)(103116003)(305945005)(68736007)(38730400002)(53936002)(50466002)(23676002)(25786008)(6506006)(55016002)(9686003)(54906002)(389900003)(69596002)(7416002)(33646002)(1076002)(4326007)(6116002)(83506001)(92566002)(105586002)(3846002)(8676002)(97746001)(81166006)(2906002)(106356001)(81156014)(7736002)(53416004)(4001350100001)(97736004)(86362001)(76176999)(2201001)(54356999)(101416001)(50986999)(42186005)(47776003)(189998001)(66066001)(71626007)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR12MB1145; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxMTQ1OzIzOlMwNnB5b1NKTVkzVURoenE2SFlCVWZCbW13?= =?utf-8?B?RC9TYVJpSEJaSDliRml0SXF2SzVSaGVVeGxJbzFCamk0T094RzYxN0NWYTBp?= =?utf-8?B?bW9SRXlqVWhRRGRROERMYjhTc0ZMdE5PdGk5ajZIOWNKWmNlOUQ1dFk1aUZD?= =?utf-8?B?NVNXc2RwOEhLNVVkMk9GQm1zOHFTYzlCTXNpR1ZRU3lERTFBV0FFb3hjV1F4?= =?utf-8?B?dFJ6TXVPRVlTdnoyVjBuTXpxVDVyTVBRVGNFRngyZ1FVanZENGRreUQrT2ll?= =?utf-8?B?M1llK21KYytwS3pxMzFiS2pjdzc3TS9wN3Rkd05xU2ZWdDFLbEdNdVhpYy9p?= =?utf-8?B?TDdnNWlaRks2T1pjWlBWSk1aN3h3UHlyczlBdkdqRFgya05jcW82eHNaYm50?= =?utf-8?B?eklOeE5ubi9LMHlJU09SK2orMjBuYjFleTRhcHlKZDlERUF5R3o4enRRazFj?= =?utf-8?B?RkxFMXNQRHIxN1VvWHZvKzlBK0l3Q0RrVGdnWnhlRGtnRTB1NzIyL01TbjV3?= =?utf-8?B?QzhmVjZVZ1RNUTBNeDhIRG9kb0haR2hVam8vbTAzQ2JFL0ZCL3dQMnVSZDZF?= =?utf-8?B?SUVvTGtQbEFSV1JxMFNYQThiL00vNmpMa21USVlmZGNjb3FLVlpGNXpzdUJm?= =?utf-8?B?WmdFaG40N2VLQmhYT0lHdy9tdXFVNXJ2bXpad0VOcTVMZ1poMWF1cFg1S2xy?= =?utf-8?B?M1BJUmhkMzFTRHpvUEZVazRvU2I5WnV3aWNzN21TSGxSckFIRDlNSkJRNyta?= =?utf-8?B?VUxMcUhZVHdOd0tDYWxWbnllMjdicG9zV0dSU3hJSXVCbVQwYzhaVnVldFR3?= =?utf-8?B?OGRTbGdCOXVKR3c1ZGUzbzlDSGNDTldHVlJuOXFHRmtLQUxSV0tIbTBHOEo3?= =?utf-8?B?bWxWRklqSktrZ2RGajIzZkVIMjNGZmtGejMvZE1mcndxRXp6MTFsQ2NMeGJs?= =?utf-8?B?d1pnZkZmc2VkREMvTHZJZVNLMGlaVjhYQk4vOTczSlFIMFJiWEdQYWZHd1NQ?= =?utf-8?B?OEF0azlIaHRjbGFkakx2ZXFVV2NWZ1ltcVlnSStpVnQvdENHYWl5enMxenpi?= =?utf-8?B?ZHN2NEErTWVDd085Y3ZuNXpWQUVEeWJ0alVlUk1FdTMyb2VLNVY3Mm9HczAv?= =?utf-8?B?dWhCRStteGQvNk9JLzRObVhYL25BSFBWN1FzbFd3WWU3NE5MdEZ5VjRPNDdo?= =?utf-8?B?cUV3aEsrbU9Pa2tGZklZbWpHR0xvOUlQOGZOTlk0QWViMC9VdWRWS3N0WURG?= =?utf-8?B?dDMrQ2RjbC95MlVqNDF2Um9tZE5ISEhhcE1MN0g5UC9RdmVaekdZcHQ0UUpT?= =?utf-8?B?V28xN0I3cm5ab1ZUZTcvQnQ5cWdRc2M1RG10WGQweGJSZ0c3RjB6b1JRYlhH?= =?utf-8?B?dXJPak5xMlVHczZ5YmN5dWx1dkU4UTdnN3dKUDZWNndib2Q5Y2MyTGIwZHNN?= =?utf-8?B?RmgvdnZxTWs0K1JjUjJuTUhnMkRUYjdYMld4Q0x1U0ZBc085a2dXbGE0ZWw3?= =?utf-8?B?ZFUwS0M0NmNwY2I0amhGbVNWR0IyWGdsMldncnNrMlNrQXFXSlF5VFpGd3Ja?= =?utf-8?B?cWFna0J0b2ZxNHRtRjlNaGdoVzlwTlZrcUxHd0NlSlRyc2pKaG91elp1a0gz?= =?utf-8?B?WVo1ZVRhR1VPaUQwcU5pVXZ0T1FSQUw2MzZtNlN6T3Z1VDJ2VXhyNGRiTWN5?= =?utf-8?B?QlE1S2tQWjdmaTI1TStWb3RDSFMrNEJLMlg5YjhmZUd0L08xc3Z2dFhsSXdp?= =?utf-8?B?bkRDL2pzd09KZ3dqSHA0UldSalRSbmlGRmwxbWhNTUVzS1ladStIOWZoTWo5?= =?utf-8?B?UWZZRjM3RGlUSEtobEJKSGVVTktMUlBob3F2U1ZMaCtObE0rUjNwKzRFVk41?= =?utf-8?B?dzNuc05IdnFDRnFHVXJWSytiNFZvK0t2cXVSVGUrS0ZkZXhjdlh3MXpLMDdK?= =?utf-8?B?ZnJGUHdkUnh3PT0=?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1145; 6:gayAUvbYM1kcXFLZIJBC8q/o3/zVvYlWbyku2nOYvDcK1kBixMw18mLWB+o5beqqKvAvix8W79cnflsqvhE2jhSCw1ky70CRFflgKJvoyqWnLOGr8nFQs+r2il5IOLq8Qy6KemEGaENVP386DR7mnXaL8SSFxOBUOHer1ykPS5So/fJ8nKtIn3jh4y8X447kj83Ac4ief/P85EHh4uFHYbWEzDVjDYWguh6HGQtyCyMPiHaH+KoOdCt0RWgLoZ/FgLO1do0rgc1PlgNShY+fKCnweowTpiVAR32QJCTpodWk0h3EAoO+Ady0N6UHj0+ctIQXVPsUScSSpW0ihLStlmKb/t/s54fC4hAJPtXzCgaLtrbRRizYobKteOMJdcuDV5ArsYz95xfYNzt83pzvONclau6GhfF8ysfBHo18jNQ=; 5:6HGcjrpQ1esBwvlojGx7x3JJ8TY1nt1s42ML+ZK5o5qzkWa5jXDzA91siiSrG5uH0z5J7rVXktb7cdXnBkE8GMeNV8XfZU11uREfT9MwzyNcKoWpURlnbCaaaU8F984MH5i76L0AuJPWVjUtcn7BxQ==; 24:m5rrdJH1PphaQ7aebI92irjVwa57hnvMHis2sbReEL1KTFr00G3WeRnWxxzC70Rn8NjeZpwjkl3OssViXcHd7P3I+GaMPk8Jp3HFLxheRug= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR12MB1145; 7:J3Yi1o0us/dXIRPN2g9H9Gy4FZeEO93tpNFtEMcuCo+dMn7Ga/40RTkbiAh4d1DzTIBsScHCdqFZJFeFYdd6zovXTBQs1UG0iNdLZvW63yUBFYRRdymSdtqcPFpxVOdC17xngMMvyGunzgiHf1CoRbaw+mPFcHQZIzuGwbgvdw9vU+z70Y0JqQ0GBCCfoYsXxwIG5swhRpLPm4oRqQn6TU75j4pwoPQ71NaQcLvWnYbcCrPe9Ijvp33wa11eZjee7RjzAI5zoXw2lbR103QlurnMTHd3cklSBP0jr7FA0p19mPVs5B2e6FFQH1wRK2Cd7mA8DBW/Las+J+WbC8eP5g==; 20:2fRGjLEX0vb0KRSPNTn7ie516HBRmJpMOTxhOMN8Z4p7Jon56PSBj7Kca8zLm96rxVRFdRnGZFu0L4KKPFdXtl9wYgJGzmFtFA4OYCHUQjQ9AKSYiFvEh9y0uOHXsSr58CYDml0/ybwHL+CrGwIbnJC4yJSWnZRdRgyb0KcrTUTl70NDnKvLsgCqLxLM/aXMD8DlV5T6eCSogaBnzo2HSliZVsL2X06gesNSXgelqkdXt0MxwxEZhNQrzui86N5a X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 15:45:39.4799 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1145 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add support for changing the memory encryption attribute for one or more memory pages. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/cacheflush.h | 3 ++ arch/x86/mm/pageattr.c | 66 +++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/arch/x86/include/asm/cacheflush.h b/arch/x86/include/asm/cacheflush.h index 872877d..33ae60a 100644 --- a/arch/x86/include/asm/cacheflush.h +++ b/arch/x86/include/asm/cacheflush.h @@ -12,6 +12,7 @@ * Executability : eXeutable, NoteXecutable * Read/Write : ReadOnly, ReadWrite * Presence : NotPresent + * Encryption : Encrypted, Decrypted * * Within a category, the attributes are mutually exclusive. * @@ -47,6 +48,8 @@ int set_memory_rw(unsigned long addr, int numpages); int set_memory_np(unsigned long addr, int numpages); int set_memory_4k(unsigned long addr, int numpages); +int set_memory_encrypted(unsigned long addr, int numpages); +int set_memory_decrypted(unsigned long addr, int numpages); int set_memory_array_uc(unsigned long *addr, int addrinarray); int set_memory_array_wc(unsigned long *addr, int addrinarray); diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 91c5c63..9710f5c 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c @@ -1742,6 +1742,72 @@ int set_memory_4k(unsigned long addr, int numpages) __pgprot(0), 1, 0, NULL); } +static int __set_memory_enc_dec(unsigned long addr, int numpages, bool enc) +{ + struct cpa_data cpa; + unsigned long start; + int ret; + + /* Nothing to do if the _PAGE_ENC attribute is zero */ + if (_PAGE_ENC == 0) + return 0; + + /* Save original start address since it will be modified */ + start = addr; + + memset(&cpa, 0, sizeof(cpa)); + cpa.vaddr = &addr; + cpa.numpages = numpages; + cpa.mask_set = enc ? __pgprot(_PAGE_ENC) : __pgprot(0); + cpa.mask_clr = enc ? __pgprot(0) : __pgprot(_PAGE_ENC); + cpa.pgd = init_mm.pgd; + + /* Should not be working on unaligned addresses */ + if (WARN_ONCE(*cpa.vaddr & ~PAGE_MASK, + "misaligned address: %#lx\n", *cpa.vaddr)) + *cpa.vaddr &= PAGE_MASK; + + /* Must avoid aliasing mappings in the highmem code */ + kmap_flush_unused(); + vm_unmap_aliases(); + + /* + * Before changing the encryption attribute, we need to flush caches. + */ + if (static_cpu_has(X86_FEATURE_CLFLUSH)) + cpa_flush_range(start, numpages, 1); + else + cpa_flush_all(1); + + ret = __change_page_attr_set_clr(&cpa, 1); + + /* + * After changing the encryption attribute, we need to flush TLBs + * again in case any speculative TLB caching occurred (but no need + * to flush caches again). We could just use cpa_flush_all(), but + * in case TLB flushing gets optimized in the cpa_flush_range() + * path use the same logic as above. + */ + if (static_cpu_has(X86_FEATURE_CLFLUSH)) + cpa_flush_range(start, numpages, 0); + else + cpa_flush_all(0); + + return ret; +} + +int set_memory_encrypted(unsigned long addr, int numpages) +{ + return __set_memory_enc_dec(addr, numpages, true); +} +EXPORT_SYMBOL(set_memory_encrypted); + +int set_memory_decrypted(unsigned long addr, int numpages) +{ + return __set_memory_enc_dec(addr, numpages, false); +} +EXPORT_SYMBOL(set_memory_decrypted); + int set_pages_uc(struct page *page, int numpages) { unsigned long addr = (unsigned long)page_address(page);