From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932376AbdKFUSD (ORCPT ); Mon, 6 Nov 2017 15:18:03 -0500 Received: from mail-co1nam03on0073.outbound.protection.outlook.com ([104.47.40.73]:39779 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753793AbdKFUSA (ORCPT ); Mon, 6 Nov 2017 15:18:00 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; From: Tom Lendacky Subject: [PATCH] x86/boot: Fix boot failure when SMP MP-table is based at 0 To: x86@kernel.org Cc: Peter Zijlstra , linux-kernel@vger.kernel.org, Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Thomas Gleixner , Tomeu Vizoso Date: Mon, 06 Nov 2017 14:17:53 -0600 Message-ID: <20171106201753.23059.86674.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: DM5PR10CA0004.namprd10.prod.outlook.com (10.172.33.14) To MWHPR12MB1151.namprd12.prod.outlook.com (10.169.204.15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dd697570-b52d-44b4-2479-08d5255378bd X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603249);SRVR:MWHPR12MB1151; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;3:EPUr85YytxKbCGmh7zGqxWlc4NyURxBa5qRpmbCfbniikFRNpvrMj9ODfRBSXz13QpgkdewOHFaeqc1biPjxWOQdVABEpARjFIi2dk0iDQQI9fwpu+fFiMEtgl0zkEsp8cT9wNtIZ1H8n9yZQeLNLwCCOjuhexhHOPvCkQ9Eh+2g2jg+ylPvVrwFOTcqdzS06+/4OWOxbwvTwhVBzmqjsD58SJTKA0N7cQIt7teqAAy9xiQVX1CBkfTTbGmZPRYH;25:Q0VLnRuzQIItQ1q1BaNyT1mn5RasmUOKsyXHVpjADo3cJwDr2kzaCH7ZYHlTCR96CaONokcaHDvo0JTyGpR6Mf4L9Q4+s8IwaD/5C5k9eL/2zfMFUQKy1Duuot3dYQ8PpycVlOlL8J03pdkb7B8SgOZNKYiFfaE9M4BQ1pSAz/3pUWXI4+fETMXeYoKEWrTeMsPBweBmnWNkXiOF5tLt4ISzgR1sY4hFhDKNk95A7ms2fiQ0qEGZB36IUj4fue7EjXH5bRk9kwh3UIHgQkRMfjTK8g5hbewce3eoOyLsOx/yOGOLr2iNKXo8bDu0eBEMmaIOx5qjN5MNTgqYY18fww==;31:Fe7fciWk9Joe+pFZWwxi8dxpTA9T5v3ha8+eDU1tbjI/fhl73/b2EQ0FgbTo3m9umpUOJ3n2LA22QhSC+l2u6omL+3RRGIVbCm40Lt8WgvCAG3t/eLx5+xkX7TJ+OHl+mnOWS/4BSbxmcRjiStDPdTPV6GdycTjmxIt9epzuzj8UyImoDTS90Dz5SIVdoqYIn1fbsMfu6/CyXYP9jPyOYStKJQkCVgxhwmhPIAu/Jsg= X-MS-TrafficTypeDiagnostic: MWHPR12MB1151: X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;20:2OKmsjxZROe3+fvYnQyWbz1Hip5yPuxBEDdYd3aYGgohnYtbcwPrhfSSpUcip2cLNBpSmvZp1IKmG8Qq2KzqR3ApgsHAUpsojeLI+LBJp0lPEK7/N3/DzCTocU6nJ5ZycnCLk14V+hofPwRbr5pZaUFYp4zGI/yLOqeozJ/T2Nxo7m0MJuBJ6ekWEsILKPa8rkdlWPvr2Rlfv1RNfOauCJl8sa/L6y5OdZxUx+50t7ZCQZth4PymVOw1jT55qD177MMg01uLFOWi9LyKZovz+PL2SC6e58FfAFMgCLP673kRd9YOKwfAMMouA8z1eZLJ/EY7amFQGez5p1oHajjD0EUZiCFXMLfdv6jfuDsZXzbQ+4oHhnnOShJgF1pmVfbDEPZF95wwzXf74Abnrd/VP1DIt+JE5fc6HoQTgL3q2qOucjWIY5KLxvFY4AG96T4Pm1jNJBuazRSYUkeMEHWnYTTNamxaU51KsEacF6ll44NNnAPiA8KWiSW3y1MRIU4S;4:m7tr1YafFLfGFJuvEfBzF3p6+2tw0NwaUJKdY8nUwAw08JyfihRPXM9Q6U/yg9Wx/6tXYJH1Y01KL+G7khkKnPfxtPDmcUl7VjfEv5Cyq4FXAlgz1+RmiGBRdtKGFyNTYPG7Yvysli3OcupbMJArFPtgev1B4Mo1G7Q/dhQWvrZuNigNSvuW7vVLKjuDX0LZDVZh3Auawg+pgq3N9ehbMNHDkS8xv11R+iNfCbPxCmmdfL1Zrp2B1TWcwebAF5dLt070m+MxmfbluTf/PORUJRDcYHBpwr2CAnAEOwjAG0zNsCYw8WUZNdoj1gn+kU5a X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(3231021)(10201501046)(6055026)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123562025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR12MB1151;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR12MB1151; X-Forefront-PRVS: 048396AFA0 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(39860400002)(376002)(189002)(199003)(50466002)(3846002)(1076002)(86362001)(6506006)(16526018)(6116002)(2906002)(6666003)(25786009)(83506002)(50986999)(58126008)(54906003)(101416001)(230700001)(54356999)(6916009)(4326008)(23676003)(97746001)(53936002)(189998001)(81156014)(81166006)(8936002)(103116003)(53416004)(316002)(8676002)(478600001)(55016002)(47776003)(66066001)(97736004)(2361001)(105586002)(106356001)(2351001)(9686003)(33646002)(72206003)(68736007)(7736002)(305945005)(69596002)(5660300001);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1151;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUxOzIzOkptUDdHVVlNeUhTV3VIdy9LeFNMV1pQMHBW?= =?utf-8?B?SE5SZm5ZcHpIVWtNVTdNNlplKytsazFvL2VtMDBwckU2ZDJERWRMb3B0V0NB?= =?utf-8?B?NGFGMEV0cjN4eFR1bVhINVFaajB6dGdUSHR3ckhld1hrTmh0MGFIWHNHSnlQ?= =?utf-8?B?V2dBOHFDaGg4WGh3QTYwOXNlTUxtNS91Zjk0Z1o5YzRxZnh1NCt0UXNmRFJ3?= =?utf-8?B?Q3NLK1lUbTJUSnZ4V3RzNTJ3enRGSUxIbWpYVXJYWDBDZlp2YTU3czhjQWEy?= =?utf-8?B?RlNpbmpUTEt2U1lRbUQycEhmUThKTU5JMlRqSG1LVFRBeUE4RkgvdlpuWnFr?= =?utf-8?B?dFFpQTNuUmxGRzdqVzZGcmdxN3h5Kzk2ZTFrbEUvc0V4WW1lcjAzUDFMQ2ht?= =?utf-8?B?d1hWbFkrdUM2VFdoalA5dWRETWhDL2ttaG5sM3BWTks1eXRUYlNSQkpkZ2ph?= =?utf-8?B?aU94QkJjUkZtcjRhbmZ0L3dtV3JCbmVUSS9nOGFDQ0toS1dmMjU1cWxrOEZJ?= =?utf-8?B?TU5aem1MSUlTVGtRWEM3Y2JaN2UvaitnOWYvTE85VmRBOUI0QXE1SVI5N2Uz?= =?utf-8?B?R0czaU0vNlpqUi91clJ4ZVd1YUhoM1ZmUENKQ2NCLzhqcWZXakcranNuOU1v?= =?utf-8?B?YTQvZmdlTmZzRmYwZDZZQWcxZWRWNUtpVk95V3JwNkhqRHJabzlEL1B4RG42?= =?utf-8?B?cDFlcUhEaGZlK0JoSEJ4NmJhcTlsRzVQNzFtYTlkLyt4QldvWElwUEpqRXd4?= =?utf-8?B?TGV1dDF2Y25yNEFkdkZ4R2VrNTNrbExwNzdtb0dQZzZybHFUSWhrV0E4cVd1?= =?utf-8?B?NEpRblpDUFNlM2hhcEdBY1NLMGx4T2hvNlpTY3M2Q0h6cEtKOWdwTm95U1dz?= =?utf-8?B?U0NVRjFxRXpoVzdKZS95ZmRhT0dUcTA0bEppNG8wWFFFSTU1cWRycUFvQVdE?= =?utf-8?B?ZDFmR1JOeXNwaVpyMFlOSFlUZHE2TDJKVHJBTTZpRFJmb0phMDErc2lpdjlW?= =?utf-8?B?aG42MFNlZ2NkY3ptU0tIVnhDWlFXMDg0K0RQWUJMZ2hQZHN2cHRuMDZNY0Er?= =?utf-8?B?VE9EYVFPOEZHdmlUSHhJalFSNzhRL2lrMndQMDBKek41U05mU0NvMHFERzNt?= =?utf-8?B?ZEVROW5jZkNoVXJZM3Y3LzQ3MEJCaVRrQVlLTTNNUmNMSGdFU2djRWo5RHZS?= =?utf-8?B?WjJCdVF6Z21MMjFzQTFmcitmcXV4Qk9MNVFzeU5ZaTloSnZtdnBVbUI2d2dE?= =?utf-8?B?akcrMndjVmtiUVpKYjY2NURyVHkyby9qZjEwaWkyTmtJcXNDQ245WElnaWNm?= =?utf-8?B?VXZhem1vMXJJU3Zwdm5FNllETXluZmsvMHJ1b0xYcnQzVDhwWUJNV3p0Yllw?= =?utf-8?B?S3h0Z09SOXdpTTB6ZGlKYWxaT01sMWZ1U2FTNGJYd0c2c1NjWWR2dDI5L2lX?= =?utf-8?B?eTlGTkJZclJwbVU3dk8wei92dFFLSnBhQjNXenBvWXUycUV2WEtQYXEwaUxs?= =?utf-8?B?S2RId3lMWTZZV0V6ZTg4eU1GU1duOVVRazF2RXJrQm4wWFpweEN2MWsxQ2dW?= =?utf-8?B?N3VQenVvQ1JEb05MVUlhMzRNbTNmZ296eDI1QXRHNWlsTFR0YXBGOFhkbGdW?= =?utf-8?B?S1lZbVdnNno2UlhyUHJjTXpoYU0wdnM1YVBFbXVFd05rNVZGam03enZBPT0=?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;6:vz3eq8kUC5STqtn50+rg9Zp5Pd1A/ixYgbG01TlOB9+kBB5EiN8o4DzVTbaLZ+8TXMiIPXrgYCfdL9scm/fk2poXWVLczpSTPp0X35zIqBWSwper0BvqZiK6EIGL/5yKPc6ZAxyL+DgqMaZflsXxvi74Ohyf4mKORrbIjKT3AyTabxEgFMc/TvFAEqae5R6yiA04aa8alUXBreRWh0HdSOs74X+yVXrrQhzyb+q4mQL+hAOG8qeK4HvvgVBJB12NyWfIcL2cuRltnIZC18VcrHI0tL+OK0Tepm9o3GBTEn/gewdUCDM38Xs3mrlNKNC5pPEbdtFg1ZpI9tnaE4kRNd9oaeWmh2kFcp5c4J+66mM=;5:CImzFbKQtSjaoaD3INiq3HoLjwHWleYxuQxWhRA5i9XrPFREG7Q2rPzSp9UC3ctcI52MqxesN/fL44Sfdy0JbTDpIWsp5/ayDW+pd7DU3Dp8QWmILRHtWc+CFDnTfSE8F1A5Ohiw1di4A4ZEllvxKyIKBP0UQWD/mN4CCsUtZPk=;24:loKGtd/yg+QJyaBdCfBwHZnjbwuibNV9Q/Vx6dqDOE8imynSHBwRd/3T+ZPpFS/vbij6697t76XC0SZj091H8txZaxWCaQ+b0H4tqibw/zk=;7:Pxa0E7U32h5gIAKkLCxKNiXiI9aycatwRWRE/76sAjbdAmdF/BaIULTygeZQny0VMbRLCZIBCJg6gHtNUqTuiRPg7HQG+ujRv8eFFyrZG7j3G29+aqzE5niWGeK8H7NZl55f4Ti7Cw5DHo5kwgni6IObBsvHJ2FETE3FNZ3D8yRtogSZb0QCLKux4qHL0nOsRuYDU60k6c3XL7HC8VD2JiLofGTw58yi2oQXrbcCwATAT5e9wMRJSSTV/wzIgFed SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;20:S8+Qmq15ou/dSwzHmLs8Sha+mdMk7LyfWZPKvaDIMoOAYKuDSr8Ufv6QfJg1eYoXB3OOOjbQDhxvTabuNbwmE0/TuusBDH64vWyrUxdeD3E34Inn5hBdE+9QynpVAeVzMMN7LnQBjDM3TwXfSFalmm9/djGd1ss8TgORGBz1QdzyG7WLtICH2DtS/RuuJ1nzrb74S4G4YY2TMBhGTl3iZFrOeMmcCO/CPF3RTY9RQR6hJIJRlgv261tC2unD2ZVA X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2017 20:17:57.3154 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dd697570-b52d-44b4-2479-08d5255378bd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1151 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When crosvm is used to boot a kernel as a VM, the SMP MP-table is found at physical address 0x0. This causes mpf_base to be set to 0 and a subsequent "if (!mpf_base)" check in default_get_smp_config() results in the MP-table not being parsed. Further into the boot this results in an oops when attempting a read_apic_id(). Add a boolean variable that is set to true when the MP-table is found. Use this variable for testing if the MP-table was found so that even a value of 0 for mpf_base will result in continued parsing of the MP-table. Reported-by: Tomeu Vizoso Signed-off-by: Tom Lendacky --- arch/x86/kernel/mpparse.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index 5cbb317..c3d3094 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c @@ -430,6 +430,7 @@ static inline void __init construct_default_ISA_mptable(int mpc_default_type) } static unsigned long mpf_base; +static bool mpf_found; static unsigned long __init get_mpc_size(unsigned long physptr) { @@ -503,7 +504,7 @@ void __init default_get_smp_config(unsigned int early) if (!smp_found_config) return; - if (!mpf_base) + if (!mpf_found) return; if (acpi_lapic && early) @@ -592,6 +593,7 @@ static int __init smp_scan_config(unsigned long base, unsigned long length) smp_found_config = 1; #endif mpf_base = base; + mpf_found = true; pr_info("found SMP MP-table at [mem %#010lx-%#010lx] mapped at [%p]\n", base, base + sizeof(*mpf) - 1, mpf); @@ -857,7 +859,7 @@ static int __init update_mp_table(void) if (!enable_update_mptable) return 0; - if (!mpf_base) + if (!mpf_found) return 0; mpf = early_memremap(mpf_base, sizeof(*mpf));