From patchwork Tue Jun 27 14:59:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 9812217 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0F65660351 for ; Tue, 27 Jun 2017 15:01:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F3A2728585 for ; Tue, 27 Jun 2017 15:01:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E784F22B26; Tue, 27 Jun 2017 15:01:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 87C932818A for ; Tue, 27 Jun 2017 15:01:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753035AbdF0PB1 (ORCPT ); Tue, 27 Jun 2017 11:01:27 -0400 Received: from mail-sn1nam01on0057.outbound.protection.outlook.com ([104.47.32.57]:48928 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751609AbdF0O7z (ORCPT ); Tue, 27 Jun 2017 10:59:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=gfn6shRerTVWvu7a7l6KrsYp8iQxurHZX1V52BIPgy0=; b=feDb005b8iRGvU0lC41JkU4g2wcG/3QhSi19HtYYKPua70+UTUkAhiR1ly4CzBuMoSbhqbhml9S/SPqqblPZaZUzmTuo6kotscgLKkf6wEizfzE3Qgx1AlLGPj4yrOksYvyOOQSr//50eFk9R85qirPqIAJP8BzEbqWw/Rn9wPg= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by CY4PR12MB1141.namprd12.prod.outlook.com (10.168.163.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Tue, 27 Jun 2017 14:59:50 +0000 From: Tom Lendacky Subject: [PATCH v8 20/38] x86, mpparse: Use memremap to map the mpf and mpc data 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: Tue, 27 Jun 2017 09:59:48 -0500 Message-ID: <20170627145948.15908.24705.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170627145607.15908.26571.stgit@tlendack-t1.amdoffice.net> References: <20170627145607.15908.26571.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM3PR12CA0064.namprd12.prod.outlook.com (10.161.151.32) To CY4PR12MB1141.namprd12.prod.outlook.com (10.168.163.149) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fa161968-511e-4c38-9a9a-08d4bd6d29c0 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095); SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 3:3d20bi9JIqztksuKks80HUvgucF4hOY7dmDU1pjv52xbiXl0V7pw5bchc8OU5tvR0dzOi9li8QwMrox8Zx8kmVhOaBY6jnjTs1O+bJEyjnRZGjTmR6Q3CnGDUyXeh4pFbFGea0aaqlfynSoh9CGt38ZyXS6K2JWEC14AS68d70sRZ7UkkqPND750sT6WDhMclAqWJeIb0X9SShVK6ETTLiihELo49egcniLkst29vUq6HYoHB1m6En4Kh+4WJyurIdyH5UOabUCfiqlp94ApyY1wgJ9SWsdTQreBySglWwCWcnGB7TOWiu+9y/31kZHKSS7hYFuea3FiItTCjy4vtFNM/mjsO/nFzNVfnG5HNwdhPiJZO9tXL62uIql72491wpyhl0shknyT2v1VxELARxODol8bgyW+ZiVv7IvOyzl/ZrV5dKpfhBL16U91l6mTnNOsoiyetNF12ZYBJeT24zpTux4rYCViC17TKVPsTb+5NLtMXWBsmhywXjGOIRJzJ9ykKDFnO1Ao8dUmvbnmbMnuyzMLmwtF33Xrl/TpymlOJxAOXu0WSwiA9MCoWlu4LGW8Fc3vP6KiHM7w8IEAzztMnmI8RPJ2aNb+ikKkYRyIBJVrZ5C91BwrnnHz2t3QEB2OiKib3J6CH9IsVNT9rI8e1L9ez496NWgUlOl4z954cuq1cc6VrNiz1u+whS0R4Xm4cGM6lrsVVJM8PPLSBA== X-MS-TrafficTypeDiagnostic: CY4PR12MB1141: X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 25:35pAo2aLODu973NDFKh8Yk1bWKmL2aJhaW1zoO2Y1mWk+OO3yhOFX5c7eYmjCyqziSr64+G2mG8gmatGybYqlDPEKIKSJKrvoaxtDeulsS9H3vOI/mvrgEUbu9i1R/l0q+oQCXrOFdLBICAC7rcBT8Yl14ACTR9sqVrNazRs45Fv7AdfKvAs5CtU+WE1c4Kz2YEIh47m0c9SQ+0XJ83cMLWFUHPI6ujDxn9Ewt+CNJpKRjfTnAJc03GTIwg3Qw29csc92LGc6DxnkM5NDAWbA2qKLTX0HKbY0AX/QzBEOFNa07mHJyqdrGuzCfCYKG/YsPeXQoRqJmMUwJrFFSM865eGw7M91mC5nJsEhDvFfbSyIDlwGu2zjx9tXBnQmjqgqEIjNJbInDgy369lSG0F8O64dEuWFi6NHo2wKjUWkxLTKkY4LpihDYAcwZorI8tq1/tbwcDIR9uQfgxiIyNMrLBin7aK97OEYg2kn3P1pvVyhmnOXenFn6mFyTdbkx/uoAL9GT7b9Io/POay7+sjPB2OOGfw3ZRHx3yXwBmHRir6XVKxoPRDtw8wjI9XQ+DPPJJWOZZs7A0Lbv7L6y02KSCB/59zny6KLqfqS/GauCcLmpo7a7U8Tc7lzkjfz7TEr5uzq0vapdbN5/Hx/Q+Kn4VS5qlueudr6qFXHqRJSAoQ97JAcvvNj5KCt7gjunPWwG5R1na16wy49rEQbITMVfjah2+wb3xAxs8dcavkH4BfJ40xiRwYCpfnhUCbvnhVhkkTkf0nvHxnw+VDlxf1T5oDou9xBuHqph7Cahh+03ySAMG/FFQiEtDIM8qXSIOsvUzujiboC4F/uBTdQTlx8spwvPLW/fJfPGuMEGVkPqXr/PQ4WOKFcMc043gj90vYcB65x+ySpisT3oJM6wB3DJJ5iIwxry2UUtyGfiFOc u8= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 31:EiJJFiLbLXa/8WRYe9fKakZZewcvLMj+mDS67yELKQ0dvPauuQtkC2+8SA62DtsWzkEuzLtrg2G9BPgOEhZXd6Lln8F+/aolcV0BcFT9mtyFi8LNeo5x9zj5nIJfYFSpYU2pb77XJdPUq5WU96+HWCaleRGXU8mKQ7RpzeAYJUJ8PDUmsJusww3Jp5SuwIpMogMVij6y/hM1ORzvaXrz6xx/PN0My39tnicQowFZ+tO1h6rUwSFXFRZvubqspwn9azgXFx+SMmhUCNg4svNnv8gHKvEKTng+WcAarkCL+ubtsV8fTGSRe00j1Ke4LzxwAbYCrYDNJaCIVpmqQItwuHAItuaAh2fY6ZCykNLjIUoeInFuoCok0adITEKl3YhJ6EtYRCK8deRk4721BSCN8eQBcXCu8jOgfxr/DaF+WJWBkNgxFKiHj4ZN7kleQLOH5QT5ybKxs/kSqmt/HIM/LF+6ZDyb8iS3EScgkD8b2wqRupp9duUQqOddXD4QR+gMsrugskrv49GNm5WGi2A3Y6fKlCNObNVbBLQXsjsc2HXGY+jSWpRc2Lk9ug9W+woCcqLQsMjXGXflc9wAS3xOI9dTHUTIEGBF5+PKK1ZO7UQ6WCdP6brHK0LTEsd1MnOAcbJsNcKXmw1YJl767ULNkjyILvXJhTgd/wBPfbaX1Js= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 20:oDMsuiw1N4VaSVeAc1CeNrj4iujFn10qJn1A5YYobt4j8WmgVpWXN1TCRPdCwXOS9pcYx6rHCZi+1KiMYyUma+jssRNVolue/U3ohB+pI5rfS79Cida5lk7qDiAyFlXrqQpxV4Vdu4llfu3vIQBhARRdqMtb3dT96y/tgI25d5r/5pg6kCwlwGj9JQd2Guq7DrTxHt0DsyXWzeyy07ldiWPbMy6+KtdwFdE/jFc/cOvPa7NAXkZvttIIqk84GM4FGUcvCL5W/KJeD0y85Ytcx7oFYdHzhQy9PIK5kq52zGMH36MZ0srrf2wb+AWH9XtMDru0f81AM5k0kX3TLzP/wZjuWIH3dqxqyuy5ctPYfH5SBaeU4Egvur6pbza604axQ0htaCnd12tthA78HR3uWjzcmOHS/6EMvXLKHiBNsJbZj1jMA1lJY+2oeLhXHzWxE4YluBGkwgZRDV918g1gGyrdP7UeJtFwHWtdkoAtyIjFo9VkXbtP65eMmsvUP8St X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(767451399110)(788757137089)(148574349560750)(167848164394848); 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)(10201501046)(100000703101)(100105400095)(6055026)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR12MB1141; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMTQxOzQ6T0xtOUtBYWl3ai9xOVQ0N2dUNEQ5MlF1R014?= =?utf-8?B?TTNiS0paekJJOVpLNm5JQUNiZjdXWUo5ZWE2dmkxdGhCSFlwYk9Oem5pYVNM?= =?utf-8?B?eHIwK25DWm9peG1ORm9yQkZMVkkyNCt1ckFOQysvcEttbHpnU3pzcy9rMkw2?= =?utf-8?B?bGcyL3RGK0JXN1hZYmxneWxTNitVUGxqbXVnVXpaZVltSzVuVXI3UkhYOVF1?= =?utf-8?B?U3V0ZGo5aW9vcnpJOTAwNnQ2aURmOHFUV3FuLzBYdzZnNFlZa2RGUmR0NEZB?= =?utf-8?B?aXE3bXRYMXNwcUNXQ20vT08wZkpjTFVlOTZIcTFFUUxQcjlGZGs5YnBFTHZG?= =?utf-8?B?clVsbEhmZW5EMUNGUjRaSU1uQzB5NmV5QUlMNEJMMEtGT2E1Y2ZENHpuZDBy?= =?utf-8?B?bHFxVUVnbDA4djZFY045bjZNS0xhbnpvNG5Zc3lVQ1d0M0gvc0RHbHAzUmVw?= =?utf-8?B?ZGZaYW94N2w3MytWd0NzdjBGVENvQTcrdUxLaFNDNWc4Y1BvTEVXYjUwTkh2?= =?utf-8?B?S0dld1FBZzNkZnRWVWRURTVrRGRYV3QxR0NsYmRTamRmWS94WFFmcGJONk1x?= =?utf-8?B?MENBeWU5SnhDWENWcjY0b21HcU9MNHphaHFzOXl0cHVxNUxPVTRzeE9LSHJG?= =?utf-8?B?aFlkQTVFWUZFWTJDazVKU3JCK21LeE9ma2hBb2x4aklMZTJ5TURJUG1UUWU4?= =?utf-8?B?TUZSUTNpbkJFVmp2K3JZS3ZTckdPSzdYL1pQMXpPS25ra255VVErQTdwMlJO?= =?utf-8?B?azdsNUp0NUJUK3VhSEgrUzhzSDJFSHVoaTZETXI0Z05mU0U2L1FFM3NtY0J0?= =?utf-8?B?ZWVmRDc0UTdBQ1BwNmk1ZmcwY3g2aHcySG9ncUs1Mng0MVlUZnljT0c5OVFx?= =?utf-8?B?N3dsWExIUHAwSjN5b3FxV1FFUm9xOHByKzJPSndrTlNRdmV2MVl3ZmZFUEpW?= =?utf-8?B?bWg0M2psSloxL3dNNC9JblZKSklOcWl1aERqQVNJaEhodThlMWk5MHlVWTIr?= =?utf-8?B?NXFGUS9hS043T2taeWZJaE5BUCtWOFZ5Yk1LbDdMV1IxRGVTMmszcmthZzlK?= =?utf-8?B?blJWWm9VMWNFYll6c250VVdIaEgzcjc5dS9SSG9GeFpKNHpwd2xkbGVUM1Jn?= =?utf-8?B?ZHFNL0ZrUGtZcU04d0VxRVA3OS9UaGgxSVVGMk9GaS9KQTBKTkJMN0l5VktB?= =?utf-8?B?M04xTDVadzRTQ2ZLWnlvcVJRMFN2cVpEdm5WS20wYXdxSXdmUUx3N1BhcFVQ?= =?utf-8?B?M1BTWCtzUEYwRFRPOGtSaTlRdWlrWjU1NysxM29TQ1VQY0NiRkswUDJSTDc5?= =?utf-8?B?am9VN1p1OE1MY0p2eE1uRUw3enJYQ3VUUnExSXhPN0dveXF2Q1VPNmd5bk5K?= =?utf-8?B?aVh4OHhHRzdTOUM4ZHdFTmlrbnR5Q0drZ0VyY0c4Q1hhSnlMdFZWRXBkSGpR?= =?utf-8?B?MEdkOWVPQjFJSk9ib1VLN2x1VGx4RURpQzVEOXRocmFub2cvUGk0NUd0b1Jr?= =?utf-8?B?S0FtcnA2OTZ4QmFSbklGbzRvdkROSGx1VkRZVGhXWW56VmtBakg1azRMWXZp?= =?utf-8?B?Nko1azVvMTdBSU5ITjFudVZ3dUZTUkYzNHpDc0wzNmxPeFpsSmhDMEszZFY4?= =?utf-8?B?YjVkUkVhVE9vdjU5L2RZdlBWT1Z5Z0Zya3hBZHdTOTNBcTVjMkFMVU01RXB2?= =?utf-8?B?Q1J2bk16RUQwV1IzUjNQLzJPL09GdUQxUGRPUWZaazBoSTZJWkZVS3R2WDE1?= =?utf-8?B?bndSWUNWQ3pVSjFMaU1Na3htdjRFM0svVlRQM1BOYzJrUVlNSytYTWJ4clpF?= =?utf-8?Q?1EwFs0d4HP5D?= X-Forefront-PRVS: 0351D213B3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39410400002)(39860400002)(39850400002)(39450400003)(39400400002)(39840400002)(54906002)(9686003)(2950100002)(6116002)(55016002)(83506001)(110136004)(38730400002)(2906002)(54356999)(76176999)(23676002)(53936002)(8676002)(230700001)(4001350100001)(478600001)(25786009)(50986999)(3846002)(4326008)(1076002)(189998001)(81166006)(33646002)(7736002)(103116003)(42186005)(66066001)(47776003)(50466002)(72206003)(53416004)(97746001)(5660300001)(305945005)(86362001)(7416002)(7406005)(6506006)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1141; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMTQxOzIzOktxNmM2eFg3WC83MTlTZmVMNVZSWFlKQURu?= =?utf-8?B?RTZ4WnV4cnVkRngwTVo4OXdXNXIvU0x0dStVaU1takx1K1IyUkpjWFZkS1pD?= =?utf-8?B?MW1Ub2VITEZVeDhJdnZSZThESDJ4RVFkazZQMzZzMkF3K3pMamN3Z0dqaXY5?= =?utf-8?B?eEtENEJaQ0wxNnczemdCT0t5K2djY1hBM1lUVXBrU2xwVnFuMGFoZU1UOTNX?= =?utf-8?B?amJxSzhSMzdZSkYvaTgvUmRNYWtqMVZtYmNoSGFqc3J5OUpnTDU4RUVmazUx?= =?utf-8?B?OU1NSk8wcE5mTWpLdEJ0cVFGb0hHaElOSmtPd3N1cFNEUWhmbU5DdzE1TU0z?= =?utf-8?B?WXVMbTRsQUtISkRoSzVTMGROZllaN1l6MUVxcGhNTmVXbVV4cjNQdmJ2SE81?= =?utf-8?B?dFFWMFVuZml4ZE5QYXZIRFc3b3dRcUpnTFlTMlFpR2R2TEk0TmxLdXJFTHF4?= =?utf-8?B?b2s5dEYrWG1qS25DTlFsRTVrWTUvdWlsZVl2ZURwN28xdFJVanlIWXlQQmc4?= =?utf-8?B?dE95Zk1JdlF0UmZYNFdoSmhCQWE1UnpzSVh0U2VjaUtWNTkxUy9BRTIyUTBG?= =?utf-8?B?T2FMV2hCUmxLNW5oS1pmSFhYRlBrK0lrUTlDcHNyZ2tKWElrMW1FSDdDZDVH?= =?utf-8?B?eFlSQWZEbWpLaTZua1R0TGcxV3dhNjZnbGlMNXM3UW5BaHVxRkJGcXp2MTg1?= =?utf-8?B?K1BjTCtCdklMYWdmSCs4TUtyalpiTnZyelJva0dJSGVtQ2pzaS81ZEtwWVpB?= =?utf-8?B?SHhlT0dCM0N5SlZycVBzdXFGYVV4bVhjbkhITEdCT0M5cTRsTUJQMWo3bmlv?= =?utf-8?B?d0VhSGdsQlBXY1l6YlF1NTBiQ3duQVdGUVJJWjhIaGE2RzY0aUJjTVk5MDh3?= =?utf-8?B?ZUpjYi8rZ2tmUDhKaTRkSnpLcW45Q3BxV1VTNHlSVHJ6YXdJK2F4U3p4eTgz?= =?utf-8?B?ckF1cUhtQVM2dHFwdE9XN3VMclRMVFR4MGRzNFRtcWs2QUdvckFTRVBpWGZR?= =?utf-8?B?bE14amw3Sk1LRXFrV1llT3l3elBMZ1QvMldNa1hXMmxKUFBYT2lIcE1vTUtM?= =?utf-8?B?QnFRQlVrWi9tanBVdmxkaHpETWt5bWx4Q0tzZDJBbVVkRzREWG5SV3pkRnhu?= =?utf-8?B?elozVHVMVlYzKzRrN1hYNVduMHBidGhlU1RHZXJhSDdnR1VUNDBIbDBaY0No?= =?utf-8?B?QkRTZ0o4WFdjSUVEN3ljb2t3OGdpQldESU9FVExhS09SUlByUTAwYTBEMEFJ?= =?utf-8?B?MFZhOHlFaFJtUHdFOThNbVJsYnJ2OHJqY3BoS2dyNStqOU5qZmc2eFFpWTha?= =?utf-8?B?bi80bnI5QXlzSzFmLzNMMHVlclRoSGMvcTFoaW44ODZsdnJOeGNJb0REQlBW?= =?utf-8?B?dStBRzFySmFMeTNRcWprdE0zYkV3TGprbytrSHlIQ3ByNnJwZ2hBbnN4T3Ni?= =?utf-8?B?SkVBYlhvOGZ1Qk16VW1wcVBlREtqUDJ2Ry9Ta2NlQVY1TE1OcHVKWDluM2p2?= =?utf-8?B?bTRPV0g3a0o5MVpHaURKL2F4ektpOW9TV0NSaWU3V25FVU5GRkpGVktwNEd2?= =?utf-8?B?QkZyZERtSnpqMUJkVlJEWWQ0SmZQdHRjb1cyVnNhVjAxbGtrKzc1V1cwK3Ez?= =?utf-8?B?Z3ZQVEFRbUZRekdEQ2c5V2NsK3N5clRJS0pqWnFZZ0FrUG1EZjZPSThkNm1V?= =?utf-8?Q?PLHUbwPmX3VsomXkzY=3D?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMTQxOzY6SnZ0RkYxQWxLbXUvNE0yMS84U2F6UkRhN0JM?= =?utf-8?B?TzZsdFRabFc1ZDhnaWg5UnhmeURUaGNKVjVVR3BhL3hOYWh5aXFSYnk4RWpk?= =?utf-8?B?QVRZRTRDR2laOXRCREZITEZWZ1Q0Q3Z1K0djQmUzY1hRTDh4WkFuS1g0eUVV?= =?utf-8?B?RXBmR21OdDYzN1RyRzRWQzR1YXVQbDRidnFqa2tTTkdaYnI0ZENPRVM0WGFi?= =?utf-8?B?OWQ5dkpmNFZwek9LczMya3h3VjlYaHhpb0I3K3FiSHJGRGtOTW1BakZGWTlj?= =?utf-8?B?U3JQNUMzTkZmdVV1VUZVU3BGaWpWM0xsMVp0bmJXOWdqZXdXTDZUcFZtcVg2?= =?utf-8?B?dWFDL3FwZk1DUjVjK2c5NnIya0ZVbWE2Tmg2OWRveFNMWU1iYUw2bDM4Q3Fz?= =?utf-8?B?em4zUVd0NlU5NlZaNEptaVR2ckpqRzlIdDJSQXdMVzNyME9DclJRRTJvbTJt?= =?utf-8?B?ck8va2ZIRk1ZY3NGT2t4ZHhHVjIyUlpRZzhZdG5PcWtEWDNsUzM5TVc1MlV3?= =?utf-8?B?TDcza1V3czdZVTNyS0lpS0tuQXordVhJa0VxZlUzN3Nnb3hYTVZIT1MxYmND?= =?utf-8?B?a0pLMWRSVEZJSlllQ0lIR0E1TmlxL04waEF6TXlrSWdCenpjQjNUc0lkcHJk?= =?utf-8?B?MlNNbkFTT25rc0RYdGZrTGpYS2l0QlJNRmhyZnRkbktQRlprQlkvYWFnK3Er?= =?utf-8?B?V0tIeWd3TDNHeS9HZnkyemlzUmF4MENJWGI2dGt5S1dST2RsNk9jMzVwNXBM?= =?utf-8?B?Y3ArdUdZMkhNL3VmZytwSXE5RUZDN3B6b1BNVktUSDVOL0o3YzRJdmR4U1Ji?= =?utf-8?B?eTUydHZRelltOXpQSUErSjRjcGNCNHMrR0V6d3UvTGNDZmRCMmgxWFZkTWJm?= =?utf-8?B?T05Jd2UwT256Q0xxcGJaNWpYYkNYQmFGV2xFY2pKUmVFMS9xRER6STdMWk9T?= =?utf-8?B?eE5LZjdKQVQ0UkQ3TjUwYWV3MGpnTjlsaC9MNUh4TGhkOUFhQVdBeG1hU1o1?= =?utf-8?B?c2IzQUc3QTBWN0NtU2lRcGtSUjRsSS9VZ1hsaFIvaEZRWGt4SE9HZEJRVDRj?= =?utf-8?B?c0lYZW9IN0ljOFlSTXZNck9yWkZJQW1MaEFrcVM0VWFZMjQ1OUhNWnFySVFy?= =?utf-8?B?dWNDREFTS1hkVU9qb0IwREUrOFE2RkdyT2ZxelErdXlNcTNKUDlGd1h2Wk1Q?= =?utf-8?B?WE8zRDZQNGZuTGN2NExPU3ZqYVNBaUpYWk80cmhSOEcwUFlOVTV5azNrbWJ6?= =?utf-8?B?QWR3MzVDU3dOUVVqN1NmbkowYUFmdndzQlpzdU1IWENuSkdmVU14VUpxeXE5?= =?utf-8?B?cWdWelkwOERVcFhYWUlkVWMrUmxmTmo4dURPY0RTak1JZ2htRmZscHB6ZFVP?= =?utf-8?Q?vEbF9Tj?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 5:gtig7Ggoju4of3CJOfb6eaNDyPoGnE/ZsRCZy5RSzTabtJ4DHgzIqQ8xMk4h0uVsBcDydiVIQMXihrXDVpnIGAsBc5tHw0Jjb4zMlmaQ2VIpJB4oDgN+uxKBfkddp8jS53rekmcL/Y6WHODLp56NwAbKmaLVdkljcsfHXMWpTTPmKBVmkGE1UQSruUhMuc8vrrqUuvQFmjX8o8qfEjAgF3bt4ms/E2fXcwvzVCP4iaOj+yGYVv9YxgbN8DYzuMzFWIVcn+G61Cat94wfivM7mlwn9JbWws54ENaiq/9GsLRMJY5oquXYKZ80vtVXded6L9dHUSHC8GU97clFNNqRTx1jCWfOIKHdu9LBn3bzaeUu+4Awcc8yhXzLEfX1NRVmT9aHTKzIrOhWzfJtfralO/YnpVse6y3KnVYqrPE651mhB8B/Uuoth0EDy3KjJ5zV1bIJ1NjsYkW00P5yU3uXbTEpOIyRuxnXcHYqWiUoOa3SDqrJDyTvPo6zj34ai93T; 24:vIfLMwpXeeePnbFvZvvVGuTVR9OOOGCcglb/8U/pyy6h1lMh8yd3MPRhJDJdgG7DnjO6esNzKmXUuerM559v74vOKv3PJStuR7iY9jt/Ku0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 7:YuAU2PJWB+HVZP+yW1AItW/b9sgOgIJE+eDsSlOM4wR6Vg1VgOoPmDTJu2OOclIGJWSIpqCMlLn44KqGjrcSMb+h+s9HFQsrmR7RJsRNaHnEdpatog96B2qAQCj7XOVuVCeQvOq+W/FI0i/abuyRdKVP6KTTdCe9PY04h25Dav6EOd51rQib94qCEXPaplYBEa/2M/qFAq2AAwhwK0qqDd/mlGA/QFs5mc/L1GAysSS95f4Zq3qxAYFRCSMqEZ2wk0WpEdhpOodpetsQn//GuZWEFXmajWdGvHKGemCE6WM2Q3t6C/um6TJcdovZkPLxsURkNNLBoA6YOoPRzw5PWufhhZ2MO41B6p9mYCSg8vgty25dAgK8rDd0BQLG73BXgrsMLEmS4cRFST/sGaViSAOTidC944g2d12huRq6CyqVq5BTlJDxNqVE2eFXCmUH5v3uIs+w61IxTCPld+2A0deYhptoe03SCHgNMDp+6pCBbKqc5qvqyNli+JjpFujFRbx2atYhmbg/7Di746D62rWz4XEOEcRZz4YJKd/Wmyp2YlncxMJP3cEASUhQ6aMbSyHfdJqHFGMig5KkgS0gcInZWapeNKD2DDNbkTTqv9adl+Nrqjpt803KyA9tIEUHiD5EUeCx7XIERr5EznMmu1UXMpz4P1tE+z7sBJQ/YEU+nFOFXDP8wwGKWWijtPMEOq3+L7SYwRtscQ5ptbRzRA3QzqDp17xyM+FY1rPdyHI3utPK/DTPPofQWiuOJZaEKbQWfotKxUmgRoMWOD1iAZyZNItjNC8KRtFuhY+tcaU= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 20:M0BRlMpyBRGoEhmgPtguHKaiRHU6gSoLorW8Ox3HVvFLEDMKkcyIevS/0l4N9JMaXhQPRA3FUobfpTMcVDj/3OBhfjwww9J1iMoRKxjehq6ZXI0GQHzKHmSoUvhb+R8aPyX3EcUgVnZXq6uppV9inznZFgS1bYdDp4GyGoYUUxjeU+4X3KYpFsmFNsMgbe2/pFfAD72IjU1+aZlW6jZw0EQJyfWXcoFB98H8fml3RMtFSz/CtbB55fb2CnjeSY+U X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2017 14:59:50.2218 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1141 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The SMP MP-table is built by UEFI and placed in memory in a decrypted state. These tables are accessed using a mix of early_memremap(), early_memunmap(), phys_to_virt() and virt_to_phys(). Change all accesses to use early_memremap()/early_memunmap(). This allows for proper setting of the encryption mask so that the data can be successfully accessed when SME is active. Reviewed-by: Borislav Petkov Signed-off-by: Tom Lendacky --- arch/x86/kernel/mpparse.c | 98 ++++++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 28 deletions(-) diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index fd37f39..5cbb317 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c @@ -429,7 +429,7 @@ static inline void __init construct_default_ISA_mptable(int mpc_default_type) } } -static struct mpf_intel *mpf_found; +static unsigned long mpf_base; static unsigned long __init get_mpc_size(unsigned long physptr) { @@ -451,6 +451,7 @@ static int __init check_physptr(struct mpf_intel *mpf, unsigned int early) size = get_mpc_size(mpf->physptr); mpc = early_memremap(mpf->physptr, size); + /* * Read the physical hardware table. Anything here will * override the defaults. @@ -497,12 +498,12 @@ static int __init check_physptr(struct mpf_intel *mpf, unsigned int early) */ void __init default_get_smp_config(unsigned int early) { - struct mpf_intel *mpf = mpf_found; + struct mpf_intel *mpf; if (!smp_found_config) return; - if (!mpf) + if (!mpf_base) return; if (acpi_lapic && early) @@ -515,6 +516,12 @@ void __init default_get_smp_config(unsigned int early) if (acpi_lapic && acpi_ioapic) return; + mpf = early_memremap(mpf_base, sizeof(*mpf)); + if (!mpf) { + pr_err("MPTABLE: error mapping MP table\n"); + return; + } + pr_info("Intel MultiProcessor Specification v1.%d\n", mpf->specification); #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86_32) @@ -529,7 +536,7 @@ void __init default_get_smp_config(unsigned int early) /* * Now see if we need to read further. */ - if (mpf->feature1 != 0) { + if (mpf->feature1) { if (early) { /* * local APIC has default address @@ -542,8 +549,10 @@ void __init default_get_smp_config(unsigned int early) construct_default_ISA_mptable(mpf->feature1); } else if (mpf->physptr) { - if (check_physptr(mpf, early)) + if (check_physptr(mpf, early)) { + early_memunmap(mpf, sizeof(*mpf)); return; + } } else BUG(); @@ -552,6 +561,8 @@ void __init default_get_smp_config(unsigned int early) /* * Only use the first configuration found. */ + + early_memunmap(mpf, sizeof(*mpf)); } static void __init smp_reserve_memory(struct mpf_intel *mpf) @@ -561,15 +572,16 @@ static void __init smp_reserve_memory(struct mpf_intel *mpf) static int __init smp_scan_config(unsigned long base, unsigned long length) { - unsigned int *bp = phys_to_virt(base); + unsigned int *bp; struct mpf_intel *mpf; - unsigned long mem; + int ret = 0; apic_printk(APIC_VERBOSE, "Scan for SMP in [mem %#010lx-%#010lx]\n", base, base + length - 1); BUILD_BUG_ON(sizeof(*mpf) != 16); while (length > 0) { + bp = early_memremap(base, length); mpf = (struct mpf_intel *)bp; if ((*bp == SMP_MAGIC_IDENT) && (mpf->length == 1) && @@ -579,24 +591,26 @@ static int __init smp_scan_config(unsigned long base, unsigned long length) #ifdef CONFIG_X86_LOCAL_APIC smp_found_config = 1; #endif - mpf_found = mpf; + mpf_base = base; - pr_info("found SMP MP-table at [mem %#010llx-%#010llx] mapped at [%p]\n", - (unsigned long long) virt_to_phys(mpf), - (unsigned long long) virt_to_phys(mpf) + - sizeof(*mpf) - 1, mpf); + pr_info("found SMP MP-table at [mem %#010lx-%#010lx] mapped at [%p]\n", + base, base + sizeof(*mpf) - 1, mpf); - mem = virt_to_phys(mpf); - memblock_reserve(mem, sizeof(*mpf)); + memblock_reserve(base, sizeof(*mpf)); if (mpf->physptr) smp_reserve_memory(mpf); - return 1; + ret = 1; } - bp += 4; + early_memunmap(bp, length); + + if (ret) + break; + + base += 16; length -= 16; } - return 0; + return ret; } void __init default_find_smp_config(void) @@ -838,29 +852,40 @@ static int __init update_mp_table(void) char oem[10]; struct mpf_intel *mpf; struct mpc_table *mpc, *mpc_new; + unsigned long size; if (!enable_update_mptable) return 0; - mpf = mpf_found; - if (!mpf) + if (!mpf_base) + return 0; + + mpf = early_memremap(mpf_base, sizeof(*mpf)); + if (!mpf) { + pr_err("MPTABLE: mpf early_memremap() failed\n"); return 0; + } /* * Now see if we need to go further. */ - if (mpf->feature1 != 0) - return 0; + if (mpf->feature1) + goto do_unmap_mpf; if (!mpf->physptr) - return 0; + goto do_unmap_mpf; - mpc = phys_to_virt(mpf->physptr); + size = get_mpc_size(mpf->physptr); + mpc = early_memremap(mpf->physptr, size); + if (!mpc) { + pr_err("MPTABLE: mpc early_memremap() failed\n"); + goto do_unmap_mpf; + } if (!smp_check_mpc(mpc, oem, str)) - return 0; + goto do_unmap_mpc; - pr_info("mpf: %llx\n", (u64)virt_to_phys(mpf)); + pr_info("mpf: %llx\n", (u64)mpf_base); pr_info("physptr: %x\n", mpf->physptr); if (mpc_new_phys && mpc->length > mpc_new_length) { @@ -878,21 +903,32 @@ static int __init update_mp_table(void) new = mpf_checksum((unsigned char *)mpc, mpc->length); if (old == new) { pr_info("mpc is readonly, please try alloc_mptable instead\n"); - return 0; + goto do_unmap_mpc; } pr_info("use in-position replacing\n"); } else { + mpc_new = early_memremap(mpc_new_phys, mpc_new_length); + if (!mpc_new) { + pr_err("MPTABLE: new mpc early_memremap() failed\n"); + goto do_unmap_mpc; + } mpf->physptr = mpc_new_phys; - mpc_new = phys_to_virt(mpc_new_phys); memcpy(mpc_new, mpc, mpc->length); + early_memunmap(mpc, size); mpc = mpc_new; + size = mpc_new_length; /* check if we can modify that */ if (mpc_new_phys - mpf->physptr) { struct mpf_intel *mpf_new; /* steal 16 bytes from [0, 1k) */ + mpf_new = early_memremap(0x400 - 16, sizeof(*mpf_new)); + if (!mpf_new) { + pr_err("MPTABLE: new mpf early_memremap() failed\n"); + goto do_unmap_mpc; + } pr_info("mpf new: %x\n", 0x400 - 16); - mpf_new = phys_to_virt(0x400 - 16); memcpy(mpf_new, mpf, 16); + early_memunmap(mpf, sizeof(*mpf)); mpf = mpf_new; mpf->physptr = mpc_new_phys; } @@ -909,6 +945,12 @@ static int __init update_mp_table(void) */ replace_intsrc_all(mpc, mpc_new_phys, mpc_new_length); +do_unmap_mpc: + early_memunmap(mpc, size); + +do_unmap_mpf: + early_memunmap(mpf, sizeof(*mpf)); + return 0; }