From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751982AbcBPB2Q (ORCPT ); Mon, 15 Feb 2016 20:28:16 -0500 Received: from mail-bn1bon0145.outbound.protection.outlook.com ([157.56.111.145]:34658 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751726AbcBPB2P (ORCPT ); Mon, 15 Feb 2016 20:28:15 -0500 X-Greylist: delayed 5577 seconds by postgrey-1.27 at vger.kernel.org; Mon, 15 Feb 2016 20:28:14 EST Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=hpe.com; Message-ID: <56C2655C.9030707@hpe.com> Date: Mon, 15 Feb 2016 18:55:08 -0500 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: Peter Zijlstra CC: Ingo Molnar , , "Linus Torvalds" , Ding Tianhong , Jason Low , Davidlohr Bueso , "Paul E. McKenney" , Thomas Gleixner , Will Deacon , Tim Chen , Waiman Long Subject: Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() References: <1455298335-53229-1-git-send-email-Waiman.Long@hpe.com> <1455298335-53229-2-git-send-email-Waiman.Long@hpe.com> <20160212204027.GZ6357@twins.programming.kicks-ass.net> In-Reply-To: <20160212204027.GZ6357@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [71.168.64.167] X-ClientProxiedBy: BLUPR13CA0081.namprd13.prod.outlook.com (25.160.82.52) To AT5PR84MB0130.NAMPRD84.PROD.OUTLOOK.COM (25.162.137.24) X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0130;2:wmme6bTXJGJWKSeWxDWllGz048w8MC2cy0KuH2XbvIzZlxpNOHWj2iS3Ce99VMHRAa0yGqNvpoiRfQnnH48Cf7LUTw93M12D+ha1VuX7p1CLiWZeFWq1Czr2VJElJZlvU57txS8E3vQek8n/gRklXA==;3:3oXEHhmc/lOrMg17WJUnmeWEQnSDNYUoA2qWZyzQGPhl/nkTOeMA1DH++VkwTFwpg3GIiGZTyjbrLEVT0zQxQy7U9tujzESaJBFwL8/45FbDkZSDTcI/sqDcCZjSFRxG;25:AWru89SDl4zY89ybZZMkvYSwwmd37vA6GF2yEdmKbT9eOCwFE46BrlTiKl9BZ25BauP9RBoIhKb2cejXEKWrWDVm7eRi0WULIKs8Islf1HPivlsgwynCwveMwRlCcQz9xDmoztIjKIt89MxRfbSAj9wp/n4ImmTabC8odeML2EX1lzHsjxFoREv4lHSaGDG7Ak7+Vy0joVg2O5doM0zKwn7DKc1NjQM3FMyxvY8xyO+mSGOTx7+TBefwvG12ZwXo1STAGP7E5O49vrEiEPI5iE+TcF1NWwciAwBhFdkM2uftXnFGlinzWi2Fe8aa6WYq;20:t10FmGprzCv87WxDoKxNBvFJ2grg8W5V3z1TZcLBv7ZIGLpa5P5FRign89Cy1x43NUkmK9wozDSDhkOlPeDjLh6Fb2XlLMLlWrFSavXLKOSMD5LxpovtwzbV+KW+uRi9Y8b6bKI4FNQzwxKvp6ZGWuUUuPdIqgAtjTGLkorxted4WqMSN8fXd8IcRerZGcoEOumvW2QHU0tN9gC9jkHYN85miuyZAAE+JLPOvJspmIuh35NtPQdyVzhuIkqmTp+e X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0130; X-MS-Office365-Filtering-Correlation-Id: a6a79847-22a3-4169-0407-08d336637333 X-LD-Processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:AT5PR84MB0130;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0130; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0130;4:ZgqQuQtNPjfgV0AXfsyHi3sUTARblu9h1huTzPZBXvFmTSzjf9VpOJBHa458fzEvIbD8Hyrp1UGQX8h0GRddwOBeComev5olxIEsp6CeXfSJkpn6iubyH7Av+hd8Ph8RfxMujRfYTLXOct2mn9zlNEoCmOHbMulrUC01bN2ZSAbg2AS5vLcuITNdJxwxlqfTG6jpERqS2ojkXIqsvzECT1y9nnsOqTLHRKpx4Tns6KVBsBlTKZf3j0Hc4+N78yW7dcqmUQhx9PflLUhlWn0GlSlaaqmb5no88aa+hNdd5zMoN18csS7Zhc/QrqHkf9YDjJf02vWh4Ci6lx6sGhkqlnyjMt2NLxIoLkmWP2WXEeDkEGLDLwZm7ysEGdSWiObv X-Forefront-PRVS: 08534B37A7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(377454003)(479174004)(24454002)(5008740100001)(2906002)(54356999)(76176999)(87266999)(4326007)(77096005)(65816999)(2950100001)(230700001)(87976001)(65806001)(92566002)(65956001)(3846002)(40100003)(50986999)(33656002)(23756003)(66066001)(47776003)(586003)(117156001)(1096002)(6116002)(4001350100001)(42186005)(189998001)(36756003)(50466002)(86362001)(110136002)(5001960100002)(83506001)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:AT5PR84MB0130;H:[192.168.142.186];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;AT5PR84MB0130;23:B6c/gLZ7pLByDKHHbGU9EDT++yEgVVKIBTSg1zF?= =?iso-8859-1?Q?XTXpndG5ognGqMS43VnekuozFnAdwQItiZ/keQpNV7ueNXn0NTv2h950Uf?= =?iso-8859-1?Q?QYOQxQuP/uCG/7cMkYYSqvj1Umfkze5dh5GBypiVkxLCiZOddNFgvq/6kL?= =?iso-8859-1?Q?igj4bkNdIcu62lCxV9q63t/43pJgnKwFVJhF7mOnvaHDQWaygmZLWnDYyg?= =?iso-8859-1?Q?Cmg0NkiX5R3jvoGyZdQGXCHsmH1LD77W+i7QAS7usw8Nsd6/a0VRF7o510?= =?iso-8859-1?Q?zx29J5kqTKNO/yC2UWp4eAFizaDkmqpNdZ5fjxoBl4KUBSDbBJ0NfdG8TK?= =?iso-8859-1?Q?WwLDFko3JVYo31pNx23whreNlep64RlvsszIl1j9Lh8iJMMfqosZyweUck?= =?iso-8859-1?Q?H7DuONi/40QinL4CXmZkOOJNrUeCJ3/06Cb5LDcdQX6wb376ewfTevBYNo?= =?iso-8859-1?Q?1eutphfUBWtahGvqs/CTgS3cfGNnBh0HXn7LAq/NxI5MSDo03q626SLq8g?= =?iso-8859-1?Q?eK69lnwHhe26b/Y6ZmxIJWzk2mSpMAPCvsaVwlhY/8uuoj4vqnUvilgTNc?= =?iso-8859-1?Q?J5p5W4swtPGHWjiPlB8tbHjZxdSViTavlqdSLLLGaXezdFknLthvU0qNWG?= =?iso-8859-1?Q?0buIazIZHZH5WFVMFuVU3t9mqqQ7XTplEk3r6CKvMgug6N9pUcWv4vLUK7?= =?iso-8859-1?Q?pAikRwpF5Ubt3o7k+Uct5Tl58DU3k9zOkjGln+iQHziIVgNmFTdhLcOpcd?= =?iso-8859-1?Q?7WqWDOtIJC1Gms4CbL4GrDa9aIRpY5kCXu6MQiUm1uUjXvgsrRQnwhevFQ?= =?iso-8859-1?Q?ZU5skwEoHAIU/rp2xAm6AAGGUyELbxhMJ/AhIkYL7hCYLZbmBrvSj+BquN?= =?iso-8859-1?Q?5I4XSEbyfqx2jkP8q8YcVthuOIiR4VI2+mlQvz27J5wFwHYCo+My5g/YyY?= =?iso-8859-1?Q?aeut4iBoTf1y/xC/14yaz5JTIyCgkoeTBHMQ4KiLp4ItfgPc03M/u29lGZ?= =?iso-8859-1?Q?FjH/Q4Yfie/nK4XNsjDELbtQdCpjRWmFyF+21CM/V0kMyeLPYpaB2GK0Z+?= =?iso-8859-1?Q?rVCOfHImt5wtYhPHNt4iQA31J4kVqj0lboxrvtfLe94ZHxMhzm+3r2F6Qs?= =?iso-8859-1?Q?xTmrC?= X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0130;5:9lb9nESnH1mBEzEpPcMcC/eIEAtTZqY6ltZYR0LbW+5Dg1WGLJj5SI/wHnSuIXNqGUeqv2LykeqcGCD/5mPoJF8zgLO+AC1q+ivTCP85uHBRmqDFM8abK1nkYcTuLAdrnFh5DtzdPtkcB22um22Kjw==;24:7SMREx+l1YGFg++GX1fGFRoyP1GpNBFtVzXcUNc/abaDHWvT8vM263jAh4ENNEGhkfZyjUqFCYF2vFRsMmiBFyiW7dbDYZDzoCjG4Z5OlkQ= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2016 23:55:14.3631 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT5PR84MB0130 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/12/2016 03:40 PM, Peter Zijlstra wrote: > On Fri, Feb 12, 2016 at 12:32:12PM -0500, Waiman Long wrote: >> @@ -358,8 +373,8 @@ static bool mutex_optimistic_spin(struct mutex *lock, >> } >> >> mutex_set_owner(lock); >> - osq_unlock(&lock->osq); >> - return true; >> + acquired = true; >> + break; >> } >> >> /* >> @@ -380,7 +395,10 @@ static bool mutex_optimistic_spin(struct mutex *lock, >> cpu_relax_lowlatency(); >> } >> >> - osq_unlock(&lock->osq); >> + if (!waiter) >> + osq_unlock(&lock->osq); >> + if (acquired || waiter) >> + return acquired; >> done: >> /* >> * If we fell out of the spin path because of need_resched(), > Is there a reason to not also preempt in the wait-loop? Surely the same > reason is still valid there too? The waiter does check for need_sched(). So it will break out of the loop and return false in this case. This causes the waiter to loop back and goes to sleep if the lock can't be acquired. That is why I don't think we need to do another schedule_preempt_disabled() here. Cheers, Longman