From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753368AbcDZWqF (ORCPT ); Tue, 26 Apr 2016 18:46:05 -0400 Received: from mail-by2on0091.outbound.protection.outlook.com ([207.46.100.91]:49646 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752617AbcDZWp6 (ORCPT ); Tue, 26 Apr 2016 18:45:58 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; From: Tom Lendacky Subject: [RFC PATCH v1 03/18] x86: Secure Memory Encryption (SME) support To: , , , , , , , , CC: Radim =?utf-8?b?S3LEjW3DocWZ?= , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Joerg Roedel , "Konrad Rzeszutek Wilk" , Paolo Bonzini , "Ingo Molnar" , Borislav Petkov , "H. Peter Anvin" , Andrey Ryabinin , "Alexander Potapenko" , Thomas Gleixner , "Dmitry Vyukov" Date: Tue, 26 Apr 2016 17:45:43 -0500 Message-ID: <20160426224543.13079.88894.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20160426224508.13079.90373.stgit@tlendack-t1.amdoffice.net> References: <20160426224508.13079.90373.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BLUPR11CA0035.namprd11.prod.outlook.com (10.141.240.45) To DM3PR1201MB1120.namprd12.prod.outlook.com (10.164.198.20) X-MS-Office365-Filtering-Correlation-Id: e5bdb28c-dd3e-47f3-bc03-08d36e248371 X-Microsoft-Exchange-Diagnostics: 1;DM3PR1201MB1120;2:Z9uFRtzMaZBtLBhpoWrO9S0MIlGJEZze8EZVCROcy4FUQ2xO0hQjDu3b4/1MjoD5M7dhf9XEvQcC1Kgx0OkhJYSb2HF3GWuD4c9aeKFxwymBavfHRA4FZvM0H2haP+XuxBEeaiheZXHPTdsTGRoTGIbGjhGonQ31Kt7MJNpWGUIWNlk3xNQnTthQMAWkxBYC;3:QlRYakpLwndJkKLiA2glScjwhHnPPIL7bOOz61UHVc6rUgXriNvjkSSGl/2wDeolmV0hBVylI9aZj/9lCGcBKAsWPXrJu5wwP94G3nb6IUFoBH3kmk8xw5CNSwb5CKRT X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR1201MB1120; X-Microsoft-Exchange-Diagnostics: 1;DM3PR1201MB1120;25:Y2V4AqpMU5vozJXEdkIWwamJGrORFMOhX1GpVWOa5bqv1o0AhBQEqx731mOg/z4bkp3IwZncPMQKA303hFi/bhLziUzynfuOh/+E6sIsZxqL3Lu60pO6xPZkiZqKJmtW1X9Gh1xiVhRmHgRhkOzNUpyPLCTej7jQxRzLrxlWmlq+Y3W2kQrIvn7pxh+Q7DL7WV3keA0s4m3tHdzJE24vkyBNTTocjAtceWeXiwk+iNmxuyza+X6Vfi5hwAPuWg9Xy0OD/GiOzYras3mCY5pmQ46LuOc5U8gEPTW5SRdqGVk8U9Yco9X9rEjD5xnyIo3n6KKnzNPrc8j98xQlxICuEy4KXBjJePngW8Jb8xbBNTn/pbqsZViNPTvOmGMN8+SUCvS2r0LM90LCSPl0eyRD6/IF1ZY07ShLNZ8HIk9zJtNFhCUgtaJIu3UIfYV4xh03pNy2TbljTxwQHGzD/Y208Gff4Dbjq73o6r8Vxhi6RKwQuJ1N9wlONj5yPGoAMrKpca2SCdNlPWbLWXFEFUeyt9lp7e0ixQvtgaUE6G5RheSNolljbZdhVe2kA3BcP7ONlBmf71+5i1HciIoKNBGeQYRVRqqjCm1gLOZOClMkXkja160D0TTr1rFdJArCPaT+A+6pKwW/j593VYkPEHtutc68091pTwqoWhr4mRykj8E= X-Microsoft-Exchange-Diagnostics: 1;DM3PR1201MB1120;20:Y6K7DQZJSMVsUWIAvZ0PGTELFRekjBKyMVIZhNbBoWkmftbWhCz25SFwWOX8Xg1H/zp8ps+AP590oobu8bHZVsLQyUIrtPi13xaWntCF6TjMhOfGb4qhtJhj8jtoUHw17Bc9F/WlVx4dsss/vaz2tiUCl34SU3WOmmXpWiTIKcZWRctsDZ4y0fu2HdFuUVk1JjtoqHnsS70XKend9sy5cV+MYUH6V3WGYECi+lY8XrzTfesgdqxEBjW7kyL9yuayHNTJegy6jSihDgQLKbht2arsKjrIsajHBPpAwsRd0bYFXJzjaB2fExFxd7jOjt5gaZ7HltPDLPjQfgWFJVY0CuZwhWRmB7fxiVDo7omrA1C6bDrzOhQMiQMC8FxRiK7j5+NYmLTyvN1e3kMGe/eiDUqsiPAHFsQL22KQcdqjR4QhOo3GO57HYo2UgxodB/9/q63IEsvbyNmhR2S6429JKEy9ag+C+8egx69K6fgzdYVdo0T93Tb9o2i8Jfip6kTV;4:7Mk/UC/zaAjfiKlfALqf/9jyOH3Q4ZPI7GTOmQ30Lnmki6qIJqJ4236FyUxlHqtjBZcWC4HFjV1f+frz0qx1Js9EskLTWTJlI3ySAQeopmUkrnf18yzt+hYra42mp0gN0buDmaj5VGyxPZo3mw21OZ3wXUh6G2k8h9GlZ0C79fRW5CTZKqrBmGt67Ch0IeETDm3R6ys18w5Ef8zqZUgGdCPzlOCcSyl5FqY1uu9l4qNyX/GYt/G6OcJ16ROLk0LMdAWJi8RiQCymKcrdPHpNwTCN96fan47evoY/sMhcDbLWw2+oEIVrA5Qr9Ukbxq5OLIQVPDHymnCUXkCOMJ2fTpLN6KnL/u5hBs4h6aLBibTaTD8cpvgk+y045b9X4X/z7FP6/Nf35fNi9O0ePskUsYm1fXnrLZdu+KynDJMTvLg= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521072)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:DM3PR1201MB1120;BCL:0;PCL:0;RULEID:;SRVR:DM3PR1201MB1120; X-Forefront-PRVS: 0924C6A0D5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(230700001)(5001770100001)(33646002)(4326007)(23676002)(4001350100001)(1096002)(1076002)(2906002)(189998001)(6116002)(229853001)(586003)(54356999)(50986999)(9686002)(76176999)(5008740100001)(5004730100002)(97746001)(42186005)(81166005)(19580405001)(77096005)(19580395003)(50466002)(86362001)(2950100001)(2201001)(66066001)(47776003)(53416004)(103116003)(92566002)(71626007)(2004002)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM3PR1201MB1120;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTNQUjEyMDFNQjExMjA7MjM6YXMvbmJWTDVGcC8zY1RsN1lSUlpmY3ln?= =?utf-8?B?cEJDWEJxRldCMy9HKzhORnNma0c3VERXSnp5bGdaaDRoSU1ZUG1tYWp4SzRZ?= =?utf-8?B?eUMyZWFSTHZFQTJwaDZVbVplRFg0MmhQdnFKRzhUQkFkYTJBWXB2OVVVTmRo?= =?utf-8?B?NGdyaEFQamYxejA4Mit0dkNKR0hLNXRCd00rTDlvK3hraVQ1UmpqMTVnbVZo?= =?utf-8?B?M0lXaVVzYjJGOTkxdUhKemFUTkNVcnY1eHJRMGJxZDlWNDVneXE1a2hhbmhq?= =?utf-8?B?RnJsSGh6SnFGTm5VSGhYd0gyUDJvbHcxYzVwR3lVUDJGTE81eHdBekdEZm43?= =?utf-8?B?TFdzcmhpUklhQTF6Vm1FbmRNU2h4N2VnK0xxeHFvWmhiMjM0OFozOEkxeS80?= =?utf-8?B?MTJuU3V6cGFKVG9QYTJoNmpDL0J4cW44b0tYdTNlcC9hdFViTG4yL01BWTEr?= =?utf-8?B?MVMxUjBIR2NxOC9sVThaV21sNU9tM2tKUURLY1lzYTdPa0NsMUFiak9wMDgv?= =?utf-8?B?NmIzUmcvMExtUVVoaldVUzhCUjUwdWV2WkFTakltdHRkMlhOWUJhU1FBOVR0?= =?utf-8?B?TTdKQXFuQ3l0ZUpHVTIwWHhKaTE4dGNycFNEc3BLL25Da0lmeGQ1NjZLUHYv?= =?utf-8?B?SU92a0dnMW9iaWJZb1hMT1FFTlYyTkg0TjRFRFg0bDhRMUMyd2FxSjQwNWQy?= =?utf-8?B?VmZKTXE1aUZkSmZUVSs3ZzZxZ2RjODF6RTRqWVk5K3pLR2lNeWVNcnYxZXJp?= =?utf-8?B?V25Pd1dqd1ZrbmxsREVTdkdmM3BWaklzMzdWOCt4VUhLY3ZDK2hRaURWYXI2?= =?utf-8?B?OHJnaGJ3YkJUS0x5MzI1ZXlIN1RMdngyZmsrNExUSWp4NmRjMXhUOXg1MGN5?= =?utf-8?B?RUpzQ1Vsa0RFajlzcmZiUjhkY1cyaEVScHJ1WktsS3lHN0plRE00N0hHNVcz?= =?utf-8?B?RndiaEtrbmVoQy9WNHljb3p0QXlGRVlScmZhcWJzRmd0clBveHIyYUNld1kx?= =?utf-8?B?d2tSWVZ1U1FrN2RDVWRqdmRrL2lhOEZ1aHpHSjRZeVo5VGJsQ1g0TXZGQks5?= =?utf-8?B?c0JqSkExVEdBOWxZZEpwRUVhR3JZelNRUkpIWFQ4RWRLOU4rdkQ2N3dIcTN6?= =?utf-8?B?dURwK21aN25PbjhyWG1ncFUxV3BESG8rTmpkeVNvSWF1dDZ0RW9JT3BOdUNS?= =?utf-8?B?d1VadmFHRmhiM1p5K2pHUEMrLzV3d041R0FTZVdjNDBCbjUxdlA1QTFWYXFj?= =?utf-8?B?NHRrby9zWHcyckZDM3hrUlNXRytrMVZXcmRDT3dtQkxEZjB4VndVNkpGbkFy?= =?utf-8?B?VkxHZ2VMOU5UY0d3TXcxM0ZMRWVZZGF3L2FubFdXNXFldm0zWGJlUlNuUWR2?= =?utf-8?B?UkdLcTQvYXFmSHV5b0lMd0s5YWlSQTN1anlyWmZBTGd0bnZFeTNxaS9makkz?= =?utf-8?Q?ajM//MJk=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR1201MB1120;5:XzL6GEEFxbpEaawcXLZ2/ALiB2QcJj5C4NnAJzvE2PQ+visk1k02GwGNuE25EAKVd+edo8C+pu8VC1VfcGERUH5WaOTGjvLH4fMXZxWmWGsZf1jvOBuPYBkQET4ayyh6X8C+mwRFlZqmJ1Yi45haJQ==;24:pQ95U0FtdqKHvWX61dtNSc+3x79hSXrfsofZy3PH2zMnbUn4ictaVEy1ojWb8MtTuK8yxvPHq6TUbs3biRpkX2g/mmAyDGmTWEzsfc8EQbw=;7:/cbBZzAEu547u9Oo3+N/SWRjIdRjxp6SM08qrZO0VEsA8qOakMggIyelZqRyAt9nSOc169hM71A96eMbQhbiQakK7isTtBbJpBTF3lKVfLU9a9fQ8L6uMrfyZW88PufQi9vQYfAR0I8+ty/4z2RpuwMSawYtKALlM7VCwBraM1I=;20:uCuLBG0u9xM5J0m6z9MXg9Yy5AfzgbD+RtGRIY30lrVFJSvRkChOt2zsDHgfJryQd4rwEgoVglxQy29E3uN10tVU2mbSKSw4gINpFQzCLfItD4Y3Dao0eucuxACXNUW19kzwAZo0YvwkFOuThIwicOF9aSpBYTzNgjwlKogprO+LreKKgYKY0/Z6ooBMdvl0+vK+xU307n5Onm+X5zmzLEjErAdtpw8QAJ7YgiJZhoQtkD9Sy1eocU/hPCccFNjB X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2016 22:45:47.2830 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR1201MB1120 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Provide support for Secure Memory Encryption (SME). This initial support defines the memory encryption mask as a variable for quick access and an accessor for retrieving the number of physical addressing bits lost if SME is enabled. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/mem_encrypt.h | 37 ++++++++++++++++++++++++++++++++++++ arch/x86/kernel/Makefile | 2 ++ arch/x86/kernel/mem_encrypt.S | 29 ++++++++++++++++++++++++++++ arch/x86/kernel/x8664_ksyms_64.c | 6 ++++++ 4 files changed, 74 insertions(+) create mode 100644 arch/x86/include/asm/mem_encrypt.h create mode 100644 arch/x86/kernel/mem_encrypt.S diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h new file mode 100644 index 0000000..747fc52 --- /dev/null +++ b/arch/x86/include/asm/mem_encrypt.h @@ -0,0 +1,37 @@ +/* + * AMD Memory Encryption Support + * + * Copyright (C) 2016 Advanced Micro Devices, Inc. + * + * Author: Tom Lendacky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __X86_MEM_ENCRYPT_H__ +#define __X86_MEM_ENCRYPT_H__ + +#ifndef __ASSEMBLY__ + +#ifdef CONFIG_AMD_MEM_ENCRYPT + +extern unsigned long sme_me_mask; + +u8 sme_get_me_loss(void); + +#else /* !CONFIG_AMD_MEM_ENCRYPT */ + +#define sme_me_mask 0UL + +static inline u8 sme_get_me_loss(void) +{ + return 0; +} + +#endif /* CONFIG_AMD_MEM_ENCRYPT */ + +#endif /* __ASSEMBLY__ */ + +#endif /* __X86_MEM_ENCRYPT_H__ */ diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 9abf855..11536d9 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -126,6 +126,8 @@ obj-$(CONFIG_EFI) += sysfb_efi.o obj-$(CONFIG_PERF_EVENTS) += perf_regs.o obj-$(CONFIG_TRACING) += tracepoint.o +obj-y += mem_encrypt.o + ### # 64 bit specific files ifeq ($(CONFIG_X86_64),y) diff --git a/arch/x86/kernel/mem_encrypt.S b/arch/x86/kernel/mem_encrypt.S new file mode 100644 index 0000000..ef7f325 --- /dev/null +++ b/arch/x86/kernel/mem_encrypt.S @@ -0,0 +1,29 @@ +/* + * AMD Memory Encryption Support + * + * Copyright (C) 2016 Advanced Micro Devices, Inc. + * + * Author: Tom Lendacky + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include + + .text + .code64 +ENTRY(sme_get_me_loss) + xor %rax, %rax + mov sme_me_loss(%rip), %al + ret +ENDPROC(sme_get_me_loss) + + .data + .align 16 +ENTRY(sme_me_mask) + .quad 0x0000000000000000 +sme_me_loss: + .byte 0x00 + .align 8 diff --git a/arch/x86/kernel/x8664_ksyms_64.c b/arch/x86/kernel/x8664_ksyms_64.c index cd05942..72cb689 100644 --- a/arch/x86/kernel/x8664_ksyms_64.c +++ b/arch/x86/kernel/x8664_ksyms_64.c @@ -11,6 +11,7 @@ #include #include #include +#include #ifdef CONFIG_FUNCTION_TRACER /* mcount and __fentry__ are defined in assembly */ @@ -79,3 +80,8 @@ EXPORT_SYMBOL(native_load_gs_index); EXPORT_SYMBOL(___preempt_schedule); EXPORT_SYMBOL(___preempt_schedule_notrace); #endif + +#ifdef CONFIG_AMD_MEM_ENCRYPT +EXPORT_SYMBOL_GPL(sme_me_mask); +EXPORT_SYMBOL_GPL(sme_get_me_loss); +#endif