From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030753AbeAOObL (ORCPT + 1 other); Mon, 15 Jan 2018 09:31:11 -0500 Received: from mail-eopbgr60139.outbound.protection.outlook.com ([40.107.6.139]:7300 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934295AbeAOObF (ORCPT ); Mon, 15 Jan 2018 09:31:05 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; From: Andrey Ryabinin Subject: Re: [PATCH 4.9 84/96] x86/asm: Use register variable to get stack pointer value To: Greg Kroah-Hartman , linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org, Josh Poimboeuf , Andy Lutomirski , Linus Torvalds , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , David Woodhouse References: <20180115123404.270241256@linuxfoundation.org> <20180115123411.136933482@linuxfoundation.org> Message-ID: <18e66674-c884-b03e-f7fb-c3df111aaa0d@virtuozzo.com> Date: Mon, 15 Jan 2018 17:31:13 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <20180115123411.136933482@linuxfoundation.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR0301CA0066.eurprd03.prod.outlook.com (2603:10a6:4:54::34) To DB6PR08MB2821.eurprd08.prod.outlook.com (2603:10a6:6:1d::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 76493438-9f70-4366-3e8d-08d55c249a30 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:DB6PR08MB2821; X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;3:SeX4G1uppQN3oe9LceMnUmeOxiEnc8gVgRg6ym9AdL+x/vKi4mx5qZviTdCoT1fX3Gl53Sz2v6yufa8GtHjTLhGAGyHmAZlANaIgRy+arc+jPUzLVlHA/hgeDFDxCwl3UQZQhnWN4sNsI0S5JubmNA+JiEQWSIV9oTpBS067/gJygyCDnG+PWgd5DEdfJZrbsuUEF3YwERHwwTB/vrm4tmeWwmZw1lrVjtTxSGsVv02jaO9QUcFJbPAlAJwqM8km;25:U/sYYbntTVw6SrwQ7Uow3+f4dAbRw9mH4pERTlR4bx6FbfvWObdo/9Xz6+39QELfFjlQFOKu09OjJHprB2cwKsPmNBYJUMeQXLSpGTX66m3f8ovleNONWARajWHLYH2Vnr5O3HdDLRHlLsA9gA0Yc9obQ3OKCMWbtjYqFFjtt/YE2X0ixoD3utmGWC/g+bC9UHkn7IAmCn5/MvbLTNv/ThTE2jvejnPL6kwBY4Goug3q9sYzV5y4UWBZztLw3dW0sSCw2QArj9n2uCH9u+rMmRk8i2XhhgUSY+90t1n5FddWwB55yfDq0jFgiqfb9tsMS23C/yBW8swhbbSLw8OUYg==;31:CQRiAMvu2vIpDhnmD+V3+JND0ih5ewjQSQLl0RloW0YzaFWZvJXghbeR4KGQKfPHn0BNdUwHGK9CO4ZF53wPsX0L2kDSFkzIcwAbhIEoMaE/1QYZECOC3ML5xh5/klY5FZzMAtV7GiORNg32+wzKBCdOXWW/r5f67gbCBoKLx0AF9iuyOSdFWN2Xy9bxhhUwiZALP6B9MmbOK8mNImp1LPorbwRVN/c7XUDlMfACA3Y= X-MS-TrafficTypeDiagnostic: DB6PR08MB2821: X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;20:OOEiNccsYXA+hM3vvLV7QLMhPYeW76/EC9pL6FhTcKwZvIFzBgn4V+TudFc7arhDOPFV6bqWAtUND0wcgdJ303m3a5ObxZ52vwVsia0cN+eEzxpFmVmt0n9s5puxl1wWhllqiYQJ8QdCRCCjOZydtXD7B3p9GaYqgUQxLPH5s0EQgR19Beqwzsf6fsuhdXM6LS4cIxxGXaiDnOuOtFen9StfqTCZfdsWTUzWXvCT7MU2evST4xGCXCMr9Jg666aeCQAdqYvhm+rkTY7Jgr8+Md1axkIyeRuopT9udURpyFL44OAe8K/93X1mVhyohM2J2/Hsfzvgw7IqOcZQJwIxFzxMiO1UthM6CPvMjd877lbwIY/mK3euG5suiX6XmQHyuiqXQA7W+Pt7myHyTXersxk8HtJrJffJWEtVwcmOC+g=;4:r2DgG2c4lV5O7EL2j7evEZxYj0TUM+zeIKk3VINRgsqRTPV2Cz2T5g8mnASyTMlb+Qnde1Dfz1EjtQADCaE5jcXx+baUP+PYaqrLdC25iXFuL29+NuVboOFW+xeFgynJqX2hQkVu1kiDCm433+AX9+7wGEQsN6mi3aoZgZnjiEIeIV32/J5ofQkPYfg0YxuUaFiLyQuISUrD85brs+gxlJL2tH3ie1cW1iykPkGNzSQ8CSDDz3/76vp1DyWeypw8Ocxir2ohddUzb8GsUyWxENVOBfWSSx1b71nMg/8sHxsuykX1ppQ4JHgi7bFn2q9j X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(42068640409301); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231023)(944501161)(93006095)(93001095)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011);SRVR:DB6PR08MB2821;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DB6PR08MB2821; X-Forefront-PRVS: 0553CBB77A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(396003)(366004)(39380400002)(376002)(346002)(39840400004)(189003)(199004)(24454002)(64126003)(31696002)(6246003)(50466002)(3846002)(6666003)(47776003)(7416002)(2950100002)(5660300001)(6116002)(16526018)(58126008)(16576012)(966005)(54906003)(83506002)(2906002)(68736007)(31686004)(65826007)(316002)(230700001)(53936002)(8676002)(81166006)(81156014)(386003)(478600001)(106356001)(8936002)(305945005)(53546011)(6486002)(59450400001)(4326008)(77096006)(76176011)(86362001)(65806001)(105586002)(65956001)(25786009)(36756003)(6306002)(575784001)(2486003)(7736002)(52146003)(66066001)(52116002)(23676004)(229853002)(97736004);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR08MB2821;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4TUIyODIxOzIzOjdXbEEwTU5ialVvc0J0THI0U1hkWDQ5WXhX?= =?utf-8?B?ZlhZdkxlaEZFclJqVHhySVMrZXZrNTFXcXM0Vmw0b1l1NGJZd3ZmakpCeTJa?= =?utf-8?B?OVdZQ0w5SytOTktXSDkvTDZQVkcvRWtSSXVJNVF4NU50amdIcWwwRnlseTZD?= =?utf-8?B?dlk3TjdONXFUVVZ6WXlYMGZMZUZDR1dPQ3AzU0hXeTZJSFE1WjJmYWJDUVZh?= =?utf-8?B?Y094QXFvUEY5a0d5U2VLZndmSmNpb2ZiVURiUDI5dUlmdmZ6OWZhL1QyK09X?= =?utf-8?B?NnJPMDdnTkw3NitubkxKTUl3c1lGUmUvcDR6RDJ0V2lDd012R0MvVGhiZUJQ?= =?utf-8?B?QTNydnppWWNHRmF1L3ZZSEo4UEdxczFXTjlMNzNPT0tqVlZGT20wSnQzVDAy?= =?utf-8?B?ZTZKNUljSGtFVUpacU9tZWwrZ2pZYnUrU3JHNXMrUS9nU1ltaGlwcTNyeFpj?= =?utf-8?B?YXJKKzlDcDNMTWFwMWhhdkcwNmVlUjZLQ29SWU1EdTFtRFpSNVpQaFV2M3Bi?= =?utf-8?B?bXpjbEFRcFRpZkx2dTY0SDlkOFJ6RzlXMU1XVzBKdVExam4wWHZUWkZyY2JM?= =?utf-8?B?QlVWVncvdmplcnFMWmc3MHhSZGFNZElSYUlOQ2pwTENHZ1Q4b214LzF0NWNo?= =?utf-8?B?enh3dXVkNTZyazI3YUhTMHd2N1U2L2d1bUFVLy9JbENZWngyYjJyaENzalJM?= =?utf-8?B?T3Nyc0UwY3U3NE1wTjBXS0F0b1ErZFJkVnIvNC9kMjZLdXNhcThyc0RUQ1dK?= =?utf-8?B?RWQyVzVOOVdUU3M1aS9CSTcrRVRQYVVyRzFraUQxano0eGpYeU9pcUVMTlM3?= =?utf-8?B?aXZQUDExV2JTREdiRk5OMGhvK0xLdCtSRys1MlJKRzdUTVVNb3c3N2VnUW1v?= =?utf-8?B?ekExdVpuR2JFc1dtQlJMaXBja0o5L2NPZ2h5UzdoYm9Qd3NjRWp1U0RmTDUz?= =?utf-8?B?VG5NMlN6WFdWRDBmczhPZWJ4UWN0VFJ2WmxKejVIbjhka2FTVW9pTzlmQU00?= =?utf-8?B?TjRqVGk1cVVMQ0xOZTMvVnlTUDZJaXRQSFplYmc0T1BocTNpTFlJUEcrS2Rq?= =?utf-8?B?NVJYWU14cVhMUkVFcWo3K2J1Y0MxbFV6RTlVbjZGclZ1SXN2RnRGc2NEemQz?= =?utf-8?B?aldiNzFrNWFFOGJDbXhDcDJncWU1WWpNZ0xBTmNqR3hRcnI4K1UrT0xnay9J?= =?utf-8?B?TUNkdXJRcFZjK250YnJTT1JZbW5FUkFud2ZHNE00cDJPSW50c1Q3b1dkRmF3?= =?utf-8?B?Q0tqQjJKZHh5Z3Y2NnFkdGlTKzdlOTVTWVdYUzd5eCtuVFQ3ZzdhMVlGU2xl?= =?utf-8?B?Nk1qMDVMSWo1RlBpemlhTWhJdk1VbCt5QUt1V2R3Z09nTnJtZ3R2NlcvS3hi?= =?utf-8?B?SmtXc2xnUW5mRGlZSExWTXYyQjNoM1pFUmZuN3A1VU5SSzBvWXIxdGJ2L292?= =?utf-8?B?ZjNlWnFtV3Vyc1p3aUd4YTBIN2V0b2t5bnRzbE5QcW5yNlNjR3EyWGlaVXBx?= =?utf-8?B?eHNVNXZ5Rms5NHlTMXJySFpXa3Z1SHVzMUIvaUE5dzM2QlB3QlNhdzJMZWE3?= =?utf-8?B?YkU5U25OQ0xoVC85SFpYTTZRVkxlNWx6QVJDZW1pTW9teFZRM0tPdytYVDBB?= =?utf-8?B?T1N2Z1ZNOGhqUUwrekRkR1lKcW9IM3RDWnBlQ25zOWVHMjBBaThETmlKTTFq?= =?utf-8?B?NXlYQ1hpdC8zYXBlNmozcjZJdUN3bTNYQTRYUXZVUGp6RkVPZDNkYjFEQ1px?= =?utf-8?B?ckFiMGxKWndSbDBQRXFUMTNSNVhWZGRWM3lKQjNIUjRXcy9oazlGRVdlbEZI?= =?utf-8?B?MzluN3ZoemIwRmJWWG9JNVBBd1J2c3RhUEEwR2IwY1FJMUFpMW5LSWFWOSs1?= =?utf-8?B?bkxDdUhLTnFlYjFLK24zdFRTVjU2ZkdGaXZkMWZ2MW9vTzdPRHM2TTZrTktx?= =?utf-8?B?bm5JdG9KVm1pQXQyNERVbjhXbDhWem43M1U2RmNFV24yamJwdWI5VXl4TVZT?= =?utf-8?Q?dbw2Cq?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;6:hOlUVv2R0PdWL+Fc3ZIS0gk9FEeoRj9hqyPhEsnU6sHDEYYIcMxBFqy6oOZN4LQjGcp4Nh2fwz9mPueGyBvtupxQpwdWiOTXHjX1mIBxc9q6HeESMpYWLAVPH6y+v+QBctmHlSXuK1Zom4TBHdj/IC0dOcvOZi+3HunmpYBTkd6YcnjaJwm4xyf2JS5V5VKfGdjVFst0PMqSoWLbyunDZ+/M8JH9F02/UClLYvDwtNiXrFJphcGrqFQ9e7S0x30arnXXa8FxedYobt6LCqYuZ03L1S4ptLBJlenF0qookmR0InuqDzbe9NgQp1De0OscQw+5vjlJVRfJNRPqRxeyhtmvJ3gVPy+Iro8Onq6SJHI=;5:UT0uqAaeDUPU5E+6oPrEzqw1FLHhG5Kdo4x9PRw4RuFxZniDiXsSNrn4nNHN6UjbBXATqaBYVZ7GW6JY+vdiU2AxNNejgo+TAouaAnxQV9dby68nKZHIUV78a7a/GaF+0CcmKCnB5nK/rl2joBoYjwmJHtt9ooekECS2Q7hrV6I=;24:Jdb3G71g6FmJi1U15w74MAE5tcxA3Y/HS3j4rdcMXqlrLLdf5CQviOomOcke1Qkk3KBAWvce2iKvbbluJ2o2T6yE+CmGJwuP8/4KEby8TGo=;7:SfQkyCHN5086DeEPBbvtjVd9zwi9slkBuXIkkVfpp7+4JM7c5PbkSS3TOoP4hp8fT50OYSlkScz3S/+n85791N7ZoBJDxMnDsaWU3oleYS7XdKVFxPLVyhkRfLhEGhfeAqdw0OPOY+kYgTRWc5I42KG7HvE7QLSg/3B4X6xLypshoGdnQzePf+9ObUaTuqevDWE6pOdWlRDfYpK9MiEvQY7mab8W0GsARJx+C0uVURHeN41wKgQ/YJ529ToFBQh+ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2821;20:B/mS4Z8eOwjj0jNlJxFwGtAxjLhzJBEd7idGdOWzR3YKZQpIg6bm+/KPqOvAav3Yzfy9+Nm8vIhvRdkmpkxzFugTgZb9gn3r8i5zufQHyAUQePd2HPxMp4/8y0IdKTxS0XPy/Xmvr4zrAnwGu+zHZIH7zihO12eqGlxMo3bb7iI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2018 14:31:01.0724 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 76493438-9f70-4366-3e8d-08d55c249a30 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2821 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: On 01/15/2018 03:35 PM, Greg Kroah-Hartman wrote: > 4.9-stable review patch. If anyone has any objections, please let me know. > > ------------------ > > From: Andrey Ryabinin > > commit 196bd485ee4f03ce4c690bfcf38138abfcd0a4bc upstream. > > Currently we use current_stack_pointer() function to get the value > of the stack pointer register. Since commit: > > f5caf621ee35 ("x86/asm: Fix inline asm call constraints for Clang") > > ... we have a stack register variable declared. It can be used instead of > current_stack_pointer() function which allows to optimize away some > excessive "mov %rsp, %" instructions: > > -mov %rsp,%rdx > -sub %rdx,%rax > -cmp $0x3fff,%rax > -ja ffffffff810722fd > > +sub %rsp,%rax > +cmp $0x3fff,%rax > +ja ffffffff810722fa > > Remove current_stack_pointer(), rename __asm_call_sp to current_stack_pointer > and use it instead of the removed function. > > Signed-off-by: Andrey Ryabinin > Reviewed-by: Josh Poimboeuf > Cc: Andy Lutomirski > Cc: Linus Torvalds > Cc: Peter Zijlstra > Cc: Thomas Gleixner > Link: http://lkml.kernel.org/r/20170929141537.29167-1-aryabinin@virtuozzo.com > Signed-off-by: Ingo Molnar > [dwmw2: We want ASM_CALL_CONSTRAINT for retpoline] If we want ASM_CALL_CONSTRAINT it would be more correct to backport f5caf621ee35 ("x86/asm: Fix inline asm call constraints for Clang") and some fixes for it: 520a13c530ae ("x86/asm: Fix inline asm call constraints for GCC 4.4") ca26cffa4e4a ("x86/asm: Allow again using asm.h when building for the 'bpf' clang target") Because ASM_CALL_CONSTRAINT added in f5caf621ee35, not in this patch. The end result looks fine though. So it's ok to keep it that way. > Signed-off-by: David Woodhouse > Signed-off-by: Greg Kroah-Hartman > --- > arch/x86/include/asm/asm.h | 11 +++++++++++ > arch/x86/include/asm/thread_info.h | 11 ----------- > arch/x86/kernel/irq_32.c | 6 +++--- > arch/x86/kernel/traps.c | 2 +- > arch/x86/mm/tlb.c | 2 +- > 5 files changed, 16 insertions(+), 16 deletions(-) > > --- a/arch/x86/include/asm/asm.h > +++ b/arch/x86/include/asm/asm.h > @@ -125,4 +125,15 @@ > /* For C file, we already have NOKPROBE_SYMBOL macro */ > #endif > > +#ifndef __ASSEMBLY__ > +/* > + * This output constraint should be used for any inline asm which has a "call" > + * instruction. Otherwise the asm may be inserted before the frame pointer > + * gets set up by the containing function. If you forget to do this, objtool > + * may print a "call without frame pointer save/setup" warning. > + */ > +register unsigned long current_stack_pointer asm(_ASM_SP); > +#define ASM_CALL_CONSTRAINT "+r" (current_stack_pointer) > +#endif > + > #endif /* _ASM_X86_ASM_H */