From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753059AbcBOWHF (ORCPT ); Mon, 15 Feb 2016 17:07:05 -0500 Received: from mail-bl2on0105.outbound.protection.outlook.com ([65.55.169.105]:3960 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752608AbcBOWHD (ORCPT ); Mon, 15 Feb 2016 17:07:03 -0500 Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=hpe.com; Message-ID: <56C24BFC.4080908@hpe.com> Date: Mon, 15 Feb 2016 17:06:52 -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> <20160212202355.GY6357@twins.programming.kicks-ass.net> In-Reply-To: <20160212202355.GY6357@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: BLUPR17CA0011.namprd17.prod.outlook.com (25.164.14.149) To DF4PR84MB0140.NAMPRD84.PROD.OUTLOOK.COM (25.162.192.26) X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0140;2:r1xi/l0UWVhEwVLhHcthw8sn02ojTNssdp66W3NNdPJ5vrXpcwMelZ7P8w0LJFTAdqqfLmnn254RKyBq+cRUj5c9RhWLiWlbYXpKB4+apa7QbCvReQ4KdqWjI5AGqyNdxVGDGCK4ihcLOUkJCnWmhA==;3:wNCIOwruIign2ucxyc4vs/7fLdCGV6M5qagFBIx3fSxsPFim5LdQazaFRh2LaGgj2CnvYcgWFkubveAKgUNh+2d7/mWA9SRHTTW53QR4K/PdME/KuQrbJydlfHOgvNgp;25:KA8T+sAXLrtiLbBtgnBI8Zr/PhTJpxusW5BOUzOqp36/A7+BJgyXIV38mb9uRelkBASgqP7xWJC4JdrU4eWqQa8X6tduYkV7R45kJTSS1hAwtRx73vVA3pXchMhq25nxArI+K9w0RfctiJO364UY4IpOFUkQMOIk9IIZIdjm3uCTvznYf4IYc+EVXe/GJ7vr0EQPavmHp0qg5LZTGN5NDkhaFnCubwIt/4MCu5cChf4FC9XrCV9U52Z77zaDyB5lbg3FZWz76koRE9vr1/liUivA7COMXe7Ag5Rz7tXnsMqCbHh0vAFt9mC9LXbxwhEG;20:KDnLJ2q1JfKAtWscuxDieMhCM4DSe8wdQJW4MB2jiZGQMwO35W22cMq9BKwcDdJtXUXPmogNgaFHzM9XGgh0CXS/WsK5ZaDlZ0erIuLqz9IrQ15XiWB3u4RGjTosVGwfBdR/B0I8KFTuTH6lso2G+ob6KkNcPQbs3QLGiz/WNkCc8oIrxG9SM28t0lVpVadOIjjxvINF5huFujTln4lsuIRPVI3hfK2TXr2q9aGlz1c0B9r2Mg31zSGLqQUC2QFS X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0140; X-MS-Office365-Filtering-Correlation-Id: 00f2c4ad-435a-4869-49d7-08d3365453b7 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:DF4PR84MB0140;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0140; X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0140;4:4+thYc4sijIhrfo55gJv81OO3QVNyPz0ugUGo7CsROg55OEbYJRWSu58C3NqQFblLbifo/GrWbXm2IXadJAAPxn+XA2wC8juesFhHHD4fiPzUQcd75OH0jU0PWbt8n4rQa078SNQlQZ4YcQ+lEPvSSVre39KtT9/zzsNF3CRbPQNUqjCSUmpnpfv+T5O//alGTQrlPMnVAKibh7bFzqamBrznenEIfzm9shkQMLHS1BOqeKUCJNfTQyGSo16pVDitvjLceo5BWBlY0N/SjiK1sfqQrStxeoUofNRFitzIlp3q/VrBa05zqZwRn3THIX4tA+N79dCHWrNvbHvELlFosKgaNM8DbcLspiAwh7It0jpi1JjHCM6TGj7l9CTFafe X-Forefront-PRVS: 08534B37A7 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(479174004)(377454003)(24454002)(5008740100001)(36756003)(5004730100002)(23756003)(2950100001)(40100003)(87976001)(586003)(54356999)(65816999)(87266999)(92566002)(50986999)(76176999)(4001350100001)(189998001)(80316001)(2906002)(1096002)(4326007)(65956001)(33656002)(83506001)(230700001)(66066001)(50466002)(77096005)(110136002)(86362001)(65806001)(47776003)(5001960100002)(42186005)(117156001)(3846002)(6116002)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:DF4PR84MB0140;H:[192.168.142.186];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;DF4PR84MB0140;23:4M70UyoTTXPvc4YwX8Xy4aCamH0ghk36nUWf0rQ?= =?iso-8859-1?Q?SCWoh+NeOtjMckdGjZef206WYbdbIkRrmSWjyw3sry2VPQI+XW1454n+Xe?= =?iso-8859-1?Q?GXEjzPI0tCC4vXrDR7fAy0RWKlGHupzbhhEr7Ge47OWti6PyHqt50s7A3R?= =?iso-8859-1?Q?TSiy7twcUUrok3+sTtLpMEEmNJSUX1i5bT2au6/gloCjduaoTQct5g1Iho?= =?iso-8859-1?Q?b/znNEAYO8RgKLHG/iiXIPcli41UVsgRAd6EdA06ElLslVUDOA7teoWVyn?= =?iso-8859-1?Q?18m4awgVlAgdNG5n+P+/mag/fy7ZsKhBROeGCoLl9bfbCOcz6QeUnHybGd?= =?iso-8859-1?Q?ZP6fY9byJnPIGrA6Kn3kf3B21gzm7InJ0Rwl7/kpncCFNU0Td7HD9/l3te?= =?iso-8859-1?Q?FlY9Dg0agTtrb7B4OmDOc+W9vK67BPFdTGtWwX18lb7esWtyu8okckCk0B?= =?iso-8859-1?Q?lrBYdgZI129cQ4rSe0fevSQnOpQ3u/ippS7k/a5qL1JWEVkSLKecLA6sz8?= =?iso-8859-1?Q?Ylf2Ii7OlnU/ZNKou2kUOk3P2BBiFuYbCWyHt/mYIKGC8HoAgkmddisFHd?= =?iso-8859-1?Q?RdGlW6iEElAjpkDNaNiO8ugbzVdmavehZMgYPciDjzljps5w5m//KY61Lq?= =?iso-8859-1?Q?/xO5oGvQWIouQXL+SawIQimzuodn29SBDS37ug0x223eWUtantIlU3AcOG?= =?iso-8859-1?Q?akbHXZ8216qZkBZFi3dOFxTg97EFQsgX16jFHzew6Z1lW/0P8gkvnBSDKx?= =?iso-8859-1?Q?z2e2FVLvqY/+7S2Bhffs6gcEEk7pju6erqB29GEpdEoDSpaqCSfmHpbUEG?= =?iso-8859-1?Q?t7RueWrvdb2hF42WUKniGD3n+kLlqwDzicoh0Kh0l131BS+Be400fw2zQN?= =?iso-8859-1?Q?5Px6IcrIwinVw/6kE/Ca3fgk8oLZtDAeEe8yYoatRMCasWJ5FodQDamObS?= =?iso-8859-1?Q?jPRIB1A74sq0s8s6ipurtpfvmNcuKAPjhMn5CWTHS50Mtk+zKWVsx2UJ9n?= =?iso-8859-1?Q?pyCefU186ww4ktSdPlGxk43ZqKxAUaUiEYfzBRQMBfLwoa/qtVMnCn+ZMB?= =?iso-8859-1?Q?Eo2nZ014RJS3iYGu9+/eQGTuzOFdlqwmJo7nD9HuOynvsT8M7VhswigclH?= =?iso-8859-1?Q?3D/Ar1f3A7Q/4hXu19M+ILa8jfn4Ch+nJAjve/8GYeooCXVo=3D?= X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0140;5:4kPYB09ERKK57M6ELk3e16g4G7PK3LjwQd6wc1PkT0Wkw4icUb6/9n4idhas1w8JfA+3lT4jPNL+rCcLhyJB78go+xfqzHOEiqmlanU3vvaDBkdzJKdn4uEczZ35GqP0SlhYKKmi52HquVHbVStElg==;24:KHXeY04KhrLsLysBZOpRtYvorZuJqw2xWJaHhQiNZlHoK4xPHrXoJGaMl6AChMSoDQmkZM+mhFeE6OzXSzF3SNHJO2yl00jIVpxG9wkBTGg= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2016 22:06:58.8420 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR84MB0140 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/12/2016 03:23 PM, Peter Zijlstra wrote: > On Fri, Feb 12, 2016 at 12:32:12PM -0500, Waiman Long wrote: >> This patch adds a new waiter parameter to the mutex_optimistic_spin() >> function to prepare it to be used by a waiter-spinner that doesn't >> need to go into the OSQ as there can only be one waiter-spinner which >> is the head of the waiting queue. > Does not explain why.. > >> static bool mutex_optimistic_spin(struct mutex *lock, >> + struct ww_acquire_ctx *ww_ctx, >> + const bool use_ww_ctx, int waiter) >> { >> struct task_struct *task = current; >> + bool acquired = false; >> >> + if (!waiter) { >> + if (!mutex_can_spin_on_owner(lock)) >> + goto done; > Why doesn't the waiter have to check mutex_can_spin_on_owner() ? The reason why regular spinner need to call mutex_can_spin_on_owner is because we want to avoid the overhead of the OSQ if we can't spin. As mutex_can_spin_on_owner() is similar to mutex_spin_on_owner(), the waiter-spinner will exit spinning after calling mutex_spin_on_owner(). Cheers, Longman