From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751745AbdKFXAm (ORCPT ); Mon, 6 Nov 2017 18:00:42 -0500 Received: from mail-dm3nam03on0087.outbound.protection.outlook.com ([104.47.41.87]:19257 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750888AbdKFXAj (ORCPT ); Mon, 6 Nov 2017 18:00:39 -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: "H. Peter Anvin" , x86@kernel.org Cc: Peter Zijlstra , linux-kernel@vger.kernel.org, Ingo Molnar , Borislav Petkov , Thomas Gleixner , Tomeu Vizoso References: <20171106201753.23059.86674.stgit@tlendack-t1.amdoffice.net> <17a1c480-d0aa-b272-7ca3-5dd2cf2fd7dc@amd.com> Message-ID: <669af46f-4dfb-cd1e-8639-9d94d28aec74@amd.com> Date: Mon, 6 Nov 2017 17:00:31 -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: <17a1c480-d0aa-b272-7ca3-5dd2cf2fd7dc@amd.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR10CA0014.namprd10.prod.outlook.com (10.172.33.24) To BN6PR12MB1139.namprd12.prod.outlook.com (10.168.226.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 291b84e8-21d2-43e7-b6bd-08d5256a3126 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603199);SRVR:BN6PR12MB1139; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;3:MC52krfZUy6OqnBSYDAD9m+cYSm/PB6chTWYka1cTe8eqRnIFd8f/h1r6bj5mWbDeFqt1t0Jn8taGOPxD8S67jVE3LiSIlJmWag0FRCyVxdlHvSGOypQa5DxGP4uypNyLLqwhjct/GbpeB2mz1GF0xf5GvXFadYMwaRNtYxmoC7ylQgQ31/PLqykTOXrUX1zjOw2vhmnkPT+W1x9PmdMiIYe3T5rLjdrr0PU+qv+e5ZC53368zUZ0NvizoJBAWYE;25:Jgx4CLy9oJNPnQVPZwauFvtZ1g7mhR4Gy5KKe65S29EPblDKyDyv6qihhe5mIEpdVBaycZOM6EHZKbFgQouuVr1djHj6nnRbd9srLSKp6jT24Ba9/FxEeTTVB4romxcCSpv2FD19e1RUb6FNc0TzMwXYUxYAlwAByTFMMQOBtro3n6fvwpL8yrgkyhLyTn/G5yibQHvLrEF+yghaDYMo3/fz75HfqM6qfl7R8tXHAT7Jumogf5WKdfvUbamJZ4EBk960dSKcfUU/drZUsI2UnJnonya2hQzVfXW2jmogx1BcQlgB8d3Wawp1eUC7p77aL4Y61XOxP4fzGyQiiWQWzg==;31:L9QFhNsiWPYBgbQ0Dxyo/YThzoqdRIgC/wXhbJHz2Z0x0MpKhNUDBEKLzIgMIAuILsjhOaNYLP/leXmTPGxoYIm33rWcrRFWDGiBb9Y1xFcpMjd36BqKt1HZ/YTWSaFHiI6hGfbU/rP6tqEXZpf8RrG945YB5t4wCbjqt/QoovUdWL3I3r0QcJ9uQOSTXOrXTsUsyYCJ014qGVWYEjrnX64fE+s40X6WsVoLO0AT2Ww= X-MS-TrafficTypeDiagnostic: BN6PR12MB1139: X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;20:4GNGhW+GXxaD6S5jItmSa7JxX0G+k21/jUT+cnzet8W/wYj5+G1xsfvd/ZvbSlyDiIyuUyegkiCxSXzs9ON1Pehl6DB5P1uvo2vvuXvh4R6dvsR0dBIAQZCWaDQS2REc0R2h9TxCxQBWkvgKdp8BQGEQEIlAvg/hev3gHvs+Euzq+t8qAVuov7+LP4+tNkUcTUeCgkzoJ7nx+lXVKyMdl0Det5LoxMcQJUzXZNUxMkjnJyWzOX/sRfQ4F+Pn5R5n3w3Zri0eBhkmkp5DtRwlEZKpCmh5xzX6b5Tv2Btkz6lCLP142iZPDJpQvU4EdeOtHB00UWJn/2jXHaA8uhTPbyymCvQWBGhfsjDk9wErz+DOtBjQo/SHqvAEdUrTKjWAqB0b3NU1QsHF+VAcNm/eS/b8YmYADqA0E/XCCkeWT8+hYtgLu2FZNJgjZWoR2ljFDVlAhX0VSeNfqIvCQVANW0alY3+na0d3cYuCCAI4iO0ZgVfuZ9BLNnmlYl7+crhg;4:Wrjh7jY+ZMVyWstMLTDJrT+Q4av6ObqukjLi954hm1WptKtuQZ/HRSJEEy0cNW42q81K5gZBBWXFLSmMiitqyfe1fzzSdXzR6OXbSS2Yzf/5StSdKWvRnVdSXdbtHDgyQy2Spcc+PBaVuFiW0pAIxLKmOZr9cLkUYkNuouId+eQtB2y86ix5455Q8QYJPA7WFnZ3T3V+9biwcx7y7YWgv8XxmaLvNcUW3x0x1zApVnaMvs0f5l4Po2gEYQgKitHTaLv5ZzTWzTnbPVPC+YolnEJa/9Co9OuI6JKs1XptTmhLJJsM2ftBmxmbJ6TVPDNB 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)(5005006)(8121501046)(3231021)(100000703101)(100105400095)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(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-Forefront-PRVS: 048396AFA0 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(979002)(6049001)(6009001)(39860400002)(376002)(346002)(24454002)(199003)(189002)(2870700001)(97736004)(81156014)(81166006)(8676002)(2906002)(72206003)(33646002)(47776003)(5660300001)(64126003)(65826007)(50466002)(7736002)(54906003)(53546010)(58126008)(2950100002)(6666003)(67846002)(68736007)(305945005)(23676003)(83506002)(31696002)(16526018)(8936002)(86362001)(16576012)(316002)(31686004)(6116002)(3846002)(6246003)(101416001)(106356001)(53936002)(4326008)(50986999)(3260700006)(25786009)(76176999)(105586002)(54356999)(478600001)(36756003)(189998001)(65806001)(65956001)(66066001)(229853002)(90366009)(77096006)(6486002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1139;H:[10.236.64.70];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM5OzIzOnNpYkQvemxQS1krZE9hSnNTOGxGVkZuNFRq?= =?utf-8?B?aTBCYTErQm14UDdZNVovaHFveXdEa3ZaUzB3aXRUbXh2OXUvRmxqQ0t6UXZM?= =?utf-8?B?b0lFdGlJYzZwZk5CVHNrQldsY2luM24zQTVQcHN4U1Z6aEtoNmxVK1k5QTFa?= =?utf-8?B?TUZOendBT2pQNWxlcjVHcUJNSTZQY005aEQ4RWVyenFLTHRrdVloZHRsOWdO?= =?utf-8?B?U0pRK0h3aytQRm14dUZjWEFBZDR1NUdLV0pBM1hOZ2Vuend4bUVTY083Vmpa?= =?utf-8?B?dkZQbE1LcUczd3p5cDRrY21FMlVqQ3RVU2lEU1Vmc1c5MERPMVFVR1hNZlg3?= =?utf-8?B?d2kvRkVOd2tCdFU3WnZqZWx0cnk2OFpvemFRUEhOZTJPdWhTS21vNGVlTWxa?= =?utf-8?B?b1o5bHhieXFidFljMkRsTkZIVFJocC9VaW85Y3VtNFNIL0pvQktGVHV3UTJ3?= =?utf-8?B?K2dieFpsdlV4SGtvRG15aUJPSE5oYXRNcVdYei9mUWRCT2cyVkIyN1VQc3Np?= =?utf-8?B?UnQyTTR6Wm9LRXFUNUNBc3RPeExqZmRWUzRjNzZaTnZrV1VUR09xTHZKd3V5?= =?utf-8?B?L0g5MUQ2VXlXZzhSNWdLc0lac3NkeEYvMUxXRThidkl2YjN6OUx5ZWFSQXVu?= =?utf-8?B?NzAzYjNLcGR0VCtCVDJSVzF6QkJNUmVFSld0RVBoc2xvczJOQVhLSzdUL3Rn?= =?utf-8?B?YXNzSFdxSHZMRGp0YnJ3N1NnRzVrdVdlS09UM2dVZG5aK2xqc2Zaa1hBMTM2?= =?utf-8?B?YmNFMW1HZlpMTVVrT2YyOW9oUUxQWjVLOG9rR2pHZDdRTjBsazdrRlk5S3hw?= =?utf-8?B?bDFZYzVRWVZjWkE5V2xPVlQ1K3J3ZEMybFRZOEZXbU9VeDlNUXlERWx3SG9a?= =?utf-8?B?S0lndlVkcm5VM2RhRCtwZTdpcWx3WmloN0llY3lXc2dwdTlsU2lQdGxjR1hx?= =?utf-8?B?YVZlZk9jdWl6bnk4K1ZQZC94dEwzOTM3WjU4Q3hOckNZOXhPMlJoZnV4WUJj?= =?utf-8?B?SnNUZ0pEUFRIRUQ5N2xTU1d6SVZ6ZW5DMTJTTmFNNlZpSUFNUFpiVEdjdG1s?= =?utf-8?B?WWhwYmhDamNOaGdxQ3gzSHpjTTh1d3FLWGFJT2lZZ3FzQ1BlbTlEUTV0MVRI?= =?utf-8?B?STZqNFRGWlA2K0NiQit0eGVFNU5TclQyRE83c1FoSmlQSGsyUGkvRDkxalZo?= =?utf-8?B?L2d1Ui9QZld2R3lia05yWE5mbFlhL2M0UXVSY1g1S3hlL2VkVklmeFhiQnZP?= =?utf-8?B?bkVPQTVaTlplMmZtWDczWUZCZGxFRWR1cDU4M3l3ZmtzMGRFOEZpRU13OXpL?= =?utf-8?B?N0dxYlo2cEgvTmdHMm4wZTNpeHNmTzZVVk5VMzhYY1ZCa0lRMFYzUzNQR0dG?= =?utf-8?B?N0tRaGlUMHFIdXBlSDVEdlVlWCs1YnNqakhRZUVrbVdIQVk2VFlaakRLVTh3?= =?utf-8?B?eGxwc0lPNWJDd3RZNDNJUmxPTXdnY2Mva3BuUkpHRWNuV0Y3dHZUNEJRY0R6?= =?utf-8?B?b2Y3VDlWWkh4bDBSWWIxQ2FHQU1Kc1VZVjlHMXlqSWhyMFgwYTVUQVV2SWVK?= =?utf-8?B?YlBQVWlRTVAwa285K2EwTDR5WGxqWG1iaVZxYVdWTzdISDdMWFJXRHRmcVdY?= =?utf-8?B?aUxOTTUrNHZKTnFmWUhFZmpVci9TWnJZQjM0bEh4c0dDbVFCUUdSalpnTlpn?= =?utf-8?B?aW5RN0JvWElaK2o2U1B1dnNKZkhWQ3lEQ3J5djhNSFZZVUIzaUR5eWRZVnZI?= =?utf-8?B?N2k1ZHlpVzhRNVpyODQ2OFpTNjNGN3ZtRGVkTlhTSEF5eFFaZjFIWExvam5v?= =?utf-8?B?YWlFUnpHaXRMZ2NwUHNremsyVTJ2TWQ3R21wa2l4UVJDK1lHZ2g4WVVDZ0ly?= =?utf-8?B?M1k3V2xZNnVQcTJSYkpSczhneS9RTWo0WmhKQ0dhcDRwcEdTQUpUSFB3WGt4?= =?utf-8?B?T3FFcFRpYTlQaVovaE04UHRPUGpaQTN4UENDMjljWTQ1bmFtTkUySTFHTXVz?= =?utf-8?B?ZHZrMEdXcWYrMVJ6cGtrTktXWnhFbjFwMG1pNVF4cHBkeEM4eVlFaHNVU1Qx?= =?utf-8?Q?ZyNjtrfF5h5eI2XVfb604ZXOh?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;6:XSNHlxfRuUyPVFo5yA7j1+Z8p4Y7/J7n8BDmWqm7lvQeLTfPNTlykai1605M9t9SuxULF6eltnOqK+nkSb3RzMp45R/2SKDA3r/o8m9xxcHYAzUIbHsuvBW31xoHp2aupKppGeg4VIgBmLnyPowv0UhGY7MwI7fNGT+j/PxvUm+c/RXec9BTn9+gMEluyFok6WWmq0VRrxCWEfdZ9r81vhqFrzWlOO/5K0OxaWu1vC6obXjhOTN8RStGitPJn2sztU4vovc4KQXoPudYtmJGIkSHzEvOMtZku0isc5+sdSqHtKlGriMwGbjmtch4otsgXM/adDbWrZQ6fAhQEQb31ivkmXAe9bcEOT6pmYuyA/M=;5:2kN00kbYLctl4scVVVaVR/FgJYbZw1cEdvJdmLjL1Xv750cmj3c3NnGw6rdhBC5O8RTvOjQePA2d1okRIyWDFQLA+ulTVa1og/ju/fZUaY0/qQ3bvNnVLRnAtlSyTLfENqDuGlCVmp6+0jsfJfoC+OoPvm2Wd67LFCHo4bMZRr4=;24:bSvolZE22f35hHHafW5xKdmSM1qjLWZwKNoWXVyyhEfDvqMswl+VzE63I6dda4i2PaubLZ+jekWVF+Hr8fwgaJGhjGwgxK+NirzEWXF6xB0=;7:h4N/JkQL5Gq1Yu1ME1GbgpsJxea8ESak4won+rvAn12OEFH6KSb2fxu9RGXHmtiDEw5Qhddef32hTKiqOrFuSU+tazKZJvnyPXDQG7PQQlFwotAId8rvw1wsYKxZHT3R6+PcbL9URYUFcbBYoTXjS2F7hZxxSgDfA9bZuvyEz8H+cNxfU/5x1CJqcGg8A+mBsC0WN5cRE1v3OA8qDVrEsECAJNUxLw0U4hyUQ2IpXEt0AmvvyN3obugJniIYzJFh SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;20:U+5mE4soxJ7HNc7RwWXeLJEnoS38foVAeEJLBNUcyfMk1FOKzXJopMXoL8ld7Dta1ZvMTdAMM0GLyQyvktLGXbD+XoHFZxfDrsXv3it3IJd9XyWOavltCy5a9Jg00YmCRVSj/cKNZhdtNMUtIPWNpylQrxi7zbiai6FxLzwcZ8rUaL3qzcrnDBrFzkv7HXkhJ4jqjHyNA2aiDW6S6XRvVOCFKFpJYtF/Bu5IuJJsrl2WC9KgDBN6hQ72in8w/u2l X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2017 23:00:35.6987 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 291b84e8-21d2-43e7-b6bd-08d5256a3126 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1139 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/6/2017 4:01 PM, Tom Lendacky wrote: > On 11/6/2017 3:41 PM, H. Peter Anvin wrote: >> On 11/06/17 12:17, 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 >> >> Ahem... did anyone ever tell you that this is an epicly bad idea on your >> part?  The low megabyte of physical memory has very special meaning on >> x86, and deviating from the standard use of this memory is a *very* >> dangerous thing to do, and imposing on the kernel a "fake null pointer" >> requirement that exists only for the convenience of your particular >> brokenness is not okay. >> >>     -hpa > > That was my initial thought... what was something doing down at the start > of memory.  But when I looked at default_find_smp_config() it specifically > scans the bottom 1K for a an MP-table signature. I was hoping to get some > feedback as to whether this would really be an acceptable thing to do. So > I'm good with this patch being rejected, but the change I made in > > 5997efb96756 ("x86/boot: Use memremap() to map the MPF and MPC data") > > does break something that was working before. Btw, it was working before because instead of saving off the physical address as 5997efb96756 now does, it saved off a virtual address that pointed to physical address 0 (0xffff880000000000) and used that in the conditional. Thanks, Tom > > Thanks, > Tom > >>