From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752546AbdFSSDl (ORCPT ); Mon, 19 Jun 2017 14:03:41 -0400 Received: from mail-eopbgr30092.outbound.protection.outlook.com ([40.107.3.92]:31697 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752475AbdFSSD3 (ORCPT ); Mon, 19 Jun 2017 14:03:29 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=virtuozzo.com; Subject: [PATCH 6/7] x86: Add __down_read_killable() From: Kirill Tkhai To: linux-ia64@vger.kernel.org, avagin@virtuozzo.com, peterz@infradead.org, heiko.carstens@de.ibm.com, hpa@zytor.com, gorcunov@virtuozzo.com, linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, x86@kernel.org, mingo@redhat.com, mattst88@gmail.com, fenghua.yu@intel.com, arnd@arndb.de, ktkhai@virtuozzo.com, ink@jurassic.park.msu.ru, tglx@linutronix.de, rth@twiddle.net, tony.luck@intel.com, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, schwidefsky@de.ibm.com, davem@davemloft.net Date: Mon, 19 Jun 2017 21:03:14 +0300 Message-ID: <149789539472.9059.14776109385585841547.stgit@localhost.localdomain> In-Reply-To: <149789463636.9059.16943955939303454611.stgit@localhost.localdomain> References: <149789463636.9059.16943955939303454611.stgit@localhost.localdomain> 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: [195.214.232.6] X-ClientProxiedBy: HE1PR0802CA0023.eurprd08.prod.outlook.com (2603:10a6:3:bd::33) To DB6PR0801MB1333.eurprd08.prod.outlook.com (2603:10a6:4:a::27) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4d17481d-6d46-4c19-c935-08d4b73d7991 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:DB6PR0801MB1333; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1333;3:whN9SlSkcDU0NrwxYAcIuTZtvgM6bAGfXLN6xl7buiBN1o8PTVml0KMwhEFfntUGE4piOvQiAGwuItSWvq8hP6Zlh5bDo0UWDufcTkDdfItQXftz0XCYG6HoTGrpReE4GxKr8YvTFOePAYRZbcragKWXoix8XklT0ZUapChMWGac3aLdANIkRhU/gT9/HE7tPN0Z67MVgYhX/1vqZwwfG3a0OSBxfeGkzmoPZuRj0GZlH8yBZrNgDiBPDTujBHKo6HwOmJv4eJfl3L43/0YnCnWU1etSaZyRy/L0mK2C+6qzpwZcqlCj39VrrN85kw0U/CGIiua1A+O1BbfTHNENnw==;25:ao/mUaoRL3HrD5VoH8mtV79oh5d4Qy3bP9Q626KDJv3r06R1DZymOHjFAj7t8VW3As7VF2t/f1s6JzorezIOlMUWICEtCdsTym58XRPNyHzwKqQ+Q74gck/hlQt2+Xex60pk0H+aHjAlh2Vgykt3c4bH39EeodK1P/zKElWDuBuWau29UTRNdrzocUUq5TBzpdUBW+IYCC+SGQ34U0d6a3NwKqQKpP7yigb+RMDGo4jbKW7CA3lW2oC8PkORNQ8UqYVtMYUCdGpYietn8bl2EilfRmIiiXZvv/AtQQ4yk2JOGgcKUWH9XUYRcKdIgiPZuf0eY8qfjeV6zsY4SEsjkzVRUJHwtpsPvcKujLVoO0OXXb/qpnOkWzDUpa0T8dpjhtMGuzXktTFTbwqS6zaGlvhkEBLP5S9DdGuGwVd2wYYxFxW5683CuCwW8Bo3Pa2zfIse9CatWsBBlpOKAFfd2XEjHpYtsHXZlhKTIFzZ0AY= X-MS-TrafficTypeDiagnostic: DB6PR0801MB1333: X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1333;31:23YmLKJZJZ0t8KC57zqNNNzkT4DyfjqQgKGWrxgS9jvqaYp+oYNPIrCXUJlvnqfOmwBPOuVJoXULZyWvtPkP2h5pWgCRBkwobR6ZHWE2qVvxqYXm3kErXgssIrRvULo2sKfCZ7U1VbLQgAj/H7hXuYv82b/wyc7CQ5aIzihCi8prDMmW0Wmg0NQPMcLXFQbCIEuSKxjZDa5VDItxVxb5iOu+zyMxX/dLaSYjhAhU2oo=;20:GQIjavCLvU+3z/YzbCKvJjmBcJwsu7DFSgGkVLg7lDMxvcKFtR1cLCVmKIQrp09CeGzAute1wmBFmr1h+csCZHAUFDnQPc5TcGbAAL1DiKVBHk2T1aIX4tTRpxNngmKo3LKZ1YgkCWbjs4F9QBbg7jgxckIuQYlPwgujwOXoVH7wK31vavBZxV/zeXgkLg8LUa0s3QdOQDgcwIotcbmYoQ9zz4yWYQhQH+gK702A/WevZgG1yz+zMMRhVQZjtA/QTjWU2jUy2YNlk8xevU6TWRWUdOHF8vtfisQBfmiz4xI8vMdG25vybKJnv4YHux+0psJyPezXE60voPvSdIQVboOZE/yfa8/igyxF0yvkrYuWq9ycnU654PLMtrZp8AnTA8dSXcoUbcsrFtPir7Tmm9Sq5oCfMilb2bqoh8DNEH8= 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)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123560025)(20161123564025)(20161123555025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB6PR0801MB1333;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB6PR0801MB1333; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMzM7NDpBcjVYYXlGWHI3a09WWTNCR2I2dHNrUjlk?= =?utf-8?B?ZXVVRjhDaGlRZUlrVlZKMmcyMFB0TTJtTURCNjlhOGtaMzdSOHRCTmp2OGpa?= =?utf-8?B?MWQ0L0M5aDIvL0kxcm1uNE5yRE03YXZNNU5JaTg1RDFZT2xSbG56a0RqZDBY?= =?utf-8?B?VHE3N21HVytHbThLczhlOVc2VmxsWGtjTkE2djBacHNxZm5LbHJzbHprM28z?= =?utf-8?B?bEdCOWNmbE12ODZoUis1aHdEaFAvaG81Y3c2cm5UOS9ZbHFVWDhvOGlNbWpS?= =?utf-8?B?QkhlUm9vUDh4M1FJSE9pY2xCWWQvK3J4cFFrMVdkcEh4bjdyU01VMnd2RnBI?= =?utf-8?B?WnFzU0ZTQ1lzSkJpTmxLcmxCL2F6TllPamljUkNOMnZzOUROWGEwdStUekhk?= =?utf-8?B?eXp6ZFcxODA0a05WbjhyZGdSYWhZckprSzhyUzVQWEhvV2NrTWhtUkh2azhD?= =?utf-8?B?YXpsSU5BL3RXVTRMcXR0R1lTZUpidUgyR3hndTk3NHZWWno3S1BBRVFMaUVJ?= =?utf-8?B?QXFGSVhCZHRuT3BuYk9RbnduOGZRenYzYUplaHNjaEx1c3dqNWEwdnRuUnlU?= =?utf-8?B?OWsyTlhmSnViMGs2cVNpY0xGL0M5V1RIUE9zYUtSd0Nhb0ZQWitDem1rUTM4?= =?utf-8?B?Z1h0UFRzMktKMTErMzRlelluNGRmS3U3THltaTJFTkRTbU9CRFd6cjd2RGNU?= =?utf-8?B?OUdFejd0Z1hMTVZPb2E5elE5T2FzdllnelBZT2xqb08raGdGOHdTOThrR2tL?= =?utf-8?B?eVhveE50S25BVGF0WFUwN3RMYnEyODJDM0JJVVFXRGRoU1M4cVFwaWtPTlpw?= =?utf-8?B?SVRtYnlSSkV5YjRRcms3QVN3K1NENmFQRFVwZFAyRUJqYzNkbWRaeWsrL0Ra?= =?utf-8?B?R2EwdWE5WlNUVFVNVlh5a1pTcExtMWFwbi8rRFBMcStOZGpzOWFsby81U1lV?= =?utf-8?B?REZudlNmaDRVUkNaWDlaWFZNK0QvTlc0MXlkK09DVTljT2h1U3Z2MGNUbUI1?= =?utf-8?B?bjh4RS8vUGhaK3pLY2ZRNTlnMDIyVkhQTG5xbHZVRE1rZGN4MU5iNG1iSlBq?= =?utf-8?B?ciswUGNuaDdQUHhwaHZ1em1vR2ZSYUdlRXg0TmU5Q0RkRTFtVFJRZkJVNVF1?= =?utf-8?B?c1g5MUlia3pESmtDL2xZUUdmTGFkR0xZb0pQK0ZNSzFXOFZtRDFiT3JIdzY0?= =?utf-8?B?SHZFbkgxRDA3RGVFN0g4aUM3Tmd6aEFWOEVlYUZqaVRMMHgxVVZUNzloVjZs?= =?utf-8?B?OEs2RWZ6VEg2SzRSVW83RnB1Qm5lNTlQSmpYYUZNNW5DQ29UNzV0SnFkSFpR?= =?utf-8?B?eXJjU3lreHZ4VVE5NmY1MlZkTjYrTGZwaUh2MGdlOEJsRzcxSjdKQkNwcDVh?= =?utf-8?B?Z2J0LzBMSk9tbkszd3VQQ3M4MmpwMXJ4YktPVU1FQnAwTmN2NXIrNmM1UVFB?= =?utf-8?B?c0hEK0VzaVdkNzZDOThKZ1dmZjdTUncxcHUrZ3FRbE82UmViTXhuWFBBc29V?= =?utf-8?Q?pOOCD685bG4CNn2CleNMhdZCdvd4neqj18hhno/bhOxAuRb?= X-Forefront-PRVS: 0343AC1D30 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6069001)(6009001)(39450400003)(39830400002)(39410400002)(39400400002)(83506001)(6116002)(6666003)(50466002)(2950100002)(42186005)(110136004)(38730400002)(76176999)(50986999)(54356999)(230700001)(8676002)(33646002)(3846002)(81166006)(7416002)(305945005)(5660300001)(6506006)(47776003)(2906002)(478600001)(53936002)(4001350100001)(189998001)(7736002)(66066001)(55016002)(575784001)(86362001)(23676002)(25786009)(61506002)(103116003)(9686003)(921003)(1121003);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1333;H:localhost.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMzM7MjM6QndCeTZ3UG80M3I3Y2JEQzhPRVZMTnhT?= =?utf-8?B?R3ljVmlrZERialNZOVZnVmxQOWxubCttLzc2eEE3UW5rdUZhRTB1cVc1Kyty?= =?utf-8?B?QVBobGNXSmtUSko3eGkzb2hhSElWTkhRYWZkdEhwVldGSW41NGMzekhEZndY?= =?utf-8?B?RUl1cFA5Q1RsWWhlSHpMekNlZVlVNUErODZTcXVqejR2WXNSdi83aG5uSlM4?= =?utf-8?B?MGFhTHFRWkJGM0N6d1VnNU9rN2tyaWVJYWRDQkFVbGQrbzNzbTAwOThxV2F1?= =?utf-8?B?a2d6SndzeWZMWU8zS3M0QUZtVGZCNFBWR3ZGbTdkT2ZhRTEyVTI1YVFDR3Vn?= =?utf-8?B?Q2RKeWZWc3dBMDlrZzA1SGdhNWlLQmxjbkRWdUJMcEFQK3ZZZmRFK3NGUHRZ?= =?utf-8?B?b0loRk43eDdsbzZtTGtYU1Y4YVhOZHB4YkdSWXFjSzBWWHhpTGpUV1Q3UzVz?= =?utf-8?B?RWQ5RjNsQ3lob1RYSUFYZzFSRENhOUs1dkdVaEY3eWZ4OGdBbjg3Tno4bVFv?= =?utf-8?B?MkovU1dWSDNvZ1ArQlBGeHc0NjZmeEx2QUdDTHpqY2JrT2hrR051dXVrTUIz?= =?utf-8?B?cmw1SVdCSjRCcWRsVE0vdFlFSExpY2tWSTFDaFVoc1JSNktVM0NPdVBLN0Rn?= =?utf-8?B?T3ZkQWgzYjI3aEJWVGJYNHc0cjJxRlpPQTRuSUxTTXdJeVdOZzlIM1pRWW1Q?= =?utf-8?B?WjFKVEJHU1Y2WlE5STlsSzN2VWRnSUt5MDdmVnNxOEprZWlTWDdkK05HcWYr?= =?utf-8?B?SFVHaEdGQzh3dHFHek4xcUd4UFUvZ3VKeVdEYjVEZWgzYU9CdllVc1pvNWRE?= =?utf-8?B?WE9UQk03MkRGRXNSMXJYL0hiZitKa1pENUtSM21tZEcvcHFPc0E0dE1Bdndw?= =?utf-8?B?d1hmN3o2K1RmYkZhZjBhSHo0SHh2RUllOXpxVjdJdWwremY0Uy9lT0pCVi9N?= =?utf-8?B?OFZMQVBtNWxlWWNnNExOSXh5YTdQdWxQL1RUbC9WTDNTeno4RjRUS0xOS0h6?= =?utf-8?B?Z0NPbmx2MTlvb296WTcydVpnb0w4VW81aC96S2RFSG16cE0zenhxQXhiUXVT?= =?utf-8?B?K01Sell6TDNvQW44S0pObWVSWHhBZGhCUlZUYVl2ZTBOUSs3SnhSMnZUd1Zl?= =?utf-8?B?NGJaVzlXczRDaE5scHcyait5R2o0bFdUb0l1c2JDV1BNenFtTFgvTGpKa3Z5?= =?utf-8?B?S1laNnFicmh1LzBiSHV4RGNTN1U4TEZ5OGl4V1MzbjYwdW5hVk00ZVRNaVhF?= =?utf-8?B?YUpmVmtRZFlsQ2xiL09VTkJ2U0dweWNES1p0S3FSQUpmK1hxZzJZTlZPRUpQ?= =?utf-8?B?NllkMy9mZ01heTdaTTgzQ0Y5RWxUZWFxYXR1OHdZNlJGSHlzbnpOR1lEdzhk?= =?utf-8?B?NXlybHRMYlBjbFhjdWpKMnpjUVE0dGFMMUFMOHVJWXA2TGcybWdLU2gvV1k3?= =?utf-8?B?dVBHK0xEU2lSOWI0K3Ezb3V5VjhscVB2clpiSHlubm1Kamgva0NNTThJQzA5?= =?utf-8?Q?TLree90PS3VaKFF9w2u6Nm/wtc8=3D?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMzM7Njo5RTh4NDJaN1M4Sk9YbTViYnhzZjN2UlpQ?= =?utf-8?B?OE4va1JMdXp2ZVhqdHJMTXBrRVIwaDVaVVZyZG5yZHJERmlISVpCT1orUCtX?= =?utf-8?B?a3RldWhrZkFWbnZqaEMyMmlwcG11cmhqWjEzM25WQUw4U2VhNWpMUjFFdTZP?= =?utf-8?B?bVRFYlJIV2RLaG9sSmE1TUtQMEZmSFBKUGlWVGtNRitWTDFuSmNFdU53NjJj?= =?utf-8?B?ekZtbzRVakpYZzZnNWFkenI4RVJBeWJLeC9YekkrQkVoQ0p2dUxER3d3TUpk?= =?utf-8?B?REYwLzBMVGpDTUV1TUJuVlFaY2x2MFRySFhSTzdNVUo4NXlTUTMrL0IrYU1u?= =?utf-8?B?UWF1S3UwMjJraklTUW45TlhlTFlFcHAzd243dE90UHBKekhGbytMUUFnbFpH?= =?utf-8?B?UncxQ1JlY01QYUtST29MT01DZXl2QU9DNFN1dGxkaTN6aFIvbUFFZmIrc1pL?= =?utf-8?B?b1Y1NTNmODF2Snk1WWJHOGtMWlFOeGxMb1Q2UTRQdlNCeW1tSVlrUnE4RVRI?= =?utf-8?B?WUhFaXV5WVp1TGFXaEtabXNpQ0pETFppdEJlTCtuSnNGYXhQSkp0YjdaT20r?= =?utf-8?B?N0RiTldaTmtsSGdUbHBuTE9obWNQOXd6NjZyQmM1TStHam9mM0lncHljSENw?= =?utf-8?B?aXFBekc0dE13SlEyVFJZSHJaamxJVm1LQUFJcE5pQi9FMWE0NDdzMnlmV0tt?= =?utf-8?B?aisyeE5CbGRkVjhCS3BaUXlQUTZ3ZDA3a0pPaE9DSUxUaEVxRTFXQ2RKREVl?= =?utf-8?B?d0w3VmZjbU1SMVBGMERIdUtrQmczZVF2NUtmemx2NDFuOFBnQTFCelhLa0xL?= =?utf-8?B?aWVYZzhSQlJaaS8xanJDL0lTMit2aWpwbU0xSmFWRnBLcExTTGhWM0hGaStj?= =?utf-8?B?bzdNck1WZUMyZ3RSUlJyU2ZrNzFtWWdGcVlDZkF3OERNOVJoVTFPZVZwSW0w?= =?utf-8?B?RXVxMGtIb2FZaVhmSzNxMUhRQ1RUc0ZyL01oSzNKeVFIaTVZWGxONnF4YzN5?= =?utf-8?B?Smd1VHNjNVEydEIyNVJOMUdLeGRFbFV5bVEybTNzYnI5WEN0dWZUSTFXSW5U?= =?utf-8?B?cVNhWGVsSWh6Z090OXErdVdJTTBtUjRlQ1JNQ3dqSkZVT1lkUkYxam45N1c5?= =?utf-8?B?eVMzbGNDMFR4SXZOd1plR3ZXZnNna0R5OHZFWFUxVHZMRFIrZ3M1WUpNRVp0?= =?utf-8?B?VlFQTHNCQ1gvUWlsUUgvNjR5THVaYzFudExMVm5uaGc1aHRQR0t2NW1pK0hQ?= =?utf-8?B?dTdqQmd2UGI5Nk9YMS9zcUxab3dteXhyY256RXg1emNUMEpzcVlaVmV6L1Nh?= =?utf-8?Q?DisBTzUBgl60Ax4X2ar7eKKAl+9vb3fD4=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1333;5:uSNG+xtg1JzSizi1hIuCwbpWzPmG+q6DETMFKbUvviL/LIT2F5i2JKmslCPRDVczF55YmeGJdgQTOx80koVbKmuJlS6AENb7G0qfeEkS4iooOg6dYlXjro4LxajHep13OuBW1q1LBu5uRXtCdwc+XiJsiLqvD8omLvXNjtz4u9dGN1+F35sOWy1CiSD6EM1llXGYa/Lw5vC3CfBUrlMpGq78Netf3rKWgyH6el4TiFqPSdO0OxcxawQmieBQj1tG9fZeJaf+3dXXGX5q6iQiKtHVwPiJul0zVSAL3p+YCmHfv12SqxbEfrWt3d/Aqi62XZZe90b5tdfsfG56wq3urTOPrztDOhtIP9wLQzbKiU9LTcbJ5xVMUnIDB1c0fnAoaMAnlWNtzKSiHyhh+3bfzLGNrkzzjbWjHuHij8SV5rCwWgMFqZ/JN/+aywCs4baB5EhvZFUUyxBbOJPofFwOgBC7ju2JPqBXyxqzRq6jhsWa7MlMBL7A6eUgaRdlksp9;24:y/cM6CJac9Bpe8HjxJ9DcGl5MzSbgDJ6csQf8z+dun3rVckjNQd5n7OZmMgC9YRO0nqZkXzZRW0OwWPAOqiBwhVrteuWkHDjkdOKYekdzLA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1333;7:fOl/VwkMA2/J6R8MwD64M62HHKTKYPQoabPIQGo/xsxraxMZTKatCDFo/jYhO1d1rtDWwZ8J7v56SOx71kB7S/bkrpVeuUZ925TzLh97gfwP+0T8vqIUB2G1Sp/TbK8Vb2MV2UqXHEXapRGCL7/392f2x/NOd6On5IiXWQnYKvh7tYNuCwgLN32K87aS+cjttKwic0JOHFrdD2EAI7KLxYD5E393F1SsILUl79N2Luz9sWM2PBA9vLE4v7peqjEyyAsr5kOv8PSJnD2POWqr6KvUufkTNn5iZYmn2BfQgAPRua6VpRsIpBwaDxUrDoQvmKug1EhKDZ/BHFXxrs6vjllJHMIxM+L5kuRjc8glDyton4PJelfB685JUZqlOUwlLHOnWh7hwIV0hKFBQ/LS/vVlUKFVc4gc5aXyEJL+uGCMLh1rE4/OumOIwWxWM84GaJy0iE8tQxTr16LnIxngjTjEa2+oiGZRKRNWmUaPHdpz/JCdNDxGsYj1jHGcGBH3P6kI6vZnnf1ibuibA/WYw7YdEEQ/rKOd08TsYRxMDKCQAudv2yxuRqKRnae/xcsOl1ugRIfslMn/f+Ydr5EoKA2xByXP6qb61Po6kiaL9DNBzqd4c2734vfO1zchwRvoWvaoYCG3trwWweE/K7kZyJeWvMgIsTNjbpnBP951RewAmGoWS28ylMzJgzPYfP+t6QeKAfqdm1ROliIMCppNRbupUx8quEdfrG0s2LXE3sLf+GT281jW6Fyaz2mi7BFLmlhL8KmZhfkApZgk9UTuIDjVajLpF31pxRfTUOdrnV0= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1333;20:USThhNZOvgZ+/3G4zBT2YLV6U8PzNhaIZv0Z1FJNn1GKHjkHbiwZVOEBWa1Kqb+OtPS3xJoUDEjIbCVeshY424fMOFiggbcHCy03VWvu5Qp9U3wSZJP+oMz1XR/TPbXf1VktsPiJBdsO/xpk+gHuOwRij0w3y4Qxs+KYRRhjus4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2017 18:03:18.6996 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1333 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Similar to __down_write_killable(), add read killable primitive: extract current __down_read() code to macros and teach it to get different functions as slow_path argument: store ax register to ret, and add sp register and preserve its value. Add call_rwsem_down_read_failed_killable() assembly entry similar to call_rwsem_down_read_failed(): push dx register to stack in additional to common registers, as it's not declarated as modifiable in ____down_read(). Signed-off-by: Kirill Tkhai --- arch/x86/include/asm/rwsem.h | 37 +++++++++++++++++++++++++++---------- arch/x86/lib/rwsem.S | 12 ++++++++++++ 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/arch/x86/include/asm/rwsem.h b/arch/x86/include/asm/rwsem.h index a34e0d4b957d..0fe7b0aee266 100644 --- a/arch/x86/include/asm/rwsem.h +++ b/arch/x86/include/asm/rwsem.h @@ -60,18 +60,35 @@ /* * lock for reading */ +#define ____down_read(sem, slow_path) \ +({ \ + struct rw_semaphore* ret; \ + register void *__sp asm(_ASM_SP); \ + asm volatile("# beginning down_read\n\t" \ + LOCK_PREFIX _ASM_INC "(%3)\n\t" \ + /* adds 0x00000001 */ \ + " jns 1f\n" \ + " call " slow_path "\n" \ + "1:\n\t" \ + "# ending down_read\n\t" \ + : "+m" (sem->count), "=a" (ret), "+r" (__sp) \ + : "a" (sem) \ + : "memory", "cc"); \ + \ + ret; \ +}) + static inline void __down_read(struct rw_semaphore *sem) { - asm volatile("# beginning down_read\n\t" - LOCK_PREFIX _ASM_INC "(%1)\n\t" - /* adds 0x00000001 */ - " jns 1f\n" - " call call_rwsem_down_read_failed\n" - "1:\n\t" - "# ending down_read\n\t" - : "+m" (sem->count) - : "a" (sem) - : "memory", "cc"); + ____down_read(sem, "call_rwsem_down_read_failed"); +} + +static inline int __down_read_killable(struct rw_semaphore *sem) +{ + if (IS_ERR(____down_read(sem, "call_rwsem_down_read_failed_killable"))) + return -EINTR; + + return 0; } /* diff --git a/arch/x86/lib/rwsem.S b/arch/x86/lib/rwsem.S index bf2c6074efd2..dc2ab6ea6768 100644 --- a/arch/x86/lib/rwsem.S +++ b/arch/x86/lib/rwsem.S @@ -98,6 +98,18 @@ ENTRY(call_rwsem_down_read_failed) ret ENDPROC(call_rwsem_down_read_failed) +ENTRY(call_rwsem_down_read_failed_killable) + FRAME_BEGIN + save_common_regs + __ASM_SIZE(push,) %__ASM_REG(dx) + movq %rax,%rdi + call rwsem_down_read_failed_killable + __ASM_SIZE(pop,) %__ASM_REG(dx) + restore_common_regs + FRAME_END + ret +ENDPROC(call_rwsem_down_read_failed_killable) + ENTRY(call_rwsem_down_write_failed) FRAME_BEGIN save_common_regs