From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752282AbdFGTOf (ORCPT ); Wed, 7 Jun 2017 15:14:35 -0400 Received: from mail-sn1nam02on0071.outbound.protection.outlook.com ([104.47.36.71]:40304 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752227AbdFGTO1 (ORCPT ); Wed, 7 Jun 2017 15:14:27 -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: [PATCH v6 06/34] x86/mm: Add Secure Memory Encryption (SME) support To: linux-arch@vger.kernel.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, x86@kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, iommu@lists.linux-foundation.org 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 , Larry Woodman , Brijesh Singh , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , Andrey Ryabinin , Alexander Potapenko , Dave Young , Thomas Gleixner , Dmitry Vyukov Date: Wed, 07 Jun 2017 14:14:16 -0500 Message-ID: <20170607191416.28645.58145.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170607191309.28645.15241.stgit@tlendack-t1.amdoffice.net> References: <20170607191309.28645.15241.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: DM5PR12CA0054.namprd12.prod.outlook.com (10.175.83.144) To DM5PR12MB1148.namprd12.prod.outlook.com (10.168.236.143) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR12MB1148: X-MS-Office365-Filtering-Correlation-Id: e1a482d7-3e15-4973-a859-08d4add9653f X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:DM5PR12MB1148; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;3:MeZwJx76DWvcMt/Sd8h65zC3pmKjjyxevS2ZcpTpWY4p2A1K0k4ap1YVvOnkJVun3CCkIGuTDcclLRDWbSEOdyA4xiVr4Z+ZkCdqY5o0SBLsqCRsy0VqDX/+pXChCGuVP3qQV+BjcCXG3njBnrzwPyehTiqQu27JcypD+xegtBnuZlhSre54wXMmGaxtB7V2MW6Cx8L6Qm6Sc1nBrcRW780QeuUe66cbu6SsYlbWW8LAZ/OaCitMoZbbPwealx2xn0XEphS/TKgISLvyCSVCdt3RAT1NbIeOibtDP+S4QR7iv+GDpWH4lvqKy0ipHJqP11olmg//Ja2c14f7C2e1VZEVP1bHS7q3Up1DFMJENKY=;25:hJqQ6HhpeSUQWBG/KUM4UhSCULXooFk1q0dD+ZBcCDVRUKoUOb1Jz0CNknOvxyHcx9XSqKzTHrqp0vTbRkR1uOUaxl5/G6rre8DYTb/8rrm4sHW3uh4iE1XisNzhY44kDlVL5ulupQ7JOCjgUpetD0+CA1/pCc1Nl8ae5C91cgMkqRh6mrGm1/DL0645H7fJxrx/AssY/+W8dbtnODI2uA8GrvuhZ1J/be5j/LCff6LzkUIe17kTTX/KK6Z/yhvAb8t0LMdk5TCy6h0ZeSI/cqQLaPvpL3e8gObUuNPczFVhYBJ6JwU2dT11ESIzn7+ITf0H8+fAlxGRw/mOtROIDap6h+w3s81yLB6Vd82ab+MqpzJsc2oi6LgllvcLAQ8Oeul6+mVsaIQhTHjuny2rhGsmzV/niuvOIO/vZelr6r1iFPXC6EW0GjFvNK1X5BDXrQlCPnAwEkZZ4Fn+22kkoO5DmNjcqyHycw7LEXYwLIo= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;31:5ZfCAuWxHGXHUAIZumZBNpyVnkhnwG2GDzWg9OPmAjO9TNFpUYrn1IPF9eJ1tCgi7kYk0wO2ins+QRBUurrC38f/stKIGb2PFps8T1ATTp1zB0VsHB1NtWf2DilbfSFekeb9txsRVMCq7FIuMVksA07YmGx25GmJDSXllrPE+60Q0ugNU3GMvNb0CGInOuwg4DUbJ/Ob3HbydXiuh1DiKsyXCSfm04PVHCdd5HtVOpQ=;20:wY4cH5oTvdWJeZAMCW1Kj15dZQZSUoJ8tnrx4x4fhoW22QLJGGHfSm3jYHqI6fer3+pYwaL5eel1i/sIYnC0V6XcX4HnGF7aIe4q+WtJ0NdgIQde7MySXUS4LXq6th86ZGEOyujujhle8uZQifWzZFGJPxzDbPgy61zKoPqiAMvNbcdonS6h+zwApkPEmTss3g1vrD9zh200wuJMyJ4TZx/FKu4qq6BjPF4AB4xxvNqgkYRSxHfPEAP0OzH7KP/Fd/LmwvUcJLGA55wCiZ5uYCN+Z8Yo4rnXsGUyUtc+zTvpRrUha4z93Qq6qqhn1DdqM6SxvpP8AUwUt6qcGPf4OfYs94J3lB79gLnbru+wsw8nsUltbdSBgDhZwo5oH1rTz2kFcxSu/PlcVGYrHPt8vwALonsApCM2rOSvOi9quLWSN0HpJ6zXvVjuABRq56/2Lho9mvhyA9DSmBVF3zDwDiRYnmwbRQ4RzPySU+OgQPs8mAEicYKTcD7ar9jfRW67 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041248)(20161123555025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DM5PR12MB1148;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DM5PR12MB1148; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxMTQ4OzQ6d3dYampvOGJqeFZpUjNKc2FQa2JhTjBlWk1Y?= =?utf-8?B?cUtEbXkrNDZVcHpiUUl0aTlNR3gvdkU0ZFhNaDArVXNSRTE5M0srU01VUjhT?= =?utf-8?B?RnYveTJXaFQ4amd1Q1dsQ3ZXcHFGUnc3aEloY1d6dVJnbDFCY1BsNTVlSzF3?= =?utf-8?B?WlV3N21CTEt4UzVYckFTL0k3aDZGTHJ5N3l2K1U5WTVyQlRUV1NoQ0N4V3FQ?= =?utf-8?B?VFBWdWl2bVAxdkkwQnRRclp1ekFNSmlqZy8wYk03cERpTjkza29QQ0V0YTVs?= =?utf-8?B?cjlEOSs0OTI1d3BkQjA5NGxMNWFsNTdYUGlCQUJIL3lXZEVDTWl4QkJrWTN3?= =?utf-8?B?Wlc0SHI3SisxR0U3ZEhqMXd0SXVaa0lTckI4RUw5U0ZnY2NFTzlMaGdLbCtD?= =?utf-8?B?ekdvWkRjL0VGUlpEM1lnbDBMZG1mdnJxeXFUZURxbHpGK2s5NXg4VTZQVXQ0?= =?utf-8?B?dHRyZklUYmhwT00yZS80REQ1Q1RUOTlFc0w4c1J0SlpEbjA1T096L0cwK3pH?= =?utf-8?B?dkpXM2ZjNFJVUWhEQjU2VXFTTy9Jem4vdUlCUXByenNaU21neGZOeE13TFJI?= =?utf-8?B?d0EraEc4R29LTHR4RWhkVElENnRCYzZGNU1qcHhvQWJVb1lzVkVaUy9zVURp?= =?utf-8?B?VWYwVXNFVENUVXROanlLRUI1bUlQcFdSZm5RQThtT0ttNTZ2WGxJWkNjcVJ1?= =?utf-8?B?cFFJSFVHNHBJT1pwU29BVWNaMmo1cmJ6bE9DZkpwYVdtcGR5MXRsanNEaTZQ?= =?utf-8?B?UUdyQzVRb2M1NGtMV3BGZEVEVjJXMXZLUUxIMVZyblJpVEw0eXlGeHFrQ2l4?= =?utf-8?B?NVFKbGF3ditwK0NxTzJqSEprdVhWVXJEaXlDT3FTcTdHbG0yNWFvZXhxb0Rt?= =?utf-8?B?c1RvL04zclcvcHM5VWw3RHV2Uk80UGJzaWxrZWlPdlQ0YTJvRlVpc0lQQ0VF?= =?utf-8?B?STNtUEh6cUR2VFhoWHkyOHRIU2tIYUtCTnhuOWxrZ1ZNbUxHU1lQcXoxMzdK?= =?utf-8?B?Nk84SnNVdlFSYm1DZ0NXcks4U1N0VWVxVVZ6NUJzSzJacDU1T3V2QkdxcDVo?= =?utf-8?B?cDVobXpFTXlGZVJqTU1Ld1pEOUpieXR3TkJycjlpYlBla0pmcEJ3TWVZejVO?= =?utf-8?B?WXQ0N2RsRkVRazd2cmlocGxleFg2MStmRVd1R2JyckZZOEF4Unk0elk0R2xZ?= =?utf-8?B?WHBwSXZMaWlCeUhLcFpPK01EanliNzBmYUdkT0ZLVis1aEk5L2NxaVJKVGdw?= =?utf-8?B?OEFveU1xeVhiTklNUktjSU1BNmRPWXpFL05reFJ1R3hrVWZwY3NEalVPT2RJ?= =?utf-8?B?eGxUZFNNR0prU01rNFErLzBIbUdzQi9SblFEd3RRYUc2RiticE1veWw3VVFz?= =?utf-8?B?T3F4TmtLbDJhVko4dXpHK1doTGh4SDJvUnU4dllQQ1hUbnVhLytPeDdFMWVD?= =?utf-8?B?WmZYUmhNbEhPbVdwaHBUcWpGYWEwbFh3Si9VZ2dKTFBrV3B0d29taEliWGpB?= =?utf-8?B?YlIwQnRnTHlKUkYzNmlPeVR4cXhxQ0VvSHk3UkJqVktPRi9PVWNoTDNwY1RX?= =?utf-8?B?ZlkyRjM0NXRUOVdoSWN6dVZieWFEZ1RxV2JxNFVUTHZLWmkrLzUzMkVYMVMy?= =?utf-8?Q?SDCz78kjEvmeHJ1dlAJ?= X-Forefront-PRVS: 03319F6FEF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39410400002)(39450400003)(39850400002)(39860400002)(39840400002)(39400400002)(5660300001)(6506006)(6116002)(1076002)(4001350100001)(103116003)(3846002)(55016002)(230700001)(47776003)(50466002)(189998001)(8676002)(54906002)(110136004)(54356999)(81166006)(66066001)(53936002)(97746001)(50986999)(305945005)(2950100002)(76176999)(38730400002)(23676002)(33646002)(7736002)(2906002)(9686003)(86362001)(7416002)(7406005)(83506001)(53416004)(42186005)(25786009)(72206003)(4326008)(478600001)(2004002)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1148;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxMTQ4OzIzOkFKalF1bHpxQkZWRmt6OVEwNU85dk1YQjBy?= =?utf-8?B?NUdWa0FzZURGR0ptcXNaRkppZjVWVG9HOHkvVVNyOTBCQkptQUpHUEw0WnFh?= =?utf-8?B?ak1HQU9HOXdJSElzRWNTeGxKTGlSR1BpbHNGODdWMEJHZ0d6dXVuRDNsTGRT?= =?utf-8?B?M0lITVQ1cjVKVkFXZllnRFl3emFBNTRTenVhSlhGUEFEQm5jVEM0bnpNOEFk?= =?utf-8?B?QjZJSzEralFyelRjK0QvWWxBWVJGU2xxQjdqWk5vMUI3N3ZHaWtyRmdwb2pG?= =?utf-8?B?dERBQ2x6RjBjNG9mOU9mUlJJOHdOL08xTCtiZ1dHQnVVUm9MZzc0blYwK1pT?= =?utf-8?B?TWl4KzZHOHVYUFEzYm9DbWN2ZDdvOWtMQXR0UGZVVnFNTk9XSlJISytZTWYv?= =?utf-8?B?OXd4Y0FRTVo4MXcvalNjQXlJd1Ywek8zdk5MejZ3Q1N0bG4yU0NBN29vUUg2?= =?utf-8?B?SmY3NWVsTEYxMFBJTVpCOW1QelhMaExTZFlsS0tMVCthYTJBdWMyd1VEdFRX?= =?utf-8?B?TWVlVTI0bmhnREgvaE81WllMa3kwNmdPYjcySFFsZk5NY3Y2Ri9WeDNRcEhQ?= =?utf-8?B?bjg0RWo0MnY4cmpOb0s0N1FvYTRtZ0F0RzdtZlF4Q01wZkNOdEorZ3dXY2li?= =?utf-8?B?UE5mYnJGaG1RODBmWFFzYVh0d2x1M3dqQ21ka1lQOXBpQkR3clA4YUR2YzFO?= =?utf-8?B?VDZLRkNTcmM0aW5lK3N6UnZ6MkpjYTFQdS9FZkdsSjZENUoyWGp0anUyOVkx?= =?utf-8?B?ck5TcHlQQmx6bFZiNlRrTWllbVNnV3dVcTdqS1VHSkE3R0ZaOTkvNGNsejVs?= =?utf-8?B?N0dBSVQ2eURxcG8yeTYrTDZMbXJob3NFN0UzWHU2SjhQWjBjbEoxRkVFMVBq?= =?utf-8?B?c0p5UzRHY2IxcHNuWU84WUN3NTFaNnlyVXhXRmtnY3lWT21pbjFSKzFiNjA3?= =?utf-8?B?SkFYVzFJTmRJWXc5bHpyRDg0dDE3WTFEMWZJWldMSUNYajhQVUpkeURRWGls?= =?utf-8?B?R25OSHN5LzlOYTU4V09VM1Q1b0VObGVyeERlVERrcWhPOGJVYjNEVkpnSlls?= =?utf-8?B?bTlRUlpsUzFOOUs4N1RTVW5CaEVFMTlEeVpwNGdORzN6c1lmVHFXSldTdjlK?= =?utf-8?B?alBRMHh1NVVORVpoOG05ZWdQSk1uemN1MDR5RDVMeGJKYnNFVjZMYWtBVENM?= =?utf-8?B?MHM3Y29ZbkxHVVZaTHd2Q0xYUkF0R2xLRUVvQWJiejlsK3VQZkpIQWduVFNv?= =?utf-8?B?R1Y1RTNmNWtBVFF4c1BXOGhXZVRUTHNJTTBEaVFXelVvRUxieUVoKzkvcHdD?= =?utf-8?B?THI1bzFleWp2YnR0ckl2T21vU0xEVVp4a1ZhTGVFNWoweTdOaHVVTUdtYnZG?= =?utf-8?B?M1luTzM5MjRoT25yRENUekFFbnlpODJtc084REE1U283UnNDUW05UXpaYjZ1?= =?utf-8?B?RW0zbk1KbWNTKzliQWtrZU1DN2wzRDBWWXM0TGI3YmlTWVNrT3VET0ozRlF4?= =?utf-8?B?UndkTHhhbFpzSTYyNXZhSTJkN2M2UFIvdkFCazBKanVoSFlucW1rTFJ2MFps?= =?utf-8?B?cDlZWjdsZ0VJYWkvQmljMUx3N0RuUEN6enpSeGNhS1E1aGN1OU93MHNMTEw2?= =?utf-8?B?TEZjQzhPWlpTcWdhdXkxYWlWMVRLbU9Hd081VmR3YlpyYzNnRW1JcXVaUGJ5?= =?utf-8?Q?eKwfLDIJRk+nwOSOZ0=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;6:V6Q7C1CVyHOjQemexIY91acgXF1KeWT6S4Q7MZ4tjGSswl5N3tq6rv0FjGvk0LRSvCh3vH1Mo/QEFroNUej/KUdxO/GTW67WyJh9K3fTrRrf5DysFrDG0ag9g6XBNrGrneuedKQY8zUblukMKB3LhIMB5VQkOMzuqh90GdthaIjhjy4xla5k9tTU1rVa5V64cBcX+zdD41YxjIpOzOHh/M6DyWze5uVK2Hy7XbMNfW8ZMz+Fp+85F7CDHklwPK+jNLJvjf3F0xE8XpH1VtY45fMMp5hJnezlv4B21IuU2T8al2OWfJ+g7fErR+HaJszKGzNU4flGqVtm/ol80MeEfrqGlVna9rGQkj3A1rkljRIK+QW87j5xDlW7AQeyP3MuBdXQ9sy9tJcnHggaKYORIARfIUoQTOEobVg0I8G++0EVle3Pd8Gax6HcKIajcICm6DrWz9VKpSuF4FnAIF+PRe9r4NkpHNMGA1CH6aKT/f9lLN6kbJn9GJVIbLkEmHjKGpmJoXqzsxDbzLZ23B6iqRQwVQ6G+XaKYtZp9ACR7s4= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;5:nmI7oiUIFIWW7OvJslAcflQX0P5c4YX7NaGCRk4AWZq5YOJ1WMReo5rWwERC0cF3Aos1dtvu6FhNf2ywiR+UcLqXvqzM6Zhop1+rJZeNRnFvUVCvvmaxFq39zAeLyY4IdMPstGtHZoRPB2e3ZuCVKVQH09FBMosrISiMH+jq0KCNCwtVc1suGY4M6Pr/RUB/D3oWIlDnlJfs/0Hy2nod4ItNHZm3CPZN3iLcPj1MZRc8CxF5yI42GtfXKJj+Kj36lEF8PTZ+650SSY9UmaYfEouvtqx2wpJryw1XuEWS7xtIG5JFtYEUBI3DrWqIGCNe511/xcK8FAxYB3S13nqWJPppH9lDFUHI/rB6YwMRP4xmZCGXOWNEBUzjpP9BX2+czbcwyJXVvS46RABRIG7MrJhmlS718m5QW6RalEqIrEOOH4Y2vWmmZaNSkOIoVcLjTc7goLWomrblz/qtMCT90pOLJcJr7cT2Itk4tq/pRxVNUWe/k3pcD3p/2/tHGlAv;24:oln90zIpGK/ymAZj0WmlD62VbA4jWYe4k5qYXvar1tcV/4FOd98/nMvQoDxdmJQflg79rMO6VOfNMdoQE9aY8lK5Jx5jjpHEdX7Bo3oJ4+U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;7:3SpJb+Zz75Q9yFKb0Ncq/imGIhRClNrKq0wQd1qpucjM5j4QwfNiBvBSVuGAKfuIsDRV61862Dd6XrVRDv7WBvLYLlQk32w32sQXWYKFzUPRT41bDtYnf7Nb923L7JZW05ZmMtxJX5rOHX8wTnIntBlIr5gn6WQM2JP9NxAfGC+dV3bsTw4ENCwJxNSOc7mfw2NPrJGrtj7SVXqjDwamiaPlcPWiEj9tNqpkiDxHuV+Sa01amqBxQUAyEH9aSaiFFFhw+MQbosN2gcBICiTXn2fayMVlVrB2JfGm+6C22irm0MYj21YdOenxkgtpeMS+7gJrcUFaRiko9G/rtvqIfQ==;20:0vm64R8gKI/elZIWkirbWIbrXcqOcTOzbH+82yRavbnSLvP8QNx/Pq6/htwJDecb21oPLCjgTwG5dNv0D7XrmNBbhF41yYUWM7As7PzV7/ZBr3/RssEKxrWhbiyJFMSZrJaD/Q44Aq5k/Ply0SmD3htKS3emSioq10SfijNbz119Ua68uMwMBlj8YICI0pvzb1RwtW6HANvL1vuPOGdErlPcJNw4h4hXC61WcckHnrUPPT0WtOJh+a10qhq3L5sT X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2017 19:14:17.7074 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1148 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add support for Secure Memory Encryption (SME). This initial support provides a Kconfig entry to build the SME support into the kernel and defines the memory encryption mask that will be used in subsequent patches to mark pages as encrypted. Signed-off-by: Tom Lendacky --- arch/x86/Kconfig | 22 ++++++++++++++++++++++ arch/x86/include/asm/mem_encrypt.h | 35 +++++++++++++++++++++++++++++++++++ arch/x86/mm/Makefile | 1 + arch/x86/mm/mem_encrypt.c | 21 +++++++++++++++++++++ include/asm-generic/mem_encrypt.h | 27 +++++++++++++++++++++++++++ include/linux/mem_encrypt.h | 18 ++++++++++++++++++ 6 files changed, 124 insertions(+) create mode 100644 arch/x86/include/asm/mem_encrypt.h create mode 100644 arch/x86/mm/mem_encrypt.c create mode 100644 include/asm-generic/mem_encrypt.h create mode 100644 include/linux/mem_encrypt.h diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 4ccfacc..11f2fdb 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -1407,6 +1407,28 @@ config X86_DIRECT_GBPAGES supports them), so don't confuse the user by printing that we have them enabled. +config AMD_MEM_ENCRYPT + bool "AMD Secure Memory Encryption (SME) support" + depends on X86_64 && CPU_SUP_AMD + ---help--- + Say yes to enable support for the encryption of system memory. + This requires an AMD processor that supports Secure Memory + Encryption (SME). + +config AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT + bool "Activate AMD Secure Memory Encryption (SME) by default" + default y + depends on AMD_MEM_ENCRYPT + ---help--- + Say yes to have system memory encrypted by default if running on + an AMD processor that supports Secure Memory Encryption (SME). + + If set to Y, then the encryption of system memory can be + deactivated with the mem_encrypt=off command line option. + + If set to N, then the encryption of system memory can be + activated with the mem_encrypt=on command line option. + # Common NUMA Features config NUMA bool "Numa Memory Allocation and Scheduler Support" diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h new file mode 100644 index 0000000..5008fd9 --- /dev/null +++ b/arch/x86/include/asm/mem_encrypt.h @@ -0,0 +1,35 @@ +/* + * 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; + +#else /* !CONFIG_AMD_MEM_ENCRYPT */ + +#define sme_me_mask 0UL + +#endif /* CONFIG_AMD_MEM_ENCRYPT */ + +static inline bool sme_active(void) +{ + return !!sme_me_mask; +} + +#endif /* __ASSEMBLY__ */ + +#endif /* __X86_MEM_ENCRYPT_H__ */ diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 96d2b84..44d4d21 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile @@ -39,3 +39,4 @@ obj-$(CONFIG_X86_INTEL_MPX) += mpx.o obj-$(CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS) += pkeys.o obj-$(CONFIG_RANDOMIZE_MEMORY) += kaslr.o +obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt.o diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c new file mode 100644 index 0000000..b99d469 --- /dev/null +++ b/arch/x86/mm/mem_encrypt.c @@ -0,0 +1,21 @@ +/* + * 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 + +/* + * Since SME related variables are set early in the boot process they must + * reside in the .data section so as not to be zeroed out when the .bss + * section is later cleared. + */ +unsigned long sme_me_mask __section(.data) = 0; +EXPORT_SYMBOL_GPL(sme_me_mask); diff --git a/include/asm-generic/mem_encrypt.h b/include/asm-generic/mem_encrypt.h new file mode 100644 index 0000000..563c918 --- /dev/null +++ b/include/asm-generic/mem_encrypt.h @@ -0,0 +1,27 @@ +/* + * AMD Memory Encryption Support + * + * Copyright (C) 2017 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 __ASM_GENERIC_MEM_ENCRYPT_H__ +#define __ASM_GENERIC_MEM_ENCRYPT_H__ + +#ifndef __ASSEMBLY__ + +#define sme_me_mask 0UL + +static inline bool sme_active(void) +{ + return false; +} + +#endif /* __ASSEMBLY__ */ + +#endif /* __MEM_ENCRYPT_H__ */ diff --git a/include/linux/mem_encrypt.h b/include/linux/mem_encrypt.h new file mode 100644 index 0000000..1d8e063 --- /dev/null +++ b/include/linux/mem_encrypt.h @@ -0,0 +1,18 @@ +/* + * 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 __MEM_ENCRYPT_H__ +#define __MEM_ENCRYPT_H__ + +#include + +#endif /* __MEM_ENCRYPT_H__ */