From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751476AbdKUOlt (ORCPT ); Tue, 21 Nov 2017 09:41:49 -0500 Received: from mail-eopbgr10134.outbound.protection.outlook.com ([40.107.1.134]:3328 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751221AbdKUOlr (ORCPT ); Tue, 21 Nov 2017 09:41:47 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH 16/16] x86/entry/64: Move the IST stacks into cpu_entry_area To: Ingo Molnar , Andy Lutomirski Cc: X86 ML , Borislav Petkov , "linux-kernel@vger.kernel.org" , Brian Gerst , Dave Hansen , Linus Torvalds , Josh Poimboeuf References: <20171121073838.xdqtkqyajshcls6f@gmail.com> From: Andrey Ryabinin Message-ID: <216ec775-2f75-cb70-a2ef-0884603d8c18@virtuozzo.com> Date: Tue, 21 Nov 2017 17:45:06 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171121073838.xdqtkqyajshcls6f@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: VI1PR0701CA0025.eurprd07.prod.outlook.com (2603:10a6:800:90::11) To VI1PR08MB2832.eurprd08.prod.outlook.com (2603:10a6:802:25::31) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a8c29ec1-26ae-4814-0ab6-08d530edfc9b X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603258);SRVR:VI1PR08MB2832; X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB2832;3:Urd9CVcedVIodnlNaozGORZ09FIpsjanbh4OFGBnSd8d/TP6Ailh+l+YGVmPDRFyb75cX96RpxvytMWiaZX+CqovtZYmJBY+g2PYAPMY34LiBktk2sxIKMg2bDel8m413yZCzoEZC0GN+8oyM3O/5EVqwcUwChjbZhCKpmcGogfA2S8NT3TLbRbhontaa5/HDu3mHH6+n5AUiR4Xa4KXz7lI2tuVsP/C+g4oarLyzduEzr10IvmgO9k9qEKtNAOv;25:6becZ4xQORRBd8WQ9n5qHPsII2S95jSBXXdyGZD3hk7/Q18u0foThch7iCq1JUTqGn4aOVd1wDiYu5Y4Thzg9IWZhkeIo2D6iMPQjgfmllZZCOBH6qwJ5Tb56NSj8hKm3lmYaz2K3fyfCgfShdZc/NnAuKfAkHEnritluyXOjupL13Kt2Jpukbqs+3pso5u+d36dxqvc3RZb0zgXdcrOab2upjr8NuwwSdTTMsUDSma12vBQcxY7o0agq/N9nCD2CoW9EFf7omPvIAbaH7jUp3G1+PsZSTMig1IM4bH2H9cY73ZSdILk0DBFlRWjPxL3h8dvCTSpPYxHs8Hldck+Tg==;31:pN+Ff3KKG+KW2df4NNSnDCSj2VzJmg3Ufl8odwemzd5LzpH2ZOiugskN6nUJHmS544ApIUyTQd01knwRYh6uttrPK+JrNF0DghaYiVRTWaUwOPHJupG/tCOTfbRttozk8jCQsgBcfgMSOnsia/eCk8RQS5CIJWTjjqZ70Ble12yFWgiZS3eTroF9NgDkhYCnYQIFmkJG65A+1e0XF1NUq5Bqh8PQn9KvB0AmBB/phgk= X-MS-TrafficTypeDiagnostic: VI1PR08MB2832: X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB2832;20:9HZEq829xTmfxqNYmEXCQuZI28mGXuzz4JVVgnRyMST5fy1hzI0Lam9mvgvtfF3kXEdTxt54QaigcsJCyHtMiOgtZVJEhY5jNHAOLGomxhJyBFC9NXnfcl+tKlCmnpCEkZu2HRrRa42dc4ToWStMfLrBYUwKJto0UMkNBrwBRLZQBy3aGiFlzrPYPHGiKSiKc/i1MBODLSCNS3sJF3CEy88Q5dow/6yxPX77mcNdCxHE032OGX4MfNXQzpbVahuA6A09/C3zNtuV8zDzZJE4NVy8HxZtaourFejgn8fPE+ZTO02AsJ3YQaIlczQJXNxLdMBcJkXHydVMApga/nyNr9w/9LNSstOEMNJuyPhu9wAtmNzBVpk0KvVY+xSz0qotZ78q6CpGN0CJMs3tfq+OkBnrMyw4XMs8YRupKeQ8GYc=;4:YjszLEEYyqzgTC+dJDvkmWI9+rLN1MbBhO/v9vDjJfmvVylVNPO72UkmcTnfKqAkxbBuyGmc80opWJUFn6aRWdPXKfxWf4VKv3dC+RAGf0iGzAjJlud8lb7qH6PVfXvVBphZyg4Y0OzsRQG7v5fS4Tz7Awz0MDUMX8jnF6pHpv0PAtdd0rtgLvJPexjRzh/wVKZwZIQZju4Ugkpy3ISNXefnK3lsbOJ9+GIm5Chh41Fs/zdUKW46DrgYZVx2sKJyYRKVlno+kGBI5yElo6cYxA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231022)(100000703101)(100105400095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123560025)(20161123564025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR08MB2832;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR08MB2832; X-Forefront-PRVS: 049897979A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(6049001)(346002)(376002)(189002)(199003)(24454002)(54906003)(5660300001)(65826007)(4326008)(8936002)(31696002)(575784001)(86362001)(229853002)(2950100002)(6666003)(189998001)(316002)(64126003)(50466002)(16576012)(305945005)(39060400002)(7736002)(23676003)(8676002)(110136005)(81156014)(58126008)(6116002)(81166006)(97736004)(3846002)(55236003)(105586002)(54356999)(53546010)(50986999)(31686004)(6246003)(101416001)(53936002)(106356001)(16526018)(83506002)(68736007)(76176999)(47776003)(65956001)(65806001)(6486002)(66066001)(478600001)(77096006)(33646002)(2906002)(25786009)(2870700001)(36756003);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR08MB2832;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4TUIyODMyOzIzOlA1M0pYOEh1NWdNbmNYbzlOSVJuWlE3Sjlr?= =?utf-8?B?QVpkU2FHcjNqOGU0S0Y3dGJwellxRGx3Q0lBdTlXQi9samZiSy9TYXlIMC83?= =?utf-8?B?OWZ4Nk53NnJDVFNkc2w4QnRqVlI4M3cwTTdLZVhjKy90OWxyWi9uK1RTd3hQ?= =?utf-8?B?T3RLRndsYzFYbEhwa3ozZlU1V2pqMTQ5YkZXWEc4bnJxaHpLellNU0syTkg3?= =?utf-8?B?RUNVY3c1cXlHMWw4Z05mTndxRTRlSUZYUXE4MVZ5ZDZmMFlkcVVtVi9CWnpi?= =?utf-8?B?MGlHSkNmTmpvRXVzclB3NFcrYWRnZnVrK0tXVkt5Y2V3VVR2QUIrTWtySlov?= =?utf-8?B?Nnp4NENndzJ0aGlwRHZOT0NxNEpuY0JhTDRmUjlpU3QvMG9sdFNURGt3UGdW?= =?utf-8?B?QmVvYzFnS2JpYUZOcWZCSEZWRW1qSUZRa05NNlJleXJxM01rK1NwS0UxWWRJ?= =?utf-8?B?OTR0MlF4Z3lwcnN3R09JT3R1dTV4SUppT0JiYjJPNGczaE9uVnEvZXh4TENo?= =?utf-8?B?aXQ4emxxZDhVRmhtSW9oZFpubkgvd0lTNlhFK1RXOEpSTHpIY3o2M2IzNk9t?= =?utf-8?B?ZWJRL1l1NzZGdHp0alJCMEdIdVlvRmJ5RUZneVIyd1VIWEQwbk9zL3BFWVFu?= =?utf-8?B?cXJmaGhqQ29yK0M2N2E0YS9pbzE5OG5xUlBBT1Ywd0xJMVJzY3NXQU01K1BW?= =?utf-8?B?TitRZmVXZnZkSGsyQldGT3VDTHNzMjZOa2RrTXVuMWo5VjltNWFWS0o1aHE1?= =?utf-8?B?WVpweFRNb1NZWStPZjd3ZlJWSFVZcGtEZWloYWxSN3FFNHVsUTFManZ5ZkxZ?= =?utf-8?B?d014NVQ0Yys1VTY5QmQ0ZFNUVGlCcDdlZUU2Uk16SlBpbndSU3I0emcyMUpH?= =?utf-8?B?K1FPU255YTM5cC9GSVBKdmgyTUttNExJNHVNdDROTzVTTzNTdUE2aE5iZFI1?= =?utf-8?B?QkwyU0p3Z0hhckhuaHR6ckJQLzN2SG5wck5jL3NFR0Y0SGtSc3VxL0xScnh1?= =?utf-8?B?cDF5NFNPSkoxN05La3kyWitJc1dIcWxHOEFMN2xvTE9iT1ovWTI4bVRMUUtJ?= =?utf-8?B?U1JPd01GbWprZ2xEUUpqTDBwT201NjJ2VmY3dnhHTXVydWVHVE0zQnkyTUpZ?= =?utf-8?B?dnJkdVhucndOdXQvNWxFRno2NTBsK0Q2V1BGVFRDR1pRVHNya0N4WEFTYU5n?= =?utf-8?B?Q0FXcEc2Y3dhNnVIeTZaaFNpbk5WSmZEOU1NeENnOWNrSjExUkNuNmF0d00y?= =?utf-8?B?dkZpYWVPSmZLTVQ1R0FUYnVDdTdqbmovTlArTXY4T1Bta0dCMGJOeDlCdXhS?= =?utf-8?B?VjkvOTNPeFBJbWRFR3g5Zk5jMDhsb3ZRdHJxazJCY1FXQVBrS1RJUmJxSTl4?= =?utf-8?B?alRZYUo2Z1hXSXVmNFBVRHl5VXM5blM0eVVIb2RwSjJRWS9sR0I0R3FSbTRC?= =?utf-8?B?cHlIVEN3b1MrRjRCNCtrbE9EVUhXYWlXRmozWVNRaEo1K2hiczZhNTJOcjl3?= =?utf-8?B?MHRDdXZFcU9jMmtWWVBwSVVPL0RQSWtIQXhkbjM1Z3E1eTFYeHptancydlpQ?= =?utf-8?B?SnBkbFZsTnZBZi8xQ3MxZ1RlU2FOV1F2SElYbzZhL3ZWL2tNekRGRW8yTlVa?= =?utf-8?B?Z0paT3haR0d0MnkzZGY5c3FKbWJUUWxTNytDbWRnWFJYYlIwRkl3UnF2bmhW?= =?utf-8?B?YVhvc3BPTHp0aElEaUhQaXAwc0d3UjVjMTVLQ1BHTjhwNXJ6WmlHdHNON29k?= =?utf-8?B?dEl4TVdiMkpURXozbDErZVE0bFJkNHc4ZlBFNE9XR1ZIVlBXTGkxUVA4dlor?= =?utf-8?B?UHVOSHFVZmJnTFdyZW83V1NZZWZCTnNMYlRGZkh6UXp4cGJCam91c3dXSFNo?= =?utf-8?B?YUNzQVpYdDd5ODdnZXZ4N2lMUGhQZ2hqc3JiOTZHRkxIaFh0eTlCMHZQS3Fi?= =?utf-8?B?NE8yQmk0Qml3PT0=?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB2832;6:k8eH2YbGsu6/e2Z6JBgm/HEogNZapURdCE9pscafeNIN2x9UmQ8hbo123hUuIqbJOEm0ABiZLkzi9l6zEiFjjnHnw8l6QYoN01KnUvFV7N8OkXGVL/F92oNB//UxTOg7egtBNpfA6l/xorMTu83im0WbOKGWzWAwif2R/oxjdZOZxGwodEYsK7gO0Hw0g2Baz9siPIotaOZu/t9AlLwFwI3tGxtPr1LKQ1yIFmdfd0Pjdg58bETB8kNixZMKH/uuFDUUl3Icko6pZuIeSnRt9UQ0DK0toN9sfRbE54nOomlrfalvQslloqGj3dYfcC8/4dtmiov58CUUXVbdkmiOGlsfl3Gs4To3PvVJfNHIEbo=;5:ZeR5O0ft8uMF7lt780Hg8oVZJ6sAyq2MM3iFZzHac9Y9bx9cg+dm7lUo7hY5oHrbr74e3MfuLamAU5PxDZPp5wJg5h4MCQG1GDqGNmfYXWHUNoZRA4cm1wXFF6YSqTb9CWMACh/wCS2o1DT30fTOVECFB2YOrDwxHYS4pH75sus=;24:YMb8ixRz351/IUJ81QcSjA6KikenSxacGwXL3yS+UjVc7ysBCq5VXSeZVPow5mIIGs6o7at+sA3tLr06c0Lu1yIqvDuKdS5CGfCvOeJAjTo=;7:UGCKUdiltR03gVmtMdPX0Z5IqpWgJDDcngn1yDzScrihfCC4qCAKznpHzlIX8Mqtlhq1wZ+JSCykoW80l5gpPS0OsH7qzdkJbBUU8E4h7d6Rlvly9A/9+Vs9Cc1GvdR8A3MIXDZkK+KrEvQX9El+nIbCYO0xuVs/Cb8HQdNttmFVqPvsMnzcIcQWbvjQwMW2gE0CcNl1NfNWomeDoJKXD1PY0j5+gtTQDmZ7B2UW/myINoTE4TNN3W0BgM3bkP1Z SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB2832;20:PUss/J81oScFxLxTbWPuyGTylDIpjVo71wAc0VjDzJI9uk3V7ySCvNIWw2aq7SirqpqCPjQPvUAvDbeiDezfL1ppnhhtUmOW4U7HBf4h/qSVTCILdf7Iv04aydYBK49ZL+QxMC2YrTkk4jcXf+UaUuQY6H+Aci3RWwudK3qWWHY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2017 14:41:43.9476 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a8c29ec1-26ae-4814-0ab6-08d530edfc9b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB2832 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/21/2017 10:38 AM, Ingo Molnar wrote: > > * Andy Lutomirski wrote: > >> /* May not be marked __init: used by software suspend */ >> void syscall_init(void) >> { >> @@ -1627,7 +1637,7 @@ void cpu_init(void) >> * set up and load the per-CPU TSS >> */ >> if (!oist->ist[0]) { >> - char *estacks = per_cpu(exception_stacks, cpu); >> + char *estacks = get_cpu_entry_area(cpu)->exception_stacks; >> >> for (v = 0; v < N_EXCEPTION_STACKS; v++) { >> estacks += exception_stack_sizes[v]; > > This generates a new build warning: > > /home/mingo/tip/arch/x86/kernel/cpu/common.c: In function ‘syscall_init’: > /home/mingo/tip/arch/x86/kernel/cpu/common.c:1443:6: warning: unused variable ‘cpu’ [-Wunused-variable] > int cpu = smp_processor_id(); > > because 'cpu' is now unused in the !CONFIG_IA32_EMULATION part. > > The naive fix is something like the patch below, untested. > > Thanks, > > Ingo > > arch/x86/kernel/cpu/common.c | 30 ++++++++++++++++-------------- > 1 file changed, 16 insertions(+), 14 deletions(-) > > diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c > index c7f3a0a19dce..557bad9f4179 100644 > --- a/arch/x86/kernel/cpu/common.c > +++ b/arch/x86/kernel/cpu/common.c > @@ -1440,24 +1440,26 @@ void syscall_init(void) > extern char _entry_trampoline[]; > extern char entry_SYSCALL_64_trampoline[]; > > - int cpu = smp_processor_id(); > - > wrmsr(MSR_STAR, 0, (__USER32_CS << 16) | __KERNEL_CS); > wrmsrl(MSR_LSTAR, (unsigned long)get_cpu_entry_area(smp_processor_id())->entry_trampoline + (entry_SYSCALL_64_trampoline - _entry_trampoline)); It would be better to use 'cpu' variable here ^^^^^^^^^^^^^^^^^ > > #ifdef CONFIG_IA32_EMULATION > - wrmsrl(MSR_CSTAR, (unsigned long)entry_SYSCALL_compat); > - /* > - * This only works on Intel CPUs. > - * On AMD CPUs these MSRs are 32-bit, CPU truncates MSR_IA32_SYSENTER_EIP. > - * This does not cause SYSENTER to jump to the wrong location, because > - * AMD doesn't allow SYSENTER in long mode (either 32- or 64-bit). > - */ > - wrmsrl_safe(MSR_IA32_SYSENTER_CS, (u64)__KERNEL_CS); > - wrmsrl_safe(MSR_IA32_SYSENTER_ESP, > - (unsigned long)&get_cpu_entry_area(cpu)->tss + > - offsetofend(struct tss_struct, SYSENTER_stack)); > - wrmsrl_safe(MSR_IA32_SYSENTER_EIP, (u64)entry_SYSENTER_compat); > + { > + int cpu = smp_processor_id(); > + > + wrmsrl(MSR_CSTAR, (unsigned long)entry_SYSCALL_compat); > + /* > + * This only works on Intel CPUs. > + * On AMD CPUs these MSRs are 32-bit, CPU truncates MSR_IA32_SYSENTER_EIP. > + * This does not cause SYSENTER to jump to the wrong location, because > + * AMD doesn't allow SYSENTER in long mode (either 32- or 64-bit). > + */ > + wrmsrl_safe(MSR_IA32_SYSENTER_CS, (u64)__KERNEL_CS); > + wrmsrl_safe(MSR_IA32_SYSENTER_ESP, > + (unsigned long)&get_cpu_entry_area(cpu)->tss + > + offsetofend(struct tss_struct, SYSENTER_stack)); > + wrmsrl_safe(MSR_IA32_SYSENTER_EIP, (u64)entry_SYSENTER_compat); > + } > #else > wrmsrl(MSR_CSTAR, (unsigned long)ignore_sysret); > wrmsrl_safe(MSR_IA32_SYSENTER_CS, (u64)GDT_ENTRY_INVALID_SEG); >