From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753525AbdBUO4C (ORCPT ); Tue, 21 Feb 2017 09:56:02 -0500 Received: from mail-dm3nam03on0080.outbound.protection.outlook.com ([104.47.41.80]:25873 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752885AbdBUOzp (ORCPT ); Tue, 21 Feb 2017 09:55:45 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Subject: Re: [RFC PATCH v4 06/28] x86: Add support to enable SME during early boot processing To: Borislav Petkov References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> <20170216154319.19244.7863.stgit@tlendack-t1.amdoffice.net> <20170220125131.cenb2subqjcqf2xr@pd.tnic> CC: , , , , , , , , , Rik van Riel , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , 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" , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov From: Tom Lendacky Message-ID: Date: Tue, 21 Feb 2017 08:55:30 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <20170220125131.cenb2subqjcqf2xr@pd.tnic> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR2201CA0001.namprd22.prod.outlook.com (10.171.208.139) To MWHPR12MB1150.namprd12.prod.outlook.com (10.169.204.14) X-MS-Office365-Filtering-Correlation-Id: 89d932ab-896f-4405-cb70-08d45a69b116 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:MWHPR12MB1150; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;3:e3blZzzuURupKwTbbLQYUlzsRDM10+PxBEUgvU2e7DQ/2V9ExVcXxiNuWX2m5vETF6ZGeGIM+mFf/OjaGFrzcGYvmiNPBneDYsMyWby8j9WJPMBW3jTu9D3S8OqSJZs7ACAkUEOQeQQZZbEsYM0DFZidhuFfiFXDOXyIjo7LUF16l1a70EcV/wCE5amZG0gvEgoB/vlYYjlGz++JGTdHHrHFpduEgrrwVc80QXwBLe6dcK6tUt0BU6Vf63AAbrr9dVCBVjxkyTwHUjMSpSZDOLskaSJ+CwEZTp8tYkBk0RU=;25:QOLOtsFAp/BWsQhixbE5qgiBFNlIV57gGEm8fC/QwUBCyZr5Bgr9bnHPv5GyxdxSrPCc47ADyYAAVMEsCzutp4Hel6F4S6W6tbN/lKpTnOvIq7nxUhc8KRsMZpFZCIey71qiy3MgyO+ZYW2MlnKcAxrIvzYqN9WxgVSGbvQERyXXV2TuCiRo56sxzBrLVLly3Q0F7/7jfLLVV4QjNHAsZdUpkAyg6cUe/c8CAAiayjH3J+x/GRulRImfbe0/K3Mbr0GnZp2PDv5+kVByQECcs0B/8NJQ6tAWLkFSX4MKt9u9/qKB9qqp/1dSFiEGvt5t53fhbnDpGTpr5MQePsebdcfzrvgIcu/5s85g073wJzGm6VHcl5KPcXA1BBATpAUG7cO8G/B4bREkdTZvd8yhdlZo4yWa0Mdj0TLBKIfRYk7PsB64mUdc1iTgwy0nh4RoPP3c2Lh3WBGtwO66U1Cg5w== X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;31:5a4p6QYP+mty3yBnJv79bvqxFqiQClySKGAifXI4yEbM9z82FqlBVfJDR849G9ensQqbh9sgzNk4B2Z9/Ku/w3/5FDYniEbibb9bsmC9FbktUneuiDEjkJc7osEr6Wqr7iSeX86V4o1Vi6X5qljaALpy2IY58+y3D0L4rL1A+ooLXxtS2NURPeGlENj+4mPXlQ+Zrx25/FnbqrnLr/fTaKcIzTIlMr9fOWIkGiDRM6RXeg+J2MoIOSTdoWM5Bfq4;20:Lr4bZYNxk7fpPZwB90v8Zj/teeiWD7C+Epr7Z+sAPMCAF+tbjiETyc8KkhjqwdVCsiNmrYkC6hmIrCeiYEAiepco2Ss7TC6isnfM8FjRVHkQ7uzE5IFEPx679tymRTrhgO3YRGYE7ab403/5FoM1xhnjLP7J7hvFrsVR71aWxbEfQMIizKjaDWqhhM6ysQHXvRgCgIKJYswkFHVsM/oWgzOIKPSaolr3MJSh6wVaBlDCqWR6raIx+3qrZoBTfl6WWiKOswzSo+X64yEXp4NFp0bgVswGJD6pADlhvTIQMM0hpBZyYohydvF9TXVIDt0tkL7OH+jah9lJ1iCthowgn8gfCw2Vom9ZdL7oFVPOREjE3xlGvR0//P2uO5KGFRtt1ZHN/CDKS/lN+Fg1aIwBGLYsk4uooEUIJldWTbJoBML4qOBeXB54hGi0wIS6/M3W4rNfvUNbqnvbpNmnKVDZim6i4irIwybXNLnM1E6g8A9MZLzkSXAaXekTid0egme3 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)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123562025)(20161123555025)(20161123564025)(20161123558025)(6072148);SRVR:MWHPR12MB1150;BCL:0;PCL:0;RULEID:;SRVR:MWHPR12MB1150; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;4:VxfKAJ5qn8hPRoV9K0h/K03cDzH3/4h0xm1cAKgHfTILHnyEcTVFGIciiuR8ZhTGz/FEqkY5C0Zq5s2vUsUyUqkaHLHS4QS4OUIm4/9uHZg3rQTIsgbLUHbxMO2Oynv1SzAN+q3yMTjB05w01SGAr+tzeDd9EtugG9DkCaRLEVF3kUCa6lOdgSxSUm01NfZY94g3IZOLsrwfFmCdBtY0Ivu3ZRSvaaLISEBhDq9kEII3a4hxk8HKhV3pG24g9tq+nRUq1CrKuWv5K9+KykTO9aVxanIc/vQq6D+BJe5KMxdQatXcM/BLVWMun7dLirtiJVjTIidFKU6PLd1eeIpEtVr5OHCIEuwtzbKDz8zQESaiU4zw2vO/JSBvki/Pe2E8st8AQZSSoK0yfls2L+tec12O3Zw1jNii4T9C0Gm3NolYYrQvBBoG3+7gC93JiZ9iBR7Mq40cChoRVW3eeF0ItXAaPOyHaXFDuN2YBRhpPyvLSWIlCwHSFY+1PRnBjcSw3n+1/tde/oueVt6eIQ95slJPAw6aI7CJpN//s7tpX8E8lfYUzpg91GZYuKTBAkb4Qo3jmGfPe+uPqV0vBIwOuvcmr5JF0WItAeO/TZnFrUvx82Kv8uVx0iuVSlDWW71TRkitx2ewP+CZACPITStr7ZaCJwsPjWyZj096B66KI/M= X-Forefront-PRVS: 0225B0D5BC X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(7916002)(39410400002)(39450400003)(39850400002)(39840400002)(39860400002)(189002)(199003)(377454003)(24454002)(54906002)(8676002)(81156014)(81166006)(31696002)(23676002)(25786008)(66066001)(4326007)(65806001)(106356001)(2950100002)(65956001)(5660300001)(54356999)(92566002)(64126003)(47776003)(53936002)(50986999)(101416001)(33646002)(86362001)(305945005)(7416002)(76176999)(6116002)(7736002)(38730400002)(31686004)(110136004)(3846002)(105586002)(229853002)(6916009)(68736007)(6246003)(77096006)(6486002)(97736004)(189998001)(4001350100001)(50466002)(230700001)(2906002)(83506001)(36756003)(65826007)(42186005)(90366009)(53546006)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1150;H:[10.236.64.179];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUwOzIzOmQ3UjNVdllyaTdDdWV2ZkZ4ZlRBRGZuQ0E0?= =?utf-8?B?TjRtUUFDb2x6Wkt2Z01PczMrQ2tqOFNsY0JML005MHQyK1pQci9BSzgyMTNQ?= =?utf-8?B?K0pLVy9nVzhmTjVxSFlRSDlOa2RMQXhuUnpEMXQrQWR5QWtWbTJpVHg5ZUt5?= =?utf-8?B?V2hDSzZIbzJHZTRpQ3k2TWZFZE1TblFoRmxpVjdaNEEwd0RZRVNCUjBlc1BB?= =?utf-8?B?OTU1YkY4U1pIc3A5WjJWNFFpY203c0cxMW1IQUJMM2hTNGVmc3BmRnU3cnA0?= =?utf-8?B?bHhKMktLOXg1dFNQUFlsbVE4SXU5Nlo2UjcxalBFb3RsdC9OSG9WMTROVTN2?= =?utf-8?B?QVg1V2xSL0xJZURFME9tZjh3aitTR1lnYTVaSHFvbWRCalF3SGllTXNvVmN1?= =?utf-8?B?cVBFRE1VdHRuQTZZVitzYTU3UmhHelYra1pTWVZoUXNmNTJVQjlwYWVnM3RE?= =?utf-8?B?WEdjMFZIZ09xaTRmK1ZkalVmTk54aDJVVHNpZzlkbUp1RWF6NDRqdmNxSjdK?= =?utf-8?B?YTBTZDEzclE3aFVQNzVvSTRsdnlVeGtnS2lya3ZIRld3bFFONjEwMFlaVno3?= =?utf-8?B?ZGZ3ZXZrMTZPRXZITksyZUhEb1FXelNWZFBIcUF6YW9iaXFLSnRCRWFFVlpz?= =?utf-8?B?clpjbDVsT2VVTDdnTXNxblprT2doSEV4RXhXYkdaeElPV2F3cWhISWNJZ3hh?= =?utf-8?B?NUdqYWdJOGtWZXNlTDBKczAwMGlOb2pIeXE2OU1VY2kwOEYxUVdCeHFvZzhl?= =?utf-8?B?TDVHVmg0c3R0UmNKNUxoVEkza3BHZlhRRlJSVGtjemJVb005anlwODZqSFg0?= =?utf-8?B?MWxUOFVOZUJRbUNHMlI2L0hjaWxBMDBld2NDRHRXb2prcmEyTkRSVHVKVnVi?= =?utf-8?B?UVhnR3VMMVR3d2F3NlNQaGdCSCtXM0tab0xHM1JSTFRVTElpc3NOV2RFVlM3?= =?utf-8?B?eDN2THFjVDhVVWpJeGxZV0Zvalp5NlNVNEhjdk03RjdHVTBPamZwbzF2SW1u?= =?utf-8?B?Y003OVdFb2VVQlBvd1R2Ymp1QlNETTRmNjdsLzhnc3I3djY3eStiWkp5M3pZ?= =?utf-8?B?NFZURDBkVXBmYThsZzRuZnI1UVFFd21Ld0JFbmpaZ0FjcWdZY0UyQ1dWVUtr?= =?utf-8?B?YW9Idjl5dThrR25ZNE9hSFViTEdrb25NeVlhMHBEV0tJZEZPeEhzV3Z2bFN5?= =?utf-8?B?eXBrQlkrQ0lFbnBWUjZpS2dRSXVVUEFmdW1yRks5NjQyVmdhbVdwa0E4cDFN?= =?utf-8?B?blh1aUszRWViR2hncmR6bEFUM3NLTTR0bkNDdFkrQys0Uno2MHlMTTQ5UElp?= =?utf-8?B?Y3g3ekM2cCtWa1pQQnU0L3ZOQmN3elcyVEkwMHNTcjVsUmQzR0daaHFkWTI4?= =?utf-8?B?Y1pFWXUxODNLS1BPOE5jL21Bclhvc2Jmd1RHRkdxTHZwVitxQVdYWlVqbTk3?= =?utf-8?B?L2trdHhod3lCUDN0dy9ZOVRzSmNSdWkwZUF6aytYU21iSWpSNWJ3RDZYVk9F?= =?utf-8?B?WkZCM2pxQ0o5ZXh4RHpKbFJGNUZQRHFNSHNXbEpsYkFEUU5NK3dYVE90aXRB?= =?utf-8?B?dmFLcjR4L1g5QTJvQ0JNb2pvbTJDRXNWcTN1YUhwYS9yTW42bVFKdVdESUFW?= =?utf-8?B?bjlLNWpuQStZR2lCREw5SVphREx0T3F3Sk83SUp0MTVWMFlXSGxTOGN2WThQ?= =?utf-8?B?cFBqWmdLWHc0VXFwQ29lMkEzcUFnUlUxMlJKOUVLYWkvbkxkZFNXaGRBWXJR?= =?utf-8?B?ZHhmVGxETzFnSzFZR3NyNnFOM2VBbDRhaDFnN1VTVVNXMndGOTJoQ1IzVENS?= =?utf-8?B?SEd5WWhlRG5LK2J5bW10WXI1UTFzTFJneUMzNGpteHRrV0x4amhjSktlRnA4?= =?utf-8?B?OTVKY2pVVGhlZHpudVZabHVGZExaNkt3UVFtVnBYQnY0ajFmenJyR01tSXJ2?= =?utf-8?B?S3Z4b0hiVVp6SThHUDhIcUVoeUI5T2tpUjdOV3duNi81RlhxdmlTODBDYkRI?= =?utf-8?B?aEhTclFVckdya1BJVmVqUGViODhYMGc1VEZDS0d3MTh3R3JtS0FkL1phckhM?= =?utf-8?B?N2N0eGkzckc3UjNxZVE2R204NHRzcjBUQXJRZ3REVDBPNWJtZ2g0ZDZSenIy?= =?utf-8?B?SUE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;6:OV0sWh6KywkUjRXAZQ+lJC40VOIfXH5922nv2wgJMTlEGNRrOSVsMMtUbIN3kXtam6Ei8jpyaX16nJiQ4sO8AjxLS3SJBr9TOL6NzqU4wRsGn7K5jP95lcokVMzqlToNNm43tc1lx9LqFDhLRq8X9e6+J5dWebMVzeqru6tzjTueN1MnPvmAlFlBhG7IWHAKrpm3jCAwoCT134K0HkOrSX8xX4N2tWWW0WOn4HcHdgIpShELydClnBCjVoj+Lnlxonv9eTnuYcyKwCWBHCZRyU+SQNgoeYywf7vec63a3FC/Yct6QTEo7wKgmZs5jMdO1SfIZENWQGjAE7xiPDM0XsKfogKHshQIonvShY325DtI4AAJV4XZ+Tms64tSDD1/dDIjJWdCZv13oXWyvyyRdzIWrwXWQGklwBxEY55cJO4=;5:QER4WcOyU52gfBnEK7vTbf/JwQJtm7TLFziY/P1sL5ul1mX8vJs9xGM0xpAB4fKPQAoZrghUnuyFEe9GEdVMHml+3IpAKlQ47OoPJd0P8J/vtKrUAQxJePtylfpbUfGTz+PyjOS+gyC/JpcwJ1lSfg==;24:cVguNdbll21P1kHzYdyK+dy6uiI/cCcNKDsV+B3AvKE7/FjKt7rtns0zF91dwyXRhF5dl2FePG/RnE2bso6yTSJfpreo1rL39z6JVVB5I2s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;7:jdWE+uiyKPudJAJManklEUrH8AxTJvSajhWgwsiK0Sl75MKjdmqXoeLzUIbHSjDtdy1CtaLKSlroq460dTSrr8rvU5+4JtdJ5cLLQ/A0Bi3rm80LfsyGAhRnXSlWLk291+q5Yr7WuwhxWrv+tLpE00plAj9IPPugQylWJIUXWV9+hyF7OsrxqO9cp+qzwgBVTK0BwHmDq+AGj6MstBgR19IVjUnz51bC0xXHqo/dMmqRT5OQx1QvoBElXkYMJ4dfge75tc4qCuTxudhfkX/A2NUnmLqDFfZ+0oWzEHDwrjxBPBkYJgyg3EOtJ1z1FSKVS/G/R9VRBbKPPb5xEqzivg==;20:cGplj/VWKpWolSau3160/C9F5E5ba6+eDvjQNB4/TVQzvDjowt/kRsYYnLLeV1JbRRuuzvCQf9uY1eUYlHy8JxXN/FR8cHK3dYSfg/eFSsCodGOpq143kD0b8qTkyCl4hU1pQ/FFi7MUOX/ehAsBg8Gduo7PkoT9aoOYManXOnEOky0wbOZ08CskXDoDjJho0g7fcba4QqCR01LrfTQe3TTayZVlpKIWj2OC5/QksMEpP0naOkIhwu+PA0TYpIih X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2017 14:55:33.8615 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1150 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2/20/2017 6:51 AM, Borislav Petkov wrote: > On Thu, Feb 16, 2017 at 09:43:19AM -0600, Tom Lendacky wrote: >> This patch adds support to the early boot code to use Secure Memory >> Encryption (SME). Support is added to update the early pagetables with >> the memory encryption mask and to encrypt the kernel in place. >> >> The routines to set the encryption mask and perform the encryption are >> stub routines for now with full function to be added in a later patch. > > s/full function/functionality/ Ok. > >> A new file, arch/x86/kernel/mem_encrypt_init.c, is introduced to avoid >> adding #ifdefs within arch/x86/kernel/head_64.S and allow >> arch/x86/mm/mem_encrypt.c to be removed from the build if SME is not >> configured. The mem_encrypt_init.c file will contain the necessary #ifdefs >> to allow head_64.S to successfully build and call the SME routines. > > That paragraph is superfluous. I'll remove this, especially since the files will be combined now. > >> Signed-off-by: Tom Lendacky >> --- >> arch/x86/kernel/Makefile | 2 + >> arch/x86/kernel/head_64.S | 46 ++++++++++++++++++++++++++++++++- >> arch/x86/kernel/mem_encrypt_init.c | 50 ++++++++++++++++++++++++++++++++++++ >> 3 files changed, 96 insertions(+), 2 deletions(-) >> create mode 100644 arch/x86/kernel/mem_encrypt_init.c >> >> diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile >> index bdcdb3b..33af80a 100644 >> --- a/arch/x86/kernel/Makefile >> +++ b/arch/x86/kernel/Makefile >> @@ -140,4 +140,6 @@ ifeq ($(CONFIG_X86_64),y) >> >> obj-$(CONFIG_PCI_MMCONFIG) += mmconf-fam10h_64.o >> obj-y += vsmp_64.o >> + >> + obj-y += mem_encrypt_init.o >> endif >> diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S >> index b467b14..4f8201b 100644 >> --- a/arch/x86/kernel/head_64.S >> +++ b/arch/x86/kernel/head_64.S >> @@ -91,6 +91,23 @@ startup_64: >> jnz bad_address >> >> /* >> + * Enable Secure Memory Encryption (SME), if supported and enabled. >> + * The real_mode_data address is in %rsi and that register can be >> + * clobbered by the called function so be sure to save it. >> + * Save the returned mask in %r12 for later use. >> + */ >> + push %rsi >> + call sme_enable >> + pop %rsi >> + movq %rax, %r12 >> + >> + /* >> + * Add the memory encryption mask to %rbp to include it in the page >> + * table fixups. >> + */ >> + addq %r12, %rbp >> + >> + /* >> * Fixup the physical addresses in the page table >> */ >> addq %rbp, early_level4_pgt + (L4_START_KERNEL*8)(%rip) >> @@ -113,6 +130,7 @@ startup_64: >> shrq $PGDIR_SHIFT, %rax >> >> leaq (PAGE_SIZE + _KERNPG_TABLE)(%rbx), %rdx >> + addq %r12, %rdx >> movq %rdx, 0(%rbx,%rax,8) >> movq %rdx, 8(%rbx,%rax,8) >> >> @@ -129,6 +147,7 @@ startup_64: >> movq %rdi, %rax >> shrq $PMD_SHIFT, %rdi >> addq $(__PAGE_KERNEL_LARGE_EXEC & ~_PAGE_GLOBAL), %rax >> + addq %r12, %rax >> leaq (_end - 1)(%rip), %rcx >> shrq $PMD_SHIFT, %rcx >> subq %rdi, %rcx >> @@ -162,11 +181,25 @@ startup_64: >> cmp %r8, %rdi >> jne 1b >> >> - /* Fixup phys_base */ >> + /* >> + * Fixup phys_base - remove the memory encryption mask from %rbp >> + * to obtain the true physical address. >> + */ >> + subq %r12, %rbp >> addq %rbp, phys_base(%rip) >> >> + /* >> + * Encrypt the kernel if SME is active. >> + * The real_mode_data address is in %rsi and that register can be >> + * clobbered by the called function so be sure to save it. >> + */ >> + push %rsi >> + call sme_encrypt_kernel >> + pop %rsi >> + >> .Lskip_fixup: > > So if we land on this label because we can skip the fixup due to %rbp > being 0, we will skip sme_encrypt_kernel() too. > > I think you need to move the .Lskip_fixup label above the > sme_encrypt_kernel call. Actually, %rbp will have the encryption bit set in it at the time of the check so if SME is active we won't take the jump to .Lskip_fixup. > >> movq $(early_level4_pgt - __START_KERNEL_map), %rax >> + addq %r12, %rax >> jmp 1f >> ENTRY(secondary_startup_64) >> /* >> @@ -186,7 +219,16 @@ ENTRY(secondary_startup_64) >> /* Sanitize CPU configuration */ >> call verify_cpu >> >> - movq $(init_level4_pgt - __START_KERNEL_map), %rax >> + /* >> + * Get the SME encryption mask. >> + * The real_mode_data address is in %rsi and that register can be >> + * clobbered by the called function so be sure to save it. > > You can say here that sme_get_me_mask puts the mask in %rax, that's why > we do ADD below and not MOV. I know, it is very explicit but this is > boot asm and I'd prefer for it to be absolutely clear. Ok, I can be explicit on this. > >> + */ >> + push %rsi >> + call sme_get_me_mask >> + pop %rsi >> + >> + addq $(init_level4_pgt - __START_KERNEL_map), %rax >> 1: > > ... > >> +#else /* !CONFIG_AMD_MEM_ENCRYPT */ >> + >> +void __init sme_encrypt_kernel(void) >> +{ >> +} >> + >> +unsigned long __init sme_get_me_mask(void) >> +{ >> + return 0; >> +} >> + >> +unsigned long __init sme_enable(void) >> +{ >> + return 0; >> +} > > Do that: > > void __init sme_encrypt_kernel(void) { } > unsigned long __init sme_get_me_mask(void) { return 0; } > unsigned long __init sme_enable(void) { return 0; } > > to save some lines. No problem. Thanks, Tom >