From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752427AbdFORnr (ORCPT ); Thu, 15 Jun 2017 13:43:47 -0400 Received: from mail-co1nam03on0055.outbound.protection.outlook.com ([104.47.40.55]:37600 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752345AbdFORnk (ORCPT ); Thu, 15 Jun 2017 13:43:40 -0400 Authentication-Results: google.com; dkim=none (message not signed) header.d=none;google.com; dmarc=none action=none header.from=amd.com; Subject: Re: [PATCH v6 30/34] x86/mm, kexec: Allow kexec to be used with SME To: Borislav Petkov Cc: 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, 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 , Larry Woodman , Brijesh Singh , Ingo Molnar , Andy Lutomirski , "H. Peter Anvin" , Andrey Ryabinin , Alexander Potapenko , Dave Young , Thomas Gleixner , Dmitry Vyukov References: <20170607191309.28645.15241.stgit@tlendack-t1.amdoffice.net> <20170607191827.28645.93989.stgit@tlendack-t1.amdoffice.net> <20170615100345.76pn5ruf6cm3ktpe@pd.tnic> From: Tom Lendacky Message-ID: <8973bfc5-9d18-f98e-4c38-6452f5d81ebe@amd.com> Date: Thu, 15 Jun 2017 12:43:13 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170615100345.76pn5ruf6cm3ktpe@pd.tnic> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR17CA0038.namprd17.prod.outlook.com (10.173.128.152) To BN6PR12MB1138.namprd12.prod.outlook.com (10.168.226.140) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN6PR12MB1138: X-MS-Office365-Filtering-Correlation-Id: 5c3b73c2-d71f-4ebf-35e5-08d4b416029a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:BN6PR12MB1138; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;3:7fuACXPwOrVeawZ91lqxhZ9obY6vE4jJF0nPUPYQ4wnDkry/FX3LP8wJfT9kwANcAixXVVoulFl0OwYoVzRZdjzbojO3q9LG76mgHwVFkqAlzAVAsvZZgxcfyOFv9ruyeGIIDlUAqvXw5dv4Mp28U8/F4lpts0rlzlAv9caz+4HWJkFlrmlAzzDt5CkF6oBAw1pm4JTIqTf6iN1Yb9EhUzJdeF33mL9QWWdtTEwBpN4UsKGdhkfzim97/i9v/qbKbRzsJ9vU+pTjzn3t+qRh+CVEWeW6fUupYJWKbC7bLCF0/U+eYhPkbfqI0IEOMmYhgJXGoPeI1wgMrLPaYNJifKf+mORkazekFPbMYxUNx7E=;25:/AofQXMZHouq6tn0Y1abou6EdaGC/jZwJrxqc8UYhUaMjrVEoiNpEvP2IbgwYfagYeSEvk+lEAQy4gFoyETXhEBR5DKcRnMlu1EFac2HqpPToICpi/DoXk7TC/ZpcSpeQU7xyridh2nBwPoSeNdS5XSULRDPcKINQLAjuNqEcl2HmhZ5onxMj4EofAuX8IWAWDoYJ5/QmXOkQzeN/yCPQy0bvlvUbDK6wL2cmS7Z5sD99/8iuZtbJZzxZAk7uuWcgDlFUgvccqGJDSHGYcNMswbKtoCAdnHvFPNy9y/7wDeZJnHLvwUkdHyugdSw/B0/NexihWgeKFovBVXVoVo46ixNPqBCQ+YYvsDgunC80ZdKE+l9rqF3ndtdNjz/njf/FfxskaBOJoafrTxZvb1je4hWs/l4H/XCu8FQn2KugvcN8WxiOfXXE6k1pu0xhhgdl7Zy+RvZGJhjzMYfpbBhieBRAVaVCoxwI1be2bvM6M8= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;31:rFUQKWxVdfhjKqfVBqXm+Wf8qn8Cer85w2WBzWPw6HHMEvly0IRFpekCFjKZU8Bvrp8AsmbD2RGnQJq9vIjFcI7aFKaCiYU88ozu/XTrtXOYh/+XEC0trd1eXmPNaliIIkf9eduiiv2lifhJpbyr6KW2LQB5Fnjyiah69U9co5Q8mbjKgGNQ4Njs9t/O80pp6/UcEyoZMX9U1Tu7YI1PRgDrPAMDcIYjOksOd29bYJ0=;20:0uqrsWBe0+bwl3dvU1JhZF2qCZNh1gPfquWwY7D0C+vgrW0JoLBf73WUut0Q8i4EQjCHYDjmtPhMjGb34Ao9ldcwp0yDcN1RhI6j2bz2i8WAmeDUXXX9MhraUxuuupV3KTYkTqzwK+76hPhh+ImciSUaYqkPNWRp+jglfMU98uKAUj2KFM9I5B3poXrZc2ycP+I3w0QnOMzECTVa4xVznzrBE8lf9iOUlczkMoaq+LUZF0uiSd4jWFnyUq2mb2EfZvPKEt7LLoGjrsxWp8MmaT2bKQsmjlO6dVX55tbwnyxjtci7B0ZQQeoMMS0J5xhaVqswgVxHpHzplVdMgNJwjG00ltIcxpvVMAsJp3uj2/I9E8+YK/GwKn5nbZTNk/aRYUgRNdpoSBABKg7ZPh06Ypj7yMXTLVeZGB3y3Bdyqm9PKNAvHwdVqg9yCmA2DQ2UR9fr2bIxP6k/IgPTL1mvmkf4S/L7SmGvW4lxJKakFWkQMLYd7nVCOnpUXm8H0ibS 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)(100000703101)(100105400095)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BN6PR12MB1138;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BN6PR12MB1138; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM4OzQ6SndSenVSV0QrZ3NOMUtsMkJ3dEl2YlNvdElN?= =?utf-8?B?QzNvTmVJc2hTK3pUZGhxdjQrN3JZb1FRY0pYdWozbEJLblhnQkpxYUxpbnNI?= =?utf-8?B?cHRxVmtXa2tjd1gwNFF4SVl1R1plUkVLS3p4RjUvaWJIVVNHODJJVVBlaW5Y?= =?utf-8?B?WlFWRWRKam5PYTZsU1NvaWhDZHhyZVpDZGJLUVpWT0tXeXp3NXd2ZFRoZHFQ?= =?utf-8?B?ZFRYRElIYnYzY3BtRGdtWEFsZkRpKzFEQnZTVDgvM0lPSCtGMlVVS2xIY1pC?= =?utf-8?B?SXNKV2I2UStWNXZnSEFmQmM2VnhKQVNYZkcxd2dTZEVrUzFkeThsU1FGWEcv?= =?utf-8?B?bGFQb3NFb093VEtJekpFTVhVV1VuVnJkUFp3akFMZlJEMkUwRjRldWNSMlc4?= =?utf-8?B?N00zaWpEdk1WUlkrUS9KbHVOVnlpS294ZklXTGdXVlZuTjVQZmxucWppSWV5?= =?utf-8?B?ZWNaR2hLcTV2SEx6VlFtcnpRTHg5Nkg0RzNobkNIYTVJTldEWDQ2SS96V29s?= =?utf-8?B?UXQxdmxkSFJnL0s2MlZnb2F2WUJ5QTRZb2dmbXFxb3BhWDZycHNnaDAyQ3dQ?= =?utf-8?B?cEhLd3AzUmVHcWtYeGVwanp6VUVrMTF6QzV2SjFsQTlTZEg3azBnUi9yeFI5?= =?utf-8?B?UkVEcDVYM2pvbmFDM1RIR2ViVG56aTc4ZGMzN2FCc3lGS1dyZzExUEo1NHF2?= =?utf-8?B?UFdBK3lBc0tvV2ZxK3VDUzkwQ3NyUmdtaStoZER1Uit3a0RHZ0U4UG1TNEtW?= =?utf-8?B?UDlQS2NQdWtSbjFYaUdCd1pqWnJEWEVZdGI1ZzNzTWx6U2Joc05nL2YwcmRF?= =?utf-8?B?WmtSb1RPQkIzeFpyTVNKVWw3KzY3NFl2VTVxTjFrK2diYWRZOCt6WFZFWmtz?= =?utf-8?B?cXFFeVBiQ2hrbSt6N0U0eU1oWU1UV1RYVUJ6TjJXcDh3NkVBM21sMTAyWnd4?= =?utf-8?B?SDBpanpnUExEeERTZGllZWYvNzdOeGxyWEVvdWxGblc0MDhjSVpSVkwrZHJ6?= =?utf-8?B?ODEyQmQyMkk3cEFWMGplUERTSkZ3dkd0YVFscXV0Z0xOQkdiaGMxMnM2Kzly?= =?utf-8?B?SVVaRkZacWNEZzFqazBzQm9jMGU5QVhrQUpVOEFzWlVRSWpRNXRFYlVnVDRq?= =?utf-8?B?RlFTTm9WemZ0dk1YOWR4M0pKcVZrd2F2WHVYb2VjZmFJQm10cUZ0OXpTUHE3?= =?utf-8?B?SlBXL0t3dE4yYnczbGgzbjVaaWpFNW0xS2hOR2FwZk5BQWVQdjMzTXRIeFN4?= =?utf-8?B?WUZXU0N1VDAvZzExb3piNG9YT01obTY0bmJLWFRHZEFyNlZWRld3UWpnTGow?= =?utf-8?B?MzJxSmtESll1N2RXblNlYU5hR3duR09IKzI3a0U3QkVMSlRKbXNoK29UL2NE?= =?utf-8?B?UDRDelFYaStDK1FoNStpQnkyVU1VLzlpc2RkaENGTm04c3hZNEVKbUxtZnRS?= =?utf-8?B?aSt4NEl4eXE4MjFsZ0lta0xkeUY3NHh3c2hZRjBMUXJTd2ZoaDNVV2tHbzdk?= =?utf-8?B?SGk4cUV3UGVQT1hXZ0pSaE85YTZ1L2Y0Z1gzM3RnLzExVVFqRGRSWFExblV4?= =?utf-8?B?UnJPc2hKVlhNWFpybFFXamc5TmlkeW1qOXIvMGUzWXd5R2JnV3NwNXIzcmNv?= =?utf-8?Q?yCNjVl4J4LZ6ROqLWZE?= X-Forefront-PRVS: 0339F89554 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39860400002)(39450400003)(39840400002)(39410400002)(39400400002)(39850400002)(43544003)(24454002)(377454003)(33646002)(2906002)(110136004)(7736002)(31686004)(229853002)(305945005)(7406005)(7416002)(77096006)(72206003)(230700001)(4001350100001)(36756003)(76176999)(50986999)(47776003)(54356999)(23676002)(31696002)(478600001)(53936002)(5660300001)(6486002)(53546009)(8676002)(6916009)(6666003)(4326008)(2950100002)(42186005)(25786009)(66066001)(3260700006)(54906002)(65806001)(50466002)(189998001)(6246003)(86362001)(64126003)(6116002)(81166006)(83506001)(3846002)(38730400002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1138;H:[10.236.64.250];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM4OzIzOmRlTmVlczNLQTVvcEllek83aVJVdnBWcVQ2?= =?utf-8?B?TlBtTGt3bmIwL0p4MjY2Qk5pdU1wM0ZFdUdMbEhlTEFyVlRYWnU0QnA4Mldz?= =?utf-8?B?UzQ5SDByb0tqSjF4TEt2R3BCcFM2cnBBVjdPY0w1WlQ2bkR4OG1QK005VGpj?= =?utf-8?B?a2NCOU5HSzJDak5aSlhuK0JGZ3dYTHdwa1EyMHlhTG9od0QxbmJwZ2dVOGF2?= =?utf-8?B?Rk8rb2piK1IyOG9aWjZwOXFUWFZIN3E4aEZzbDB0RXlhejRwRnRZckdNaEF5?= =?utf-8?B?aTJVclcvLzBZSEVVUDhWMjhmMjVEYTZmazhGNEF1eFh3UE1VMVdmaEhDRzZR?= =?utf-8?B?R3g1ZnFWbE5XdmVjenoya2dmTjZBc1hMbXNNell1ZlNnb0wrUVRERlVFWGVE?= =?utf-8?B?NE5wUTBSMjVYWHhxbHc2cnZsV04zd3k3UlZiZnRuNmJRSW4vYlRJb3FtdHZ2?= =?utf-8?B?elRvUC9jVlF3MkJwWnQwMWFTd1d4NGVYYVdmN3NvRFlIZXRseVNwMkd2VE8z?= =?utf-8?B?c0ZnUCtEbGZPNHhhTnRKejJGUk9ITTVhUUN0aDZiYnU4QjBsQSthZ2ZVcmdn?= =?utf-8?B?ZkNqMVZEZXI4SGxxTkU4VHhNTTJZUUlXdzBISWxPN1lYT0w1bGlGUWlJUU83?= =?utf-8?B?aDBiVkpVRmZFaEdIak55UkZMQnJOV3FJTHdDbk93anV2amNseGs5TDdNck9W?= =?utf-8?B?NzRiMVRuUFQ4MnFreTMxRWZwUHFIZGFxR1V2L1F5bCtGWS9WaTQ3TUQwN1Nl?= =?utf-8?B?eno2WCtuOGlFcTZ6YnF3cGM4cC8vWkZETmRwWGpUTVZRY25TQndmTjROYUsv?= =?utf-8?B?ZWlrTENIQkxOUFdPenJJOXVWbkVQUnpkMXVidGt0VVZGUUpjUXhTM3JHS0Ex?= =?utf-8?B?OXV6TStaSXZpdTRMa0RwNllHUHpndVFJckNnckkweFJYRk5pM3hQay94WFBY?= =?utf-8?B?cmp2S3JnUWtGV2JKSHlVNDJIbmV5VW5TQ2RNRUlhT2hLbzBadDA4MGw0bm5R?= =?utf-8?B?diswa1JUYU1SNGt1WlFhSHhRSHpES3h1OFR1SzR5aUljMVkzWDhvOW5rdzlO?= =?utf-8?B?TXNkWTVVMlR1QnlJQXBJUEcvTm16d3dPc0k2RFNqRXhsVE00RlVZV2E3L24v?= =?utf-8?B?emxwVWlGdktMRUl6MHpEQVBjSTRPNDB0aDViLzhTQ0tPUDdnVWhMMWNqK3Vq?= =?utf-8?B?UzZKblNrcGlockgrRDFMamxBUGhBcnhWcjZkZmQrc2Rha1BWYmtocUdNN0d3?= =?utf-8?B?QTFmNnVBaXgxdjFNOFVhUTRqVlJMUDNBUUZLRmJhMlZOcXVod0huVS92V3RT?= =?utf-8?B?WW12blV3UVJxMHQxbGxmejRYUWx1eFFWaFlHUXo1TGxtWnFTcGxIUy9oUWty?= =?utf-8?B?MDBqUkVXdkk1YytUaUxNcEpsVldpdlJrdHU1enFEcmdiMW5VWFhibG5xYytr?= =?utf-8?B?WmZOMW16V2NKeGRzWjN5Um5KbzVFaG0xOWtMcytmcSs5VTFJZ2ZKTVRlVWNH?= =?utf-8?B?SU9GRWdGcVB4czcyT1J6cnJlT0pOWGROcGRLT0FCV25DS1cxQUZ3Ym5vZnVn?= =?utf-8?B?eHFMVnd6cWUva1QxcHMzakZUblF6RHBSN1QrSWpReFI1TTc1dlJueFFMbEw0?= =?utf-8?B?SU1Md0RmNjBkajhyOVBrYXlWOTVlbk1LNDl4cGRiVXRTaGJ4NXowMXc1cWVF?= =?utf-8?B?YUp5ZlB6ZEVyNlI4d2pJV0ZpSkJGN2NpTkIyNXBVNU9CcG5rSWI5QUQvMnJS?= =?utf-8?B?TmJ6VnJ3UVVmZzNiS1Fka2VqdG9ZYXJxeml0ZnR4eXVtZk5vMWZEbC9Kb3Ey?= =?utf-8?B?Tm4wcVcra3FaSkRGTjRMTUlhbUM2TzN4Z2RpM2FSeFlLdGROWUtIV0ZFalhK?= =?utf-8?B?c0Fzc09PMldpSkh3MzVCUE5GUmVnc3QxSld6UXBGQ0lWYXBNTmt0V3ZOL0hH?= =?utf-8?B?L21tdGNSU29RPT0=?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;6:bR4B3PvJQJYXjaTAfRhnZjx2+I9P180njRd1N4Z9vfJM0PCE74IPsexcWbPelJP9/aQgL5kweJa5wvs4sVm5eOA/erIQG0hg8yFE5KbpwU3mS3lsO9zU0S3tYiMOJInziTye9pSqC2L0Pf/H4osb+bH7veuKPbmU/9yGI8TZgV9n+TXPKdikNLZw17JJWiUTEthm8KovSlLnjDYJlDSXhDbwif4roF2LWiPRW44iZ3uloAVAxhGd0stFPgpoz9Z0z9yod+NOtLHRX6x+LLkpQ9SIQ0bA6rHXLgmtL3pfoxA6VeOImrIC2ZbwjZzfpkUGNzRNxjQfQUcLw/XQ/6sR8Utuq+g6AIkpGoE3acRHX2T1SXxsWSt8NVpM4l9oH2uEYhWSnr1qITjVmbQueCN1PlV8RQ2cVqEAYe0aci7TK+BRi4bRy/AeZ9GkkAmYcDYfVWaayodwbMsoUFHLn9UH+12Zm+wXnVixzcAagBoS3D74cXaX//dbjSkJtHooSM9jMTS0wqMxY82yiMKs01SGJMwGYXL+5Af2E9g2ncrShwo= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;5:AHfCaq4wOlAFL/aq6AwlKP7JiKZF+ofkUhyCICVg7CeFZUbugHk1JDosxVA2ZYaTJl7fnyBHwt6tKGmKzITvGpYKTL2rj0XVEj/reKOT0oxyNHiP4bQyTQUuwIJ3XpO0VZXLcuoRnRIyjUig4UmVeSoLe3HStdlxT1HFdclRSwkE+lllvSONkk9jtjQ8UT5eWdRllEOknHehyBj+dESh09TpT2zubEtKM5cv2zGilpwO1b6w/HVJ1rCoCJU3OvfcjnoPgMerGo5HVJ3790OiL6IJgJciqeggdZzFNxXmxgdZOdzPL+oarPsZQRhGB8t9338dKmqheSJmQoYy3MsnqAjrpF8EtwnM/X0LppmNmuiNnKZVSCnDV5OgWZKExxKVOtIbJpbLT0LSdlXkjW4G+2OXBi+39Wxs8xaYKQLxaLPQxaYRWrJOHxipbjfMMIDZPIqfTRzN3f3kmRllxw/AP9FowLrjalc+XEUD6i7Q8T40QmKnOCQCZSnqqetzgTFt;24:lpwDQP+t4ncXA4Arf+cwP/WSvTxo63AdErMNhlQZyNjTeLu5BmIEQFl//thmw+c/50ajfgnGPoOnuNfRSf0QTYI5B3jVOmoEsQFrezixDkY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;7:re9S4tvMMk9tY0qWGx04FbvyMah899G51ybDmwU4H/yd+AvfQfiJ68MHna4KFbPFBhO54F6Cgw/DuXwDBFzX1TF0Nj2mPoxQrelcyVHcV6uezV8HJyiLOjWBBdNL7S/4ixxW8FGh8nbgZ0fI/wE9GqHDb4K+JBqBmMXdoiMrH11HSjacrm6QXiWBSACVEq6u2ZrBB7ZOvyM2T3t7wCzUqD5pDgzhxlwnHxopb5TMbLuYkbr1nt/89an2tlXFPORPmP0gJFREsC9m4Enrqqgi4ZlNSyxra6Avh/wGorjWBBM2lO9zP70m7lzfvsqMZhhvsepIxMdh2hYvBtoun9kvwg==;20:yqxCsYr2l7LuXS9q4uIdq0LoCc2XWdPF6qU75+F+dOz09FM33kxqxnBDxfjNzVQnnsbIhusrPjiSCHBMdjmE9h7qORXTvEkCVyfL/jRFbyCV9WZ2XY8s9gsb1UUEYDbxczp/UTw261HoqT8jTtJRAmNNTnsyi5FXETyuTO7yZXtq764z6qu7bBElDVKPXCoHD6NHHc/OpGxjE9ObOI7YeP4g4lj1UY/8c/lCyxU75kg7btBDn4fNyNfoTHHyEhLd X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2017 17:43:16.5773 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1138 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 6/15/2017 5:03 AM, Borislav Petkov wrote: > On Wed, Jun 07, 2017 at 02:18:27PM -0500, Tom Lendacky wrote: >> Provide support so that kexec can be used to boot a kernel when SME is >> enabled. >> >> Support is needed to allocate pages for kexec without encryption. This >> is needed in order to be able to reboot in the kernel in the same manner >> as originally booted. >> >> Additionally, when shutting down all of the CPUs we need to be sure to >> flush the caches and then halt. This is needed when booting from a state >> where SME was not active into a state where SME is active (or vice-versa). >> Without these steps, it is possible for cache lines to exist for the same >> physical location but tagged both with and without the encryption bit. This >> can cause random memory corruption when caches are flushed depending on >> which cacheline is written last. >> >> Signed-off-by: Tom Lendacky >> --- >> arch/x86/include/asm/init.h | 1 + >> arch/x86/include/asm/kexec.h | 8 ++++++++ >> arch/x86/include/asm/pgtable_types.h | 1 + >> arch/x86/kernel/machine_kexec_64.c | 35 +++++++++++++++++++++++++++++++++- >> arch/x86/kernel/process.c | 17 +++++++++++++++-- >> arch/x86/mm/ident_map.c | 12 ++++++++---- >> include/linux/kexec.h | 14 ++++++++++++++ >> kernel/kexec_core.c | 6 ++++++ >> 8 files changed, 87 insertions(+), 7 deletions(-) >> >> diff --git a/arch/x86/include/asm/init.h b/arch/x86/include/asm/init.h >> index 474eb8c..05c4aa0 100644 >> --- a/arch/x86/include/asm/init.h >> +++ b/arch/x86/include/asm/init.h >> @@ -7,6 +7,7 @@ struct x86_mapping_info { >> unsigned long page_flag; /* page flag for PMD or PUD entry */ >> unsigned long offset; /* ident mapping offset */ >> bool direct_gbpages; /* PUD level 1GB page support */ >> + unsigned long kernpg_flag; /* kernel pagetable flag override */ >> }; >> >> int kernel_ident_mapping_init(struct x86_mapping_info *info, pgd_t *pgd_page, >> diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/kexec.h >> index 70ef205..e8183ac 100644 >> --- a/arch/x86/include/asm/kexec.h >> +++ b/arch/x86/include/asm/kexec.h >> @@ -207,6 +207,14 @@ struct kexec_entry64_regs { >> uint64_t r15; >> uint64_t rip; >> }; >> + >> +extern int arch_kexec_post_alloc_pages(void *vaddr, unsigned int pages, >> + gfp_t gfp); >> +#define arch_kexec_post_alloc_pages arch_kexec_post_alloc_pages >> + >> +extern void arch_kexec_pre_free_pages(void *vaddr, unsigned int pages); >> +#define arch_kexec_pre_free_pages arch_kexec_pre_free_pages >> + >> #endif >> >> typedef void crash_vmclear_fn(void); >> diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h >> index ce8cb1c..0f326f4 100644 >> --- a/arch/x86/include/asm/pgtable_types.h >> +++ b/arch/x86/include/asm/pgtable_types.h >> @@ -213,6 +213,7 @@ enum page_cache_mode { >> #define PAGE_KERNEL __pgprot(__PAGE_KERNEL | _PAGE_ENC) >> #define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO | _PAGE_ENC) >> #define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC | _PAGE_ENC) >> +#define PAGE_KERNEL_EXEC_NOENC __pgprot(__PAGE_KERNEL_EXEC) >> #define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX | _PAGE_ENC) >> #define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE | _PAGE_ENC) >> #define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE | _PAGE_ENC) >> diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c >> index 6f5ca4e..35e069a 100644 >> --- a/arch/x86/kernel/machine_kexec_64.c >> +++ b/arch/x86/kernel/machine_kexec_64.c >> @@ -87,7 +87,7 @@ static int init_transition_pgtable(struct kimage *image, pgd_t *pgd) >> set_pmd(pmd, __pmd(__pa(pte) | _KERNPG_TABLE)); >> } >> pte = pte_offset_kernel(pmd, vaddr); >> - set_pte(pte, pfn_pte(paddr >> PAGE_SHIFT, PAGE_KERNEL_EXEC)); >> + set_pte(pte, pfn_pte(paddr >> PAGE_SHIFT, PAGE_KERNEL_EXEC_NOENC)); >> return 0; >> err: >> free_transition_pgtable(image); >> @@ -115,6 +115,7 @@ static int init_pgtable(struct kimage *image, unsigned long start_pgtable) >> .alloc_pgt_page = alloc_pgt_page, >> .context = image, >> .page_flag = __PAGE_KERNEL_LARGE_EXEC, >> + .kernpg_flag = _KERNPG_TABLE_NOENC, >> }; >> unsigned long mstart, mend; >> pgd_t *level4p; >> @@ -602,3 +603,35 @@ void arch_kexec_unprotect_crashkres(void) >> { >> kexec_mark_crashkres(false); >> } >> + >> +int arch_kexec_post_alloc_pages(void *vaddr, unsigned int pages, gfp_t gfp) >> +{ >> + int ret; >> + >> + if (sme_active()) { > > What happened to flipping the logic and saving an indentation level here? > >> + /* >> + * If SME is active we need to be sure that kexec pages are >> + * not encrypted because when we boot to the new kernel the >> + * pages won't be accessed encrypted (initially). >> + */ >> + ret = set_memory_decrypted((unsigned long)vaddr, pages); >> + if (ret) >> + return ret; >> + >> + if (gfp & __GFP_ZERO) >> + memset(vaddr, 0, pages * PAGE_SIZE); >> + } > > This is still zeroing the memory a second time. That function has missed > all my comments from last time. Hmmm... not sure what happened, I thought I made changes here. I'll take care of it. Thanks, Tom >