From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966347AbcIZVkV (ORCPT ); Mon, 26 Sep 2016 17:40:21 -0400 Received: from mail-bn3nam01on0092.outbound.protection.outlook.com ([104.47.33.92]:29475 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932653AbcIZVkR (ORCPT ); Mon, 26 Sep 2016 17:40:17 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57E995B4.4070003@hpe.com> Date: Mon, 26 Sep 2016 17:40:04 -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: Davidlohr Bueso CC: Thomas Gleixner , Peter Zijlstra , Mike Galbraith , Ingo Molnar , Jonathan Corbet , , , Jason Low , Scott J Norton , Douglas Hatch Subject: Re: [PATCH -tip] locking/rtmutex: Reduce top-waiter blocking on a lock References: <57E319BE.2050208@hpe.com> <20160922074932.GV5008@twins.programming.kicks-ass.net> <20160922144123.GB13358@linux-80c1.suse> <20160922151144.GC13358@linux-80c1.suse> <57E43A46.9080601@hpe.com> <57E43EF9.8000400@hpe.com> <20160922213921.GA30291@linux-80c1.suse> <20160924012803.GC30291@linux-80c1.suse> In-Reply-To: <20160924012803.GC30291@linux-80c1.suse> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [71.168.64.185] X-ClientProxiedBy: CY1PR20CA0055.namprd20.prod.outlook.com (10.163.250.23) To AT5PR84MB0308.NAMPRD84.PROD.OUTLOOK.COM (10.162.138.30) X-MS-Office365-Filtering-Correlation-Id: a0e6c2ba-5148-45ed-c67c-08d3e655b41f X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;2:ALqQJGRHH7eK2s+RhBd5g05Ozf+dD3+U+2N8stB5fXQvmz7SwlVcssJDkw+SMcUsq6Mk8pEdaoZGaXT0hRkMUjqWVo5o+h2VjLLphRs6IO/rlu8/7s7l5yxfkGs0M52es4XgmsHHTrXsSyhrEiU+AGqecSchd6kPD1kfabxrGPN7iYDRF3qJCnbbhpANrshP;3:qOzd43/1f/AD6N8S/aLvJOV19j/WGmcHz/CTEZqz5yj/MPUqLrQZi1B/nLZZ8HfEyRWYEjdH+6vMEGgHgM85tD6/jMIOOpkkX+ZHmFsTGlwxXvfhJk8Pla4WwriiuSaD;25:XNfNHedx78RgVxIQbAm4gzApt6lm17x1YgHN+4Hr1GznSYH2jFvt9Uw24vjpl0uw/Tadrc25xp9f7ARG1/07zKbGqj40hJhiHrTKqtlpoDrmYr2NiUxTnNYKmEtdmzfaHRExz4Ie39XdxuGT/gitubsTdO7G16aHNtfDNlcKJ6SQFa6wt3mOW2dAdiG9hkIaWxJypbhI0hxNmq0oEPsUGWM1O3rH75AAhnxDNn/RsAOdLQd4ybB1piwZs2LNDi0FSgkDict4SR5LziXmRlySw0e95eWJzt7sL8VDmX+F6zGEvM72uog4w9A4+nsfE3YKQ11Kx31OYYYij1/WwJDipNz8ecqeq+QrD3+7oJtdBhTAdNn68lGSbTVOhTRw+nfDOgprrmDCGIWFRlQgQXuJTi9DU93Th0WMJdxci9mZqP0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0308; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;31:E4BGtMj1sPR979gcucxEsFMH0cCKPRnWeKm7eN9sgW9R6Lk8AYt0BOUKS+IRnHm8ozPGqADx19KgO0/pwFTCoJIlx3GqNdVV9J/RWGFFvwbd4sv2wn5U7rjonWI4dA30KS2VgtMiDnXcNGRg9oeYoOrjnfvfeHtrTyTLIvF8o3yTsBYZPlTN7Cpzisg5BCiW3kKAEhQizlqkwdfbicSszE62MFSxprJBH9c+BNB07do=;20:wf515Ae2dbYquhCIGPgsddLx+j086yVJZqljSbZBDzROg6cJYCegfPjIgp5Dj/k8h4sa9DwhIRgT+CeRIwYXH7mJO8XJZjc93hA8+unjPTah5gsoH4BljLSdCjcThrlYgD7CklbKLS8YNrCLnsS+al8Rq+1nup/rbmeSL2dsntE3Ly6Vo3mF4zNyGjCRb27j/GPQZ2wLBBdKu7XyxCQz6b7Z8DGbCrektDoXsKfH+3ldIhS+Zkb9Xc2B0u/aQ+EeXxDj3TQOU4US3QcKUA2rKVPiC6c/I9W3ZmRvbkAwa8GnbAmEVKVh3ACiAS/k8J2KcxtYD6Qa/ROEfBsbhkjcd3Q+YSt3CMV31EV3H1xOHd7XaBYaP1S1/Pam/SqAV824lkht+tGcwq2Uo1VjYzXH/MxV51gsHHiQZTGlZeaDLEs/w1lT2CKqgIBvAe24ZVxhEBI2gICnqTuPCUvX7C2fypQmwp2T0EkNDukzD9fCkuSudw0wDKEMN0oYgkjaVc5w X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026);SRVR:AT5PR84MB0308;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0308; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;4:HotqdOxBaUjKz6WYEyTugUjEO6IO//Gamin9BopG3bO1JyUZqqvZccYH++aTIGpLzobVtaXgtgVPiPBtlC1A9zj9e5Hnj5RT4v1tl9JVRTEJA41Ua8n55OZq7OMGOKdJHlIYcpZSHZDBARGulRGx0nHzKcukZT4UR4Urw5uItH57DZXVHADIQllKeoSRf+afv84e1zeeJYKYt7974ViO9nrZ70mc0uKm543mQNxdNGc81T8JP+1b7JvunMxGMINEWoYAzMhdet+B41aFR+2KUQjRoCjtDhvRu3LSHBXnHasHRDHer8NU7Muspbx8D+ww5IBwhlE5V1gvjY9JarLbfWjT15si3VUCLkXxXpkbM5kbuVI7a+KS7KPygfl+I+tY1yG8r2XmxeU6AbiSmqn+TA== X-Forefront-PRVS: 00770C4423 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(24454002)(199003)(377454003)(189002)(5660300001)(33656002)(65806001)(101416001)(6116002)(3846002)(305945005)(230700001)(47776003)(586003)(86362001)(7846002)(66066001)(4001350100001)(68736007)(80316001)(65956001)(6916009)(77096005)(7736002)(65816999)(54356999)(105586002)(8676002)(4326007)(81166006)(97736004)(81156014)(42186005)(189998001)(76176999)(92566002)(87266999)(106356001)(93886004)(59896002)(2906002)(23756003)(50986999)(50466002)(64126003)(36756003)(2950100002)(117156001)(110136003)(83506001);DIR:OUT;SFP:1102;SCL:1;SRVR:AT5PR84MB0308;H:[192.168.142.133];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;AT5PR84MB0308;23:8Q1fwNc1yKQnazxg6f8C50dqEL/mWHc8q88w46t?= =?iso-8859-1?Q?tn45EvfVSoehVbOoc+zbE5cEFx8mG91IVMZzdFjCg2yqFHVOP1WFsr1n4i?= =?iso-8859-1?Q?VDCKz/ZddH0uFyiGP+R2zwJc2PtZOMCP+nw90SZywtbXj8sWzeFql7hV+J?= =?iso-8859-1?Q?gMIVEmOE+W0NoH9Idy80eeUN2/sV+u7lCsseytWQZhY7xb2LxWy6jaoAom?= =?iso-8859-1?Q?EEoKRyun+0pl+BjETAlnswBdKl3eHlTRZ9kERcvn1LCdkP0HvvClTAG49v?= =?iso-8859-1?Q?jzLGM+vJ/jYCDU8DX+2y9FPrGvU6MMymSrvLQjNpwsAXoYi7bTNd4+YGV2?= =?iso-8859-1?Q?G/rmo0xSDF4trJgSSXBIpgpT8G4gEaoG8ycn/qYVx5Rr71UJ1RFxzDEzlc?= =?iso-8859-1?Q?fT5A+XEfuD8mpDn/C3AYbgRZMwUq+RuS3LH5H3pUtLdRAl/oL1KId324mf?= =?iso-8859-1?Q?nu6aIaeeX3Sp9+xksfKLypDpW0gmdevGNLXN4L4t9Q10NVnzkXg/Nm3B3H?= =?iso-8859-1?Q?tA9f+uI/UQG0OYssCFt9FVBDO3lUtKm/4evTJkVU9Fv/YOtPF/V56gdQmE?= =?iso-8859-1?Q?Lnxnm5UCtBPzF3ntYp/kngrwhEHtYjF++JLjj7vwxjG8jsmI0dI/n1htLw?= =?iso-8859-1?Q?/51o+Iv7Hqm1Vd1OFM9u0LEH166gl9NM2LNQlSNAHrIgktCTj3WJqKmro0?= =?iso-8859-1?Q?Js8n8FndiWY99TS2qclU7d50fnbXbCNVshNkWucMZp+hxD4Eb3Oj9Wfqfu?= =?iso-8859-1?Q?Nc3q/0F/FDVKTp3wTXB7RSugEj+mxUrv/ZOOIACVJHImblx8zmzOnL1BBR?= =?iso-8859-1?Q?8mL2FvPPFoOcb4mpObOG5o233J+dtftq0J5iUaObAeGHK/bfgGQknAjneV?= =?iso-8859-1?Q?fWJ6k3EKlRWNFCoTOUc6zhOwrzYdlhRuRIpBZhxTcqEyc/Wq/k+Yh9fZ90?= =?iso-8859-1?Q?9xFsnRYIbCDWuPOcWw14QN75r2I6HEUs5CydIxCpbfyV76PeIM7w0maz1t?= =?iso-8859-1?Q?BYRPNwMkW9DpdQ/FPb1MOT8B2+279/GUtiihwb6n853NahddKMjMGj5JFN?= =?iso-8859-1?Q?vdxUGwzeBuaBuB0Aquo6o8KZjvRcUvjUVGiSlDGYfitu0Dz7d2OCBgtACF?= =?iso-8859-1?Q?CxZaq/AEribMGO18rklma5JfuIMVtZpcLjE/SxXs8udCnScRggJ7/+xfOX?= =?iso-8859-1?Q?ETJb6oKvuDk/gv/DU+42u07eZdKB6UQRum7XncEhOybiPL+AlSSAN1wn25?= =?iso-8859-1?Q?EjLkuyJyyDBMmiw7j0Kr9j2815SsyUoDtrhLH0KSooYcxLCOa+LH1AW5LA?= =?iso-8859-1?Q?4eHs332C392LGbGn/5F+8ExR/lnZYdAl2Yqspsc0iRg+CU2utaG9vnGm9W?= =?iso-8859-1?Q?32ahYWuI=3D?= X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;6:G8Inmm3TaG5ZMMZ+77oEttGs6KbqEhMX2h52djjLnM/YCtPm1Sf9LhaWfaOAE9g0AxFvCfTICA+BQEQwuVbUKvL2p3ZgMHbSB6aSS460RMmFYwV/uRJwjEK8etg1fBUNuGhTmo7Sg/j5lpesUO8oC/Oss/kA5PhTLyszQFwhcHmWT3C/61J8mlmkeCSO00hdOzZ+gADQXfwaMg2NTFsRpVRrB/4DyT+65Paf82wy4LmPjRMDyIEmZPn+ViCF/qWCAdF0ehdWHy3934H4RMIgUzAYc6IVvQI4udaBIPMTDBRmPPoc9+gOtZ1AM242R5QQDbZZzT1fizhXEkcFYQYDug==;5:g0Y/aJUNp5sZwLVCTUFKhmiFvkg71HU9zi3HL2gm5F5redSFmHLGN8fxQc6CvwRlGiYBSVQ5Ub5IB3ycJ7d3iYsrLcYPUUITCFXqthOhHiUxldt1avAl6faPoaRZJHDLI9vFwV1ZMG0tGIbA5dUDVg==;24:QpgD8HBPMTpbmq6g4rRmm+BAmtt72UURdxjubVYi3xZH9fQ6SdDUfB1FJKqZk/wU36VHUMy2Wwe9EnvfewXwOOaWFiSrZ1leAiK1lbYckLo=;7:93+xX9TCXzBevFn7nqbCaykk7CSV7KAVnOfOc2gDq+IgODCl+nip6ITa+6QUm+srFXxhr45gxK/dKPBOxrLVCcDfMdsHfiGAko4HDxK9tmdVkGrl0k2rh176Zk7ew48Eh0YXZLgJ2veCmCaCCkBEzESDMWeLND3bl899FBhndjWs3vt1akrSDk6J1varasZ2r0s6ZfZjD875Zb0sKQIBa8MuaaiWpZeii5/M5UIC5iSyZVkVj6b02rIVNhLaTJOC1rYVqU3tXWVHUeFCyA7ofXFNZSpZWROqa87X0RUOQRXSLqqL/tL2W89h8PRSuQsQ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2016 21:40:13.2661 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT5PR84MB0308 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/23/2016 09:28 PM, Davidlohr Bueso wrote: > > +#ifdef CONFIG_RT_MUTEX_SPIN_ON_OWNER > +static bool rt_mutex_spin_on_owner(struct rt_mutex *lock, > + struct task_struct *owner) > +{ > + bool ret = true; > + > + /* > + * The last owner could have just released the lock, > + * immediately try taking it again. > + */ > + if (!owner) > + goto done; > + > + rcu_read_lock(); > + while (rt_mutex_owner(lock) == owner) { > + /* > + * Ensure we emit the owner->on_cpu, dereference _after_ > + * checking lock->owner still matches owner. If that fails, > + * owner might point to freed memory. If it still matches, > + * the rcu_read_lock() ensures the memory stays valid. > + */ > + barrier(); > + if (!owner->on_cpu || need_resched()) { > + ret = false; > + break; > + } > + > + cpu_relax_lowlatency(); > + } > + rcu_read_unlock(); > +done: > + return ret; > +} > + One issue that I saw is that the spinner may no longer be the top waiter while spinning. Should we also check this condition in the spin loop? Cheers, Longman