From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754174AbdKFUZp (ORCPT ); Mon, 6 Nov 2017 15:25:45 -0500 Received: from mail-dm3nam03on0056.outbound.protection.outlook.com ([104.47.41.56]:45474 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753585AbdKFUZn (ORCPT ); Mon, 6 Nov 2017 15:25:43 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Subject: Re: [PATCH] x86/boot: Fix boot failure when SMP MP-table is based at 0 From: Tom Lendacky To: x86@kernel.org Cc: Peter Zijlstra , linux-kernel@vger.kernel.org, Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Thomas Gleixner , Tomeu Vizoso References: <20171106201753.23059.86674.stgit@tlendack-t1.amdoffice.net> Message-ID: <827db6ca-89d7-0863-35ab-31059dea6bf1@amd.com> Date: Mon, 6 Nov 2017 14:25:35 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171106201753.23059.86674.stgit@tlendack-t1.amdoffice.net> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR06CA0055.namprd06.prod.outlook.com (10.168.110.145) To MWHPR12MB1151.namprd12.prod.outlook.com (10.169.204.15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 31fb1dc0-10be-45ee-4e55-08d525548c12 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:6Fr0T88nhc7xk68KceHVXdI5wGqrMB6JWM08Rc5cZcuQ4Deg3iPEaphi6lx64yHsI5YF3KbhFI1C6fTKMxq7x81/S11/+3Vqt3UinY4ts7qqjKH659G7W3Xcqet4CSS0jj1zSN6FEFflM2/L8N/jxBBkHP2+Vs7jBXYBvfL1Mr3ugQHSWIgWZCOucL8JMwxhdKkpScqWmF1K+N3+JiVQxMLTymeS1xDWEo+xb08QqY1w1hw8eeo3dTWBltybfULF;25:oLKHcelRCO8TjJa9Auj2Hz2OsxUJauXrxFaMNDH5Nelr/hzM+aZtJZKeggKrtWwF6WuuPDED+51zm7fuOa2L6y2d3ZctYDBrDZBUpCGokZ2VnodOrvi4Qb9+vXRKdiKvWQVotFFUyx8cKo5ylkqkWCP97MyfTIyGUfz+tasqbmQz0sgikSF9b0TNQAg2gBBcChpaAb2lknn5y5f+/XtPoSnDz1vLtKCeOldAfxaJ+tQ0mgs4MheAabYftTrLS46yOmmajG7p1ymQRhGvmlg9+rLMVEI0jkVJhoE0kROctu9aBQsWmEBiDFiRLstxJ8QgrPREhXhADtJo1U09MioAXg==;31:1PkTzZ8ZvgWQioQY+VuxuVQQ5ZvX91HPE7d3TlsZybuXQ7gU7wtrBUqyFt3V7nF4ixTMFZLNJGFVF8zhHKXBmIXmUTmjqrGjRS4k+9houZafRrTjPQMJhg6YCgO53mWJgprWZ17ZlLTP62XhmJn8QRrpkxnIvAFvZIQXYgtsmUABQ7mSph66BPys5RRukcWLlX01z0h9E9SmEwt3XNBjNEK8xjZuDxUvC3E/O93nDk4= X-MS-TrafficTypeDiagnostic: MWHPR12MB1151: X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;20:0ejKkcN7jTyHQLhNDtiaTMaujqTWxdC+bjerbrfXTfijwSwFfwo3ueh3/GemZfTcw1Oi/FKVCaTEEg8exusmIxLI5FbcFmm13TISU59+SVJ7ajzXapyWAu1qh5zwpImgX+uuHyh9kW43UrrORNT1Wh4FJnMktZlElrWYknphlt0RRCkAJ8mLz4BMR5f0TUfKR6CMtiPtoi0QwA2HPWSQhOAmeUGR2ipvNmOxYf2+4Cj+TKVo4E3sBPW7Pruiu9CYdZEncjzQREV53mzeVM8vt+mMjzkIesGcerflRf6DzJ1OooYkcjz/luPT4zjxi3q+HQuaHz4KiM2OJLqU7bVYipBdtYfHmePQ0X7KcvSX32WHRBfHqwzp320olsURvJnQA26Np1uhnPWC0Y47HHrxOuZrXwAKITvmfXH7cm8AFdGag5aXeP/FL/S4aHVNs0XxCrRoht7guJXmLZgBX2iXniTRCH1mBvoCXiWBlYK3YKQY7Dam6KBZWsmFd3ZlPOiq;4:H0x/qW05pbZAZOh0MuXht3ClliBSeYUp6LTUgCHH0/8H7KGaZ8b/KwPU+xYpk7qyCi/nj5Wwduq3kQeVIREEQae2YLsrp8P5oOYu1VUpq6FmLNKRju9Q6oX+lA5WtPlxyfKxrEzU2u6fITfn46ARFkMSLAkqlkZgZUsBCu97ytXPOu9LWMnRpZfI9rQHQLhp9W8+/45L5Hm3ARHLCyxuqUsBsR2kbsnyJJYvIRZrawDTLA0b0RAro5SK7U8S6aNnL2qs0nbuZQ5QCNgbo8yyPpjoGhBja6efIKcsFBbu4il/8tq2ugaIVSW5gpQpGLQ6 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)(6049001)(6009001)(346002)(39860400002)(376002)(24454002)(189002)(199003)(2950100002)(50466002)(64126003)(77096006)(3846002)(86362001)(6486002)(90366009)(16526018)(6116002)(2906002)(6666003)(36756003)(3260700006)(25786009)(83506002)(50986999)(31686004)(31696002)(6246003)(58126008)(229853002)(54906003)(101416001)(230700001)(76176999)(54356999)(6916009)(4326008)(23676003)(53936002)(189998001)(53546010)(81156014)(81166006)(8936002)(316002)(8676002)(478600001)(16576012)(47776003)(65956001)(66066001)(65806001)(97736004)(2361001)(105586002)(106356001)(2351001)(33646002)(72206003)(68736007)(7736002)(305945005)(5660300001)(65826007);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1151;H:[10.236.64.70];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUxOzIzOjJrcC9kQTNjbmpHUTEwTTFPZklFZWNHZjRN?= =?utf-8?B?RHZtMm9lY3ZRWHlsWjhRem5ObktlUmxTS096UUhZL1FkSFI3Vzd5eGxuWmdI?= =?utf-8?B?c1BIZ1c4WG5ERStTT3R4ZGRSbUFTRTBuUURxTUQzang4cEp2ZklNc3hSRHB5?= =?utf-8?B?QmlIa1JQYVJqOWVibEEwVTVNUFR1cEZnRGhFRHFWQkk5QWVUNHdqWXh3cVVv?= =?utf-8?B?SDhUZWtqRnN6QjVjaEZZQXlHUlNTa2RMWllVMjUyT3ZEcyt5bUdmS3JXQWJr?= =?utf-8?B?VWlyRzJtN1lXT1F2ekJQUWI1NkMxbmpRZUQ4WHNiMTJuZ25kVXZyWDMzbnJL?= =?utf-8?B?WWJJbm9WNVJUTWZXMFJxOTc1cnlua2xGak5zbTVYcmlHVUVndEtKOUczNDZV?= =?utf-8?B?UG9HbmVVRzRKRndPNVBsc1lsMVFmZmdhMko4elV0Y1owWkNHUCtUbFdKZHFZ?= =?utf-8?B?YTBaVkgwRmlEanloRllxVkhuUkpQODhIZllYUjRJYUFMSjJiYWwwRnJ4NHZx?= =?utf-8?B?Tlk4SFJIUEZuVXdSMHE1S2FxWjFaVVBFZVcrTzYyWjRMT2Y0amNXUCtCRDAv?= =?utf-8?B?MFZ5VEdTSTBpQ25kUnhIQXlQSTJVRy9tWjhJRy9QQU4rMWs5LzNLTFB4R1Nl?= =?utf-8?B?d2c0RndDUGJabFRjSEFWR0d2WGo2UFlyZGRQNmk0bjloL1owMzZueTByY0ZE?= =?utf-8?B?YWVBOWlOb2lhcXg1U1BkSjUydCtuUjJ6OXFzZnUvRCtZTGRlUGZ6ekxQQjZt?= =?utf-8?B?ajFjZUVQUjh1R1lpUmw0akZOVnBMUFQ5d3JhQVBxbUo3Y3B1NEJyRzlFTlF0?= =?utf-8?B?a0IwODQyUnZLaVQvNklwTGxid0pMaUtGYUZmblBrTjBadzcxb09vVW5IajBX?= =?utf-8?B?MzhibFNKTHZlcmtjU3VEVWpTdDhRSFUvbGEwUVRTQysxQURyZlBOVSttak1l?= =?utf-8?B?RkZYZXF2ck5qQnIyVEZmRG53ZzhIQlcxSlJlMll1aWZkSC9YYlZtZFpySjZs?= =?utf-8?B?MzJRZS93Njh2RElSZHBmWjV1VWk1Q0VLWUZqd1B5ZCtqTjl1ZVlTUnRkQ0tl?= =?utf-8?B?Q1MzM1FLVjJyK1RmTklMS3NnR2tmTG13Lzh6OXBQMFNhemxpcGk1eWFlRlhs?= =?utf-8?B?dzQ0MlEvN3BCL2ZCR3BjMGM5SjVyMG9VN082a0xOUFVOb0Q4c0VrclozaTA3?= =?utf-8?B?cGxkbkpvUGlqRVZHSnhTMklqdENjM0x3dXZJUDNjOEFnQmdjWURJMXU1KzA2?= =?utf-8?B?VzRtSmJUVVgrbi9IM1hOT0JKTDdYUC9SRE5GcG93blZyY2J3eXhSRUF0ZHdO?= =?utf-8?B?TlIzQ2p5YStJbm5XeEJ5Q0N2dUNQWUN6dWFzbzN3T3FmeDgwQzlnNnlDT2xu?= =?utf-8?B?L3Z1S1FhcVZEejRKYVNhcmszc3FNWURIczRQdFJLRURLWDNiT2w3QUl1OCtC?= =?utf-8?B?b1RwaU1ZWVY2OVE1bC83aVNOaFkwY2pTWExsMWg4WTJqMHUza1JnbVNaa0Vi?= =?utf-8?B?ODJrSU0wTkhEbkQ0aUExL2VSNWlLOGF4VkUwS3RLcys5VnhHcVZZQzhYS0gr?= =?utf-8?B?S2lXSU9UZHpoUVlEOWt2MzBybC9QZkIyUjhNM3h3dGNpTjNPUFF4aCtkVmVN?= =?utf-8?B?Z2JNZExIdkdSWDBWd3VpMmpSVGYwV0k2Nlp1YnFpQjAxV0hDY3J2aEt2OHN0?= =?utf-8?B?SERrMHN1cGpPaklsbW5Td1dCZHpXbTNJc3JQVU0vb003eW01L2tBRnJCQzVs?= =?utf-8?B?RHBHaW9WaHZzbUdGclUyTktWWmVnYlF3MVhiUWl1RVFGcjdwVGVOZmdBZE5j?= =?utf-8?B?SkU1K1NuT3ZvV3l3cnVuNk50RjJwR2Y1SVdWN2RHa2hoYUExbHpyWFQyaVl1?= =?utf-8?B?Rnp0Mzk3WU5WL1o0TVZUYzhQUW4wSHhLazVsNGI5clpJbk1lclJyVW93VzZw?= =?utf-8?B?dEV3L3RCUW9Cb0pvS0gyKzI3cVkwVjdPYmZOTDN5b1F3bzZlSnBFb0I4Z2JZ?= =?utf-8?Q?rYe6Pw?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;6:I1U2P1RyoR9CaZVT4j1LrwttsNWxVCbBMWnswAAvfChzF1dluxYjBl1fPZ8TgnLV1crxjg+pG0XZQXIiX3MljIkorPoA6IAbzaKMqnKf7Y/JRilfGdbrzqKM3TEU/FJEr91d3VW5//Q2VN3+uku1+/o/yzNJ/H6FaqEk+dPdOMRBSRovkMNjbUW3JJaZyuMHXt4tsupl0yzuMRqe3Yb6atXQsHSXdg+pMP9seufBKs1u5MlGPFgpoiHBSxRoRblIDriqSNwacsN7aOAz+oAJSB7lu2aShbRpSBDbg84GJsH4kaSU/jRx+PaJcf+lgU7rD1pJID+/EotnpF28Uwzk2FMIcx4IlBQzaXUB3gexIj4=;5:UJv26eg7C7pkbARfCK9X6XzYamy+kOvUuEFfRKq4HHZfyEQrmCrFzcxANz2y4zOivbKgCFxuH8zjcymG8la5LundXvA85/DAx+c9qcQFs0HbWCzqpjRROvIYOzfm8YpVMt/xWv3X9tHg+j7WxGyWO5tPS0Tm3EKmVjiN5FcjDGE=;24:bwVi6pFxAW3QCewwI/Zj4SPkkKxWN2iAENKJ6rZSNafs+TGXmDtQ//JV8G0Xi0+NAs0fdnKe7JSbfU6fBY2sKRswXwWPvXmr98e/xtHl350=;7:NeRLgs845ypgUEj1P0zmpx+FtVe8gbzbXCV3VEwXp74hl/Q82qflo7VNN+BRjRKFImDzNbJ2ljtlwZ+rGWMDKVVj9FKR0BltjANWDpAAeWjUHfu69PkblppmfHHiruJgjeaaO6YZUxP1ZEYjP/pBIbQM/cW1FDdLwVeGbRtcmxkz8D3znXWxRlIUB4bXLsVMu402Mc6wp120Sd0/8cPf3mVntxfbWBErZtseUgf/l/MVjaJ4/BR7+XVUKdLA9IMF SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;20:xpcZHfm+SeAufcMuWEp45QBiwK0KpoeKT0Bd6ZOHdDoawkfYncm6QZeBJpSCO7Mh3txdWCflEHyMEMlf/B/BhQA7IFC9a3qpBZJTxX47fy1xAZiSn7+WtP2FSsgQbbZYgcsQ6vyhKchIGZihXaGKlrXcYC0xnhPXVXsTbcrC5Dj+LcTxrSoE1U2TCoZHumgXvsoCQ23ZiskxKwgNkQZbqMQOgiYOjiKQWjjbk7UT2L9aVONnBrakq8fsFENcmSM/ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2017 20:25:39.1377 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 31fb1dc0-10be-45ee-4e55-08d525548c12 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 On 11/6/2017 2:17 PM, Tom Lendacky wrote: > 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 I forgot to add a Fixes tag. If the patch is acceptable as is, let me know if you would prefer another version with the Fixes tag or if you can add it when merged: Fixes: 5997efb96756 ("x86/boot: Use memremap() to map the MPF and MPC data") Thanks, Tom > --- > 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)); >