From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752438AbdFPSvO (ORCPT ); Fri, 16 Jun 2017 14:51:14 -0400 Received: from mail-sn1nam01on0042.outbound.protection.outlook.com ([104.47.32.42]:8512 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750827AbdFPSvD (ORCPT ); Fri, 16 Jun 2017 14:51:03 -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 v7 06/36] 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, xen-devel@lists.xen.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org Cc: Brijesh Singh , Toshimitsu Kani , Radim =?utf-8?b?S3LEjW3DocWZ?= , Matt Fleming , Alexander Potapenko , "H. Peter Anvin" , Larry Woodman , Jonathan Corbet , Joerg Roedel , "Michael S. Tsirkin" , Ingo Molnar , Andrey Ryabinin , Dave Young , Rik van Riel , Arnd Bergmann , Konrad Rzeszutek Wilk , Borislav Petkov , Andy Lutomirski , Boris Ostrovsky , Dmitry Vyukov , Juergen Gross , Thomas Gleixner , Paolo Bonzini Date: Fri, 16 Jun 2017 13:50:54 -0500 Message-ID: <20170616185054.18967.52228.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170616184947.18967.84890.stgit@tlendack-t1.amdoffice.net> References: <20170616184947.18967.84890.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: BN6PR04CA0049.namprd04.prod.outlook.com (10.174.93.166) To BN6PR12MB1139.namprd12.prod.outlook.com (10.168.226.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 446f1290-0f20-4b43-da26-08d4b4e8a0aa X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:BN6PR12MB1139; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;3:V38yamm/Tmvqso0wTdtpoKWaKrNNgBDo+G4pXRIIu+e52QrPd6DGCK0wJ98wIVcBWI4gPCL2ubiIRCwEZz9ZGZYWtGt/bymY3zZG+Oulp7qtvuzTP0B290rAD93IyH/p472ZkvDeLQqy29mcVpiUWhUz+V+oeusxEYJ9HDUpGcJ/zc7k/vh+FZSY3x0rLbWOqDNxkp4jLonM2bisGZq5eSFlSSLNNzDCA8auMwVuv798gkhD86AN0MwPV5QYm8wTgpw7tn0OvgrtGKj78SBKI3D3G8sK9FYTgUNk/UGR+WneBMa2DDiO4YtuE3B9OAbFmmy2vGETk1wkcwVDThcL4W7PrV0jGlVI+lnXe9gqpdo=;25:cHScjeJpxEuz83fR/u25ncDDncPzOhRQr8Zq4yZdgyxXfk5Dt2WwGE1jYHecWtCnDSHwWpQvqnAyd7wAT+wOe46ViKARtUxu79s5R/8s6kGFhaUCIVrXRh0/A4yUUUqQwBwc5o93+omJPJFzCmijePJdZ0MxYUzcgnDLbuKmzHYKX6nNYhwu4+wMRbhXR3+W9jvMlUunr+yVqtZDJ7XZQUS97t3cMeFCJK2NU1XQJ44oUWeqy25QEX0WmIAleb2JjtRk+/cCmSpX2VgUiuy+dLrgRm8ZtuQeyr+Z8WJh2UUGIfv37jnhJVLabhdxIXUARmbYHrUWwjYfZMiSM/VTpHj56GcaOje1wz+b11F77850MvZJ7I7A5bfrTgVGE5MkQ2ddlT4DMwBCwej7Jl0m9IbLVsS23hNUIvToLnPaYgyf2xyMZhRQRUDrPM8ZiaZEt6umBkugKf5INNFoA6zRWLxSxUMRFQBSn33PPd/wkdY= X-MS-TrafficTypeDiagnostic: BN6PR12MB1139: X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;31:6IUTiTPfQB2S6TsUL6thGPP24fWEiEDRrVg+1n6d+7TFsX86HqpFwfu6aLm5bRhi0e8vHvn3RKDkbPMD9OAwPYLNaCmEJBf0lkd1lgdBLXTQlOb4B/zpndgbmlLX0TpDNOxeL/zjl3UC86hfLTs/VJ82YUkQjRd+GsfMrriQ7VBK9fZrZhGdNGgOqNsYlBV39kn8BZzWhvevohS6n0bmN4sxmXVq4FDDt4XCJOCcs9c=;20:mDD4liX3HwUpVkQQMsIzsHmvS3ssgKAJQsU0at2xbkzJiPHL4qQxsgxqapfkbdqW8Ts+yToOdh17cNJ3nY8mtjDtoCwOQuD8XVbLskR23FbaWHzbdL3C/V0h5emgWgVsuBxPVqMrcZOKM3MKaqDBXq2pjjYb9nTCtuk8lT4XkAjyk5wU1nq1t9cB5QI34AdVUjeyk2phe0QIy6cuxgvI4jp6EtDoUNTyLkuaDikkfY6lW/MObYaPBLnbdCUzJm5knzY1kNRALLwC17Lo6lj3aIN2BZMvRpEnQb0kBFSqfpmmbGSUn61qzISgvpGIPtb1IVvCe3iGylruIdgLhVBvQf5tP8O+dJTr506AKXak2DOm+cvJqEr+mzj32lqbLVJ1z1Z4N0l5RR5J9YirU5PkEV8toHXQD+OOE/3v/6v6A845lMYfAz17GpIsc0h1toiTGGm5h6oj2pmZ2Zq2CEpPWbCv0d1vuEJiKlwRB0y/Gr1BmFoHEBdM/YKpWXDBaZhE 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)(5005006)(8121501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123560025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BN6PR12MB1139;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BN6PR12MB1139; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM5OzQ6c0VvdmdvZ0JRYlB4U2Q3NmZ5bE9Vd0VTVEkx?= =?utf-8?B?M3FNWU5xQlNnZm1Rd24va0RuM1BFZmp0Z1QvRzBVMzhRQjVsdnltb083ZGNP?= =?utf-8?B?YnpFQWE1K1ZVVjJ0UnFzVU9reFVRWUNtSkFSNHk1VVJQQzd3RllNNEtBSWVj?= =?utf-8?B?RjlxWDA1cGZWamFGZXhKWEFFeTBoR0lCcVhMSDNNZEt5aTd2UzFXeE9rZ0Vs?= =?utf-8?B?ZWpnQnBDRDFUM1QrSXNJNVByUGNpclRpN2NoTTZueHdJZnhiRlB6QTFlS0lW?= =?utf-8?B?ODF6ZTFQOSsxR1RtUDU2RXp0STlQcktEejdkMjB3VWwvc3N2Y212TGtWUkJR?= =?utf-8?B?VVFQVS9YV21uMkhWNWZMSU9mNW04QzVsMTJGWkIvb3V6Q01ZR2JKRUg1T1VX?= =?utf-8?B?ZVllL2xjRHVmVFdQSURvbEIyZmFmM3dFL2VDc0lhQU5oSER2dGJnR2FtWnNY?= =?utf-8?B?UUp6Vks3S3p3blFrMjV2dnBNbm9Pakt4a2FQZVc0dEFnSS9PLy9SZ2hxZVpZ?= =?utf-8?B?T1JQYlV5RTBZVGRDLzRwbVhlMGV0endIMFBMTjRhanF2QTBzQTNIUlYzYVFU?= =?utf-8?B?QlhESWtPYXo3ZEIvVUZVTkdHTnRncU5pek96dlB1TUdqUVZaTlhVV2k5bFFs?= =?utf-8?B?ck5JR05oRU91OXNVNUVBaE9nR1VnZGFLSEx3TjNnY2l0aGJqb1VKcEY0T3Nx?= =?utf-8?B?VGs1ajdvN2RmYUYyZGZ0ejluYUdyM3ZnYkxJNVlzL1V1WU5nMFhvNWp0QzRF?= =?utf-8?B?R0x2OUdEeU5NSjJZY1VNeDBBbFF5d1RlVVh3OW43dWZLdDZ3d0RpdDhGdmdq?= =?utf-8?B?QXhRSU5YNkEvUThVaWNVSjhySjR2QkF6RU9LbW1kSkZwbUhwZUREbTlVTGRi?= =?utf-8?B?NjZZU2l2WWpNeGpaYitpcWpETXBGTnM2VVl5a0F0blR0a2RhU0xhQ1F6eUR4?= =?utf-8?B?d0lyYnhsZFZkcFUzVXNVTjRvdFo3cThCelQ1VDR4UkVJUURzR2NrK2xLS3BY?= =?utf-8?B?V0E5RzJGNklLRWk5dFN0Y2JxWldodTBxRWhkcXQzRzNnRUJ3dVgzYmYvSEdw?= =?utf-8?B?OFlHQ3dJdXBLUFQ5N2ozY0NoREdya016Z0NEVGpZT0JZSWlxbDdnN3JyU1pW?= =?utf-8?B?MGJFaDhyOFJUQmVWc1F3SVVacmdrWTZMYTE0Rk9lY1hGYU04ZHpsVGZtdFJk?= =?utf-8?B?c2NmYVhuWTBhVGFLQ0JHYW16R09MeG8yTVNXeTdxd0J5L2Q3cW9iMG5ZVFpE?= =?utf-8?B?bG5LSGY4N25NSGJQajJlQmlxdk9JSm5uOFpIdGM0cTBxYnFLUVRzaksvSDJv?= =?utf-8?B?TDNsd1BUdjRSU2JXMmp4OWJMLzNqbjJQQ3R3eXlYbTJqYzJUNVJDQXZYUHBo?= =?utf-8?B?ZjZOZGlIbnJicXc0MUxHVEkrTnVtbFhrelR1Vkh0RXBQM1d5a3Z5UW1iblFk?= =?utf-8?B?YUI0czNPd1h3UXBWenhZclVKUjJwZDZNTk5EemczZkJEaWtMSWR2VFFoOStq?= =?utf-8?B?TEtQVHRta3k2VWo2WC9sa2N2NDB5QktGOW9rRHRJcE1qOHlSZmpteituRzRY?= =?utf-8?B?ZnlxbmsvZzhFWWNxdENNWSs2Mk9GNnpvYW9hZk15TExaeXdNZE1ZV2hmd0JP?= =?utf-8?Q?y3++2CcF+XXDYr7USuZ?= X-Forefront-PRVS: 0340850FCD X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39410400002)(39400400002)(39450400003)(39860400002)(39850400002)(39840400002)(7736002)(42186005)(6666003)(47776003)(4001350100001)(66066001)(54356999)(7406005)(8676002)(81166006)(2950100002)(83506001)(50986999)(5660300001)(53416004)(305945005)(189998001)(25786009)(33646002)(2906002)(7416002)(110136004)(38730400002)(53936002)(54906002)(4326008)(9686003)(76176999)(50466002)(478600001)(86362001)(72206003)(3846002)(1076002)(6506006)(6116002)(23676002)(230700001)(55016002)(103116003)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1139;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM5OzIzOjBrNGFNSDY5MUVjUmpkUWpQbWtIc0lMaDlC?= =?utf-8?B?NXRXd1VRWEVLbmdHN2IwL0wrU3pnQ2VmUGx5R0FDOGQ0OC8vU1IwZ3dNVWNn?= =?utf-8?B?U25nazl0YVI0RWQ2Vy9TZXhqYld4TUNjcmFWT0NDOWlKQW5VK1VDcHcvYjBl?= =?utf-8?B?U0UvNHFhVlhOK2R0VDY0eFdKN2RJb29jMlZZWjZxMW1uYlpBb3JnQVFreG42?= =?utf-8?B?U1BkL1hpODBOVEJ5czBZSlJ6Vjh4OVFTdmNjU2NsVVNEZ00wRzZzUnNhU01V?= =?utf-8?B?cFhZS3FZUkRoVXZMU3phL1lmOE1oYVlVT2xsRU1EbUE2UXBuUjN4OVRlcTJQ?= =?utf-8?B?TFJHdGZKbnZOYitwZUtmOXRMd2t5bnJ5TGt3bm9lcUp3NVJkeDJGbXJINU5t?= =?utf-8?B?emJENDd5L3RnQllURkx0YUlhdmVFSkFuaW9SMlZZY1ZSNGlMaC81Yk5YSUhr?= =?utf-8?B?ZWxCcU91cUFPOFFwOGZlWVNldVAyblZobUMzaVBUNW9sUkM1dnBmbTBST05T?= =?utf-8?B?VTUyQnB0Q2FidVNIeEJDcE8zOXZCS0JxZXlGanA0THhHUkgyUTNQZXFsNmpN?= =?utf-8?B?ZTRSWlRJcGhiaDRFR1pQQldJZDRzVUU5a0RRM2lSV1YvMHgybWlzWWpTZUQ3?= =?utf-8?B?RkM3NGM3UVhXNFpHQ3dLSDB1Ukg0K3lYcmxMU2UrQXQ2dU5MS2ZibXMyRzAy?= =?utf-8?B?b1U1aHdWWDlIZ0tDa0JPODRuRTZlV3FIK3VZRURzd3F3aE9sVzg0UUZiZFIx?= =?utf-8?B?WDI0dm5RZytnK1JLRU12L0hhaDhwOS8zSFJrRTRNaGJsYUxwTEk5RVc0aHFJ?= =?utf-8?B?VCtxbllldG43SjkzbjF1V0d2Vi9BV1JFYXZXL0w1b3ljamNud0hXaDA3WnU3?= =?utf-8?B?Q29FMXA0ZlNEL0djMnNYbWFMSkdWMmNXd2xlb1lna091eUwzb1NWQ1ZWUzFP?= =?utf-8?B?VHVZTDBaUjBmaXoxcHAyY3RWM0YxM2dMQVo3RDB2MmFJbTNKeDVaenpTSlor?= =?utf-8?B?QWpzZitXbU9aNjRUY1B6UHJPN0kzbjNDNmZNcDg5UElhUDc5aU5uQWNQVlds?= =?utf-8?B?M3grRUJWTUdNZFhKbWw3VGNkeE1RcHEram4wWGwvK3I5Tlo2VmZqendVWmRt?= =?utf-8?B?M21UVTFRZG1uaGxiS3h3MXFTcHVhMzBHcDhadUtaclBNYWNuYjAxT1BkZlM3?= =?utf-8?B?WVlFSWJVRDhQaG9UUnJIVTB6c3oxdXZ0c0ZlQnkzSk1xQ1IwanVDZVNOV3NR?= =?utf-8?B?VkpwVE8yYkg3TXQ3dUZ3Y2toR0c3T2dzQ3JuOFZYQUcxRE93bDBTSiswMVd2?= =?utf-8?B?eldYaGNNS0JaWmtHdW5DZm5NQUsxaEc4VDBwaE8xaTZJbVJHNU1RT2ZWa0JB?= =?utf-8?B?T2FtMmkxZFNZSDh2SnZybWsxcDNkM2ROZE5pZHY4RTNDZnY2dkdxRkRDbEZ1?= =?utf-8?B?SUgrRWFabnpMNThhNHdVWit3NVE3MzE1aUgyNDN2TnowaU40SU1Pcm96dGxY?= =?utf-8?B?R0Nlc0o0NUVGVGI3MVY4bXZKYnpGVGRucGY3ZkpsdmRRRGVnMDNnRjhQRmpP?= =?utf-8?B?S3p2SGtzUndMSTV5NWZmU3laQmRXK2tGYUlzZGtXaHJkdGNsdlRSWXdLbXhS?= =?utf-8?B?NCs0WkQ4ZU54Z0xzMzVkL0RBb1FlNHJldGJEdTBCeStYSkVPNHgyVDlnPT0=?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM5OzY6blpHYmdTNUp6Q1gzak96Y2pqTk44dmU4Vk15?= =?utf-8?B?RlZ1N3F1eUJEdUwrSUFoZ0ZvVU52NFFJMlFVbjl3Z2lBcmpVUWRacmJDY3By?= =?utf-8?B?UGdEN29LSVhDVkxhV1pGWllueXBHSGgyQlg1MzB0R05iZERTNnRzdG4xZ0l5?= =?utf-8?B?Q1J2NVRPNUNxcElqYWd5L2tIOWdPVjQ4MVFXbEdjTFJZOWpUdzE3dldwNEZR?= =?utf-8?B?YXVOaUhJbVBCQ0pXZHc2dEgwaUJzZURHQmhUdmtGYnJkZlZ1TlIrSXpHeWo3?= =?utf-8?B?NGkzdndmbCtnTFRTYnVYUmNEQWtEeGlvdGgxdVpZL3NOSHdIM1E3TjNYc29S?= =?utf-8?B?bHN0bktKbVViNlFwZzV6Y1lkRjJzKzAxNStjQVYwMWNlQWVKanN0Qm9BaUI5?= =?utf-8?B?b1E4eGR2T0NpSEl3bHB5eDJtWnIvUEFpZk5QMEVqTzBRbUkyTmJJR2k4cU1W?= =?utf-8?B?aDdZOVlqcDBDVHN0L1k1RWY0Yy9TOWFNSTB6Q2tMUDlqNURhMFBXOGhTODZq?= =?utf-8?B?aDBvQlVUYVYxWjZxUUo1ZnBnaUVvNmIydzR1MllGeHlJc3NvMStRaGZZa2VD?= =?utf-8?B?dHNKOXU2MmYxdUwrRlVLcTdqc092Mmd4Y3F2ZXM1SXRzYmwxcWcxQnB5cG5o?= =?utf-8?B?bFdlRnR2MlNWNWFSL0RwNEF1aFJ2ZXIxK0lGSUt0YVE0TEd4cmxvbkdWeFlV?= =?utf-8?B?ZjA2bmoyMExaT1NyUG0zelZDVzkza1VaZVc4a2pYMDBIWXdzbFFBQzhQSkxq?= =?utf-8?B?REMvZTB0aXBzTm1OcC80U1NVcGdNK3RPL2VoK2ttZTdiM0J6dDREd3ptTjZD?= =?utf-8?B?WmtZLzRzZmMwS051SlJLVkRLajlvWk1OYTh1bGswdUJEdm5HZ2J5R0xiQTV5?= =?utf-8?B?cG5jR2diNTgxRDBYb3RFZ2lvWTREK1k0Z1pyUVdsNVMzT3liTzl6UGlVRUJn?= =?utf-8?B?dXdRZXlld3hvY0NEenhZRzhZUndRUGRsMkd6aloxYWJsQUVtT0VRQkRUdEZP?= =?utf-8?B?dXRLQktlRWFRQVNPR0dJTVA0Syt5T1l5VCtTcVlVbmM2U1FNMi9STjFSWTNX?= =?utf-8?B?YU1oNGNCS3JUWU1oVTJkNlgrTmVqYXB1aE5aR2pyV1d0ejFnZHFtK25iakFI?= =?utf-8?B?bmZEVFpMUjJ2SVNsK0t5RWkzaTl4aS9IYWtGQzB2SWptSWJXV1UvSDJreHgy?= =?utf-8?B?RG5RUTlKc2JDek84a1pobEIyRkRGRHRlZmVyQnFWdGMrN1VkVTBTWDY1YWts?= =?utf-8?B?aC96Mmp1U2RDTjZiVmVROWEwakFaME1iU1E2ZFl2d1dmeHptQXVMK0Q1MWFD?= =?utf-8?B?MjM2OEVjUUlyb0tPQ1pUVWU4ZGpGVUFCMG1iN2xhZkhUZmJxSTJoK09XYlFX?= =?utf-8?Q?sL+79WG?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;5:mr4vSHXfstIoU+hZd+4zEmsoEfbxVo/AVPqV5vy5ggLYd11Cv8HUVRRPMYScmwRup1eyGNDcjEi4B0Riaiv17K61m4OLReedZKl1vPwb4bZwnw9K/eIubQATbf/gvMbXhGB3sR24PXSY5fU7rgSNOrMF4XlsM/cWg2Yn4xb5W7Kgukcz7qkFOJ7AxgjxOcoLvO0SjpsxaHzkwzk2B3SIuRxsfbNVbVdokivYUbZk6jojqxMPcyA0tyV0qqO/WWkNhljCV2v2cnQhM40YW6VqRPsyIuibAOjzTVoyqiAKR9vg2rDZyav1pRv4iFNKEc3lEP2p7Vm/1MziJkwsI9uBoGCPgPXN+GY7AkYpCJqAO+GXM990zX8E/R3o4EoqmgBW20N2FuNDoICP9XAckx7Yuc92rm1t7uyCVXzkQO5z9tAYIz41NP8xG2dawzyWf6YB/Wz40K1bcAKVIUUYTWnNEndPd+FdVR5jJjYh4s75F5xMqWpn6gNoWk6FqC0P9lcQ;24:FY+bBQf9qMAB17N80cJRI55XsWGr/5CjLYIcrec3da8sxCeTMWjVsUBvX9uL4p12pEJgIQNl6ggNuJVac4/s2K5p0r6sfVwrsmr1JKFZx+4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;7:xNTUXN7S9z3ThzPdmzJMf/aY+9YZ+H9bBMPi3IpCUGXx34ptSKjse60Nxxs8MqA+asF9yWsFofnSApKk8HTiuX9kKqaFYlmzZug7npKatXESbfRw5V0qy57EZBW0ovqPgy/q8cF/nE1mv+bhhlNrbchmgweobkdaNFbG7TF/bcL8f4ofKNWOkENgCGH7mLK6Cr1GcFnjVUVvFCTESiF+0tKcbnG7IgpmWlYcAD5Z6oysGxxbx6VnXivnxhngDs0i+oe1JVnsm5hsCk62CkwzpMZPTu7jITGl0k2hyg9buB6CaNvEIy42PLmrHx7WIICjHXU/KNb1Xtj2E/VbiK9e52fFVbuQb3PV72LsNE/mlkv4UHnt5/xtqHYvF11Bu8/UI4IHK6kL/dzLqKME/sNFIvYNQIb5sDSantoHd013Y++WAA2bIgYOsdZj5+2a/XwK6JGij/pO8C6HOq1H+pTVSsESPq06NyM5uD98vpjap5Vi+qmglpdXIGbZDOVeE6UdmtLC3lfumJanP09jpC2fQdJ+/BaHrLivzZNSaGFOwxMmtWogTNwComdmc8jdr6zGWX6jrUOf5Xym2cay/Q6hFXlPSBu7O69vMTeuwk6A6FxzRF0ncdY+Oc3zEUc2FdUwmYAEde6HDlQQ+EgPyMBRUX+5xjX9gymKO7HD+N5RCWUSbRTuoWeR1IltZYPw/fNg0lAO4yoL1W7KGJappWxpP9QyN8YvtegBPx3H3DfYfpzFHfjbUkWwIYD9g7FWBDSL3SE7siUBiXvD+TJxeHDlWU0JlGg33d1ESYvalg8OjnE= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;20:t10KMD1pJrcUwND9lpQB0V0gpHJ11BQCils3hMwLfP7Lx+7+CWYstg4upA2kEh8De9jOTSYDVxuAYcWGJIBI+cdSCLT5yusFDYhjk301IPCGrVRh5F78VIdoEDpOG/98W6R7/UPdwEHGUq4NKd3zmvJoO0UNbv0ypAe1Eet9RBaV9SdHkISREsf0DOPMvGbNILw7UmaSR7Va+F13mj+U31J1bKIU4piiJIpNMo7s4n2YCKtzy+gdeq6ARRkyQMwC X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2017 18:50:57.1108 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1139 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. Reviewed-by: Borislav Petkov Signed-off-by: Tom Lendacky --- arch/x86/Kconfig | 26 ++++++++++++++++++++++++++ arch/x86/include/asm/mem_encrypt.h | 30 ++++++++++++++++++++++++++++++ arch/x86/mm/Makefile | 1 + arch/x86/mm/mem_encrypt.c | 21 +++++++++++++++++++++ include/linux/mem_encrypt.h | 35 +++++++++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+) create mode 100644 arch/x86/include/asm/mem_encrypt.h create mode 100644 arch/x86/mm/mem_encrypt.c create mode 100644 include/linux/mem_encrypt.h diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 7c991d0..cf74791 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -1407,6 +1407,32 @@ config X86_DIRECT_GBPAGES supports them), so don't confuse the user by printing that we have them enabled. +config ARCH_HAS_MEM_ENCRYPT + def_bool y + depends on X86 + +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..a105796 --- /dev/null +++ b/arch/x86/include/asm/mem_encrypt.h @@ -0,0 +1,30 @@ +/* + * 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 */ + +#endif /* __ASSEMBLY__ */ + +#endif /* __X86_MEM_ENCRYPT_H__ */ diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 0fbdcb6..a94a7b6 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/linux/mem_encrypt.h b/include/linux/mem_encrypt.h new file mode 100644 index 0000000..59769f7 --- /dev/null +++ b/include/linux/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 __MEM_ENCRYPT_H__ +#define __MEM_ENCRYPT_H__ + +#ifndef __ASSEMBLY__ + +#ifdef CONFIG_ARCH_HAS_MEM_ENCRYPT + +#include + +#else /* !CONFIG_ARCH_HAS_MEM_ENCRYPT */ + +#define sme_me_mask 0UL + +#endif /* CONFIG_ARCH_HAS_MEM_ENCRYPT */ + +static inline bool sme_active(void) +{ + return !!sme_me_mask; +} + +#endif /* __ASSEMBLY__ */ + +#endif /* __MEM_ENCRYPT_H__ */