From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755345AbcEDSdT (ORCPT ); Wed, 4 May 2016 14:33:19 -0400 Received: from mail-bl2on0101.outbound.protection.outlook.com ([65.55.169.101]:1679 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751214AbcEDSdO (ORCPT ); Wed, 4 May 2016 14:33:14 -0400 Authentication-Results: hp.com; dkim=none (message not signed) header.d=none;hp.com; dmarc=none action=none header.from=hpe.com; Message-ID: <572A405F.6000401@hpe.com> Date: Wed, 4 May 2016 14:33:03 -0400 From: Waiman Long User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130109 Thunderbird/10.0.12 MIME-Version: 1.0 To: Jason Low CC: Davidlohr Bueso , Peter Zijlstra , Ingo Molnar , , Scott J Norton , Douglas Hatch , Subject: Re: [PATCH] locking/rwsem: Add reader owned state to the owner field References: <1461781737-11209-1-git-send-email-Waiman.Long@hpe.com> <20160504002136.GA10179@linux-uzut.site> <572A30EB.7050804@hpe.com> <1462384355.3933.26.camel@j-VirtualBox> In-Reply-To: <1462384355.3933.26.camel@j-VirtualBox> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [66.187.233.207] X-ClientProxiedBy: BLUPR01CA054.prod.exchangelabs.com (10.160.23.44) To DF4PR84MB0316.NAMPRD84.PROD.OUTLOOK.COM (10.162.193.30) X-MS-Office365-Filtering-Correlation-Id: 3e13b21e-bddb-442c-994b-08d3744a8bef X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;2:s8sYFXq3NXYS1V8bFFtu3s+ATt6WbJcg8QxZ7vdZtt/UHbkuROuKIjLvaR+7kN/ORMntqfMHkFacBqnCgIVN6Izd12OnGNg84iYitmA/czsJvoqA+aQen6jWtmN6r45Qv5ODan5ex22trC92oBcqLQ5Fh2IPmq82vUtc10OvnnxQCvHRAS652nVjPD0sAQTF;3:fKJy1fZuvRkAVMvba4krcCECAFtQlJifuP1jzxkSAtD4i2bXWEGXrE3xs9d43eFypKHqKVnzr2FclHMPGQBwWpA5ln0XtQ0XWUefu0l+c8+kT+TvcIuYVCcOVFPD21qq X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0316; X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;25:2b1jYWpmwbh14sVvBtSaVqZ0IlTbThUrla8TUaRNPHDk+U6oAwwJkn5e6oqFcre/0f1/WrCECx1lk6m13FugpAePb/+rMWJrzeoCj3fJejQ2mDrElMvBdPZsMII6PitBSGNAo1s93zxhOlIYLVbf7k3RcZF4sQ6Ym3wRSzNERgRqwgsW6qG0mtLG1LHUOixNnvkVRwRvrCiP/PFr7SOZTNerBtCggpIDgIi3koOZDZ5vyqpvvx94doudKB1mtHbkqOjDZKLy6VGJFa+9B3Favec0OtpvEz496zAf2XZWbo43oI7UpWKG5BijFtDN+3EZclmJuAdCeXLSI4Fg+cWWP+J+9Eoqc9JBFX0jbfp1irCzrNikgOCwHxUo8N7M6CcvelGk0cPJst7OSTHRi2nnW9YiLrYBtGMPuXXF1plSEDnYfsWfWfOp8lcmvlzO6ef0qED4XtUPYBuFOk1L3fuC9WIHmB0diJNEtPv7dam+6ybqNC1KLzEmbCmIb3MfCntCWVoIxQ1p4LS5tUuqnoNUHv8+p4Y40eBZdZds8P/sLUQReMzfwmHl7qPDO39AXfYlmb6RvzoHwQiCTHuryAKzl2wnvrmoPICz5wqTnzf4fc8HAldfBowhgIBPkNEO18B7KLhwdtmJlv8wnkpBSnFGZRSC23VAP8vG1aiYzJ4Dvbr9Ntg9dEGN88BYF7siQZMVRR7M7izPqNxqJqujC+vxZ5RkE4toFyhFC6b4Zq1QgkuyAVPVsXgT0+sA1adsCGS3rfJmdtF5mOEHsyF0jalxHA== X-LD-Processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;20:2TwnXjJPavjM18XVvZ8nId8vft09zqtvlD9zwt58HX2u9aXwXbFp/e9dM6KE+HYtIIgQgX3pW/uzGs8WrKDVtIZssQR511u8ssTf8RGM/DNj2F7yuciDe8Lw589MiPQmWmmFq1+am7dJEKzvhl5iS1czSIPYBQbCZpAGPh/wmzn4VWpU28UYiviUJt/ybrQ06KcrX0M4lwSECz8pUxXOL0cysq/yrxUEhrN3iaL73a6i1Bz6OYd0U9cllXP9nElyesNSEJ8c0VgxY07F3Kz+tQHospMsPNKv5128OIdj9AmPf7K9+jcM/iMPmIlU5seL6ABiBeuYZC8O9DZG8MEkmA==;4:e8O/NVcXjJUzswITN7/Z+Y4Df2MHC4b1PmnU703BOhO8XzdGNu+4DS4zT6YKEL+82OvmxAI1WXn1XiYcAof4AHmIYhSsEc7Z4ZDR2hLyHDocuofUqZN1yFdanUf6tQID8HCa3wH/ba+tDviMHIIPAQuvhbvTmHyBw/jiZz4dSDLoR5+XsnEjEioYDbKen6Ul4viqAtEjg2kWr758P4DsNG9bdOAJQiwsKpGJdZP2YLHePZQxlkgCfgmA31jnFRRceYS+H6W757071cjySuTygM+3c68WQYpx1Cvbq5xjXAOh9ks3AwWqV5G/KsM/DczHh3bYWycSFYhtp44kYwOr+XcEFX6j/OeHfQw14aXxM5XNsSwwEcz48J3fJ9JuXTIgyTbYUZUHJDr/LPyWMl2+dyCcn6NCzs2ux8z9rkuNvwM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521098)(9101528026)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);SRVR:DF4PR84MB0316;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0316; X-Forefront-PRVS: 093290AD39 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(377454003)(377424004)(24454002)(230700001)(4326007)(3846002)(80316001)(5008740100001)(586003)(86362001)(5004730100002)(64126003)(33656002)(92566002)(81166005)(6116002)(2906002)(50466002)(83506001)(77096005)(87266999)(54356999)(36756003)(93886004)(47776003)(66066001)(189998001)(65806001)(50986999)(76176999)(42186005)(4001350100001)(65956001)(110136002)(65816999)(23676002)(117156001)(2950100001)(7099028)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:DF4PR84MB0316;H:[192.168.142.168];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtERjRQUjg0TUIwMzE2OzIzOkJDVnVoMEtsZEVMSVpVVlVLNHFlZGE1M2dh?= =?utf-8?B?Q0g2YTc1SUdMMWJ1OGNSUDJGYlR1eW93RzNINzhqMEFjaFQ0cHBPNjNzSGlt?= =?utf-8?B?cUdVTURNVHRoWGVENjFjKytRSjNKMDB5SjRrS1VkQ3JUcEV2N1pNamxKYStO?= =?utf-8?B?ZndOYzdSRTgyRmd4NlozdlZhMHdFTkZROEhsaURQc3I2aWlWYXAzTVFKUm9F?= =?utf-8?B?aVEzcDJIckRFRmVWTjlvcjdRWTcvdEJCdDcxVDlkNisxR1NQazJpNFI5dWJj?= =?utf-8?B?SDBEeUpRVVBDUVN2L0F6L0d5ZW8xWk9JWHN6RTZ2MmRGb1dhV3ZveERlRE9h?= =?utf-8?B?bUE1NU55Vm05U3ZQUXJHOVo4R084NDg2Snd1eHV5ck43Ym1DbXplR0hGcFgx?= =?utf-8?B?eGhudkk1UnQvTWJSMTZ3dTQxS3VhbW82SUJzTU9JQVRnRFhXdUg3NkR2eTlw?= =?utf-8?B?U3VHaCttYTd1MTJjUzU0WkRuQzBtYU5wSEwxeUxmRGNpMVh0bTcrdDAvbXR5?= =?utf-8?B?d0pQZlFGcjVtZ0cyUjZoTTlkMUNwUmpzYjVHeU4yOXJsVzFVV0V0Tkl4OHN4?= =?utf-8?B?cTRMTGp1QWM4S2U0bDRBK1ZHSjBpcEZTN3FNTDkvbWROYVVnOC95SmlsWHoy?= =?utf-8?B?dTM3ZjJDTG1LK29HR3A1NDdJK281N0JIZ2FTOTNaeDZVWEo3Mk84a2ozZ2hw?= =?utf-8?B?Z09mZzlIN3p1Vkt2SlUzQzQzR04zeDJNUi8vMzN4bU5ocUhOVlVFUGYveVRM?= =?utf-8?B?a3BFdWIySHB5NEJKVEJ1d1M1aUVMTVlzYURRM0E5aGI2dWtCTXcwYWFLR0tZ?= =?utf-8?B?VVRmc29FMlZrZzFEZ3RKa0tqTGk4S1cxRWFFLzhCQ3ZMWWU5MVVRcVNmalov?= =?utf-8?B?U0FWODNNdXpLWlQwTzBoalB0WDJMbmxJYUhWdFdka0dvbGhHZyszbzNKUUtS?= =?utf-8?B?bEZnNmZuSU1BUWttaFpMaERUd3ZTVExBQzRVRkcrZ2hCVDA3a2lPb2dmQlEz?= =?utf-8?B?ZXJUZy9PYm1zbHFNVVN3Q0ZNMUN1bnMyeUhMUFY3RHUweGhFQjBYV2VydFVj?= =?utf-8?B?dHVOQWhFOXo3anJpUkZGQWgrQlVnckRZSVZNNms0YzQ3TmlVc2IzRUliL2NV?= =?utf-8?B?SUd4Y2JuTTF0cVBKR1dGOVdzNUN0VW1WRElHaHE4ODZGc2lZWndRK3NCcGo5?= =?utf-8?B?K0JBTTh5cGZLWTFBa3kxVzB4MVI5cGY3M2VyM0hzZitPSk1teE9ZQ252QU9Z?= =?utf-8?B?N2pCK3ozWHlOVWpIWHhUOVhkWnFwV0pnZFp2NFRTQ2c0M2UyNEgxRk1tOXhy?= =?utf-8?B?Nk9hd0o4VVlEcEFsUWJZcTN3cWxSRnU3bHdZUEV5NFFubW9EWG5pSmJwd3RM?= =?utf-8?B?SkJqUE1GYmR2Y2VWa3hBWWoyTU1KbGpTdmJTb1FKMTBNRE1YOW5EWWhlSjFG?= =?utf-8?B?VER1Y0VxZDRLNnZLS1kzTzVvQklPYkFQcHBQbGFmNjV4blQrWktpZzFTVUFG?= =?utf-8?Q?GbSb8Ah2Umq+inJT2TgJeMYVQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;5:ITtWezUR/Vjy+MJ1d7B01WzpIA/mpmVv5o3yH3VR1mfalpPn69/nG1BH2fFQdhHnZ5vDrfIGn2uSGLwtkQO7O2hynxQ5amECwctoAXOkCpNPX11RdUGN069muHgGaKvLOLvbS0iAcsqfxBxpacw/TQ==;24:goEaw0GHU+p5W1c+1hSRly3Sbvp8zwxyqvL8Fr3Db9pw4ISrnhZan/6WPnQuqjLZTQgLHsdXfprkOUS80Inpm0Dii1crdnL+epGMMfVhj1s=;7:ymYfckF8Had0itgVFBx6ASwSOv6ZD3l6zJ/A0KEMkAl+L90hqu2SbyxzOzaYK5klZ7F1STBIaQGtahIJslW/ioE4HRP+h295zjYT/awUM3W27oQ0UIbLcDOExyXVZl4Wvg0SJgZvIWIcH8zTrJa2aYVv7Qy/BCvsHkWQI9dPR2kV4wy2sgypx4/ZgImVE5Cw SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2016 18:33:09.5227 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR84MB0316 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/04/2016 01:52 PM, Jason Low wrote: > On Wed, 2016-05-04 at 13:27 -0400, Waiman Long wrote: >> On 05/03/2016 08:21 PM, Davidlohr Bueso wrote: >>> On Wed, 27 Apr 2016, Waiman Long wrote: >>>> static bool rwsem_optimistic_spin(struct rw_semaphore *sem) >>>> @@ -378,7 +367,8 @@ static bool rwsem_optimistic_spin(struct >>>> rw_semaphore *sem) >>>> >>>> while (true) { >>>> owner = READ_ONCE(sem->owner); >>>> - if (owner&& !rwsem_spin_on_owner(sem, owner)) >>>> + if (rwsem_is_writer_owned(owner)&& >>>> + !rwsem_spin_on_owner(sem, owner)) >>>> break; >>>> >>>> /* wait_lock will be acquired if write_lock is obtained */ >>>> @@ -391,9 +381,11 @@ static bool rwsem_optimistic_spin(struct >>>> rw_semaphore *sem) >>>> * When there's no owner, we might have preempted between the >>>> * owner acquiring the lock and setting the owner field. If >>>> * we're an RT task that will live-lock because we won't let >>>> - * the owner complete. >>>> + * the owner complete. We also quit if the lock is owned by >>>> + * readers. >>>> */ >>>> - if (!owner&& (need_resched() || rt_task(current))) >>>> + if ((owner == RWSEM_READER_OWNED) || > It would be good to provide and use a rwsem_is_reader_owned() function > like we do with rwsem_is_writer_owned(), especially if we're going to > add in the additional cast. > Yes, sure I can certainly add the rwsem_is_reader_owned() helper function. Cheers, Longman