From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932129AbcEZVLG (ORCPT ); Thu, 26 May 2016 17:11:06 -0400 Received: from mail-am1on0069.outbound.protection.outlook.com ([157.56.112.69]:11175 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755126AbcEZVLD (ORCPT ); Thu, 26 May 2016 17:11:03 -0400 Authentication-Results: zankel.net; dkim=none (message not signed) header.d=none;zankel.net; dmarc=none action=none header.from=mellanox.com; Subject: Re: [PATCH -v2 4/6] locking, arch: Update spin_unlock_wait() To: Peter Zijlstra , , , , , , References: <20160526141922.163198062@infradead.org> <20160526142354.293350777@infradead.org> CC: , , , , , , , , , , , , , , , , , , , , , , , From: Chris Metcalf Message-ID: Date: Thu, 26 May 2016 17:10:36 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 MIME-Version: 1.0 In-Reply-To: <20160526142354.293350777@infradead.org> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [12.216.194.146] X-ClientProxiedBy: CY1PR15CA0037.namprd15.prod.outlook.com (10.163.14.47) To VI1PR05MB1695.eurprd05.prod.outlook.com (10.165.235.157) X-MS-Office365-Filtering-Correlation-Id: 2f101a11-45df-4d70-a7a8-08d385aa3b19 X-Microsoft-Exchange-Diagnostics: 1;VI1PR05MB1695;2:06plzbEI0tk/KGuyvgoNKbMA6E93JXwV1JIPuSz2wDa0kLIamKge2c5Mk7Ma+0CFwMQ2+40W4Tw23fcekwT3f+gwwcK6fLUENCT+pJydNBNc1vIOKRUynVBl6P8PbaKjmeOD/sJTcMiAO9+zt4CysHBJTpbWNpHCsqq/5SYXbWG8LhW+StOCrmKbNgWDNcrD;3:bhZdO0ERidJOQ8ZZJluT7WYUtoX0h0EngCqjChgN8P2BcSoAxIh0oA51yUBrvZTd/HmWOPqGuu6IFrxqDv7FGYo+0ylhP7ZyJIJuORNFVreOrSNA3Jv46GrPPkGLSMA+ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR05MB1695; X-Microsoft-Exchange-Diagnostics: 1;VI1PR05MB1695;25:vnR1immhLLq4zMKCZTa7cPKCBzGHB1fC0xlJfEdLjZUGbBGNooioBe2wvoQnNaeWqK+q13pdEtMvRemS8iFoxanNUX1Gc+/l9jQmLJQ1S8m66v1RdBkv3tzOQr7QjTMdEJGxbBSjSECxw934UyA4thKDihESUAiGDkFbXALGb4W/sRIV1q3UvIZempUf0XI8NVrO4AiDFFskjb1exCuEzQLQbND6KPfP+fp04e3sT+rokmqQl0XFzzPUYCldK1RitsZWGw1YlGgDUphaVNiq4kYfETJZkV87P3xRWoK+xhXN3TSHOdCTUq/I50kq5L7/bNLLbyPG0fZZE7Vjmg+3Kr/fpcINavw6yj/HKk+oIT2/ztx+L+I7YibaXQsnpmKMmvmfdhOG6H5ZMpIS4svkHihbB3LELubzDSw6uud7i63E6eztdP5x6pyd78WQSSi3VDtv1KFQQpQWX7EsPf/lPtdgE0iajQTfpxoGEdaePUs88iSOI7otbB+/yLXpWk3RzrmwevH7FT0QzH2roWSzRKmxzScyOi63CLbS//64ZUe7eCpXbyoK7vwz5h9JCKAcFBSylGMRR81ylZRV3DEd66FUVMmGMSW7NoCSu/bEsZvLrrumkvOWFUs1xAxNLilXF1WEbcTDyDxZvwGGmSwzqEeyrDX+EvBYRhZyXfB5V+9kPzaXZ+pMWHIq0+29Lv6xwZFoZ1179ef4UpZPzxnJ03FyMCCntw8xBq/aX3m+lw7woSY/TfPO1AYA0IfATII2f5JMgMsnHHV2bwNnGluS4Wu8qfMwADFU/M59Lj2Hq8U080UcU0xklMCVNfa/KCnN X-MLNXRule-EZCH-Linux: Rule triggered X-Microsoft-Exchange-Diagnostics: 1;VI1PR05MB1695;20:/PzBPlNBO6Amle+s8RTZ8yRCDwqMEOUu8ZrbTzxUeAlgaTA9Evae7yPTn7qvIu03t6WsePR2D7Tg0IOLtIreI7ogrz8or78ToTtxu5KXJruFrSINiU8RbJj0TRBOrZ4l2K+8QYaLyiyx93vS/EiLtHS+OyTsUQziA1eqIKQR1JPQcCtgWlRKSJJiwrq0+7yxwKhli4q1c622wTe//wFdtrXiUMDfT/2q8ntIl1gQk3rjj2bmTx6MXxXo71itXLrHf4QHQwIuUANijompnxZI6qJTK2ZqtqlPhj0FIXVak0pe4ZHUbF6vd9LTZgUaT143OQYdPt6cGPXJ1hwEdrk8bozMQeXBwwEgDA6edyp1FtkJEKlX6UExeEb5YrHt2gZ2AO0XRac6KB5fVveyKIDksev0aH0l1pirwNsBAfbtQ7PDHC1wmhvMquglxEeVifYGBZ2gh/rVm0FQcUgvl6NW8iID91d49fp5sgLwIM+4CdodgsRVhs4C5YWJ3FPqUF5E;4:+Ww33qa+4RWNwH1xxNruGXG6B3z+q+t2C7JVrsGCWiMGlp8BE8/oSEL81kORswxKZ1pxkzrTqrnHUoBX097ruAAWbzUX5MRuCOLQl4ljhFMwBvzy9eWpsARW4DfMxJ9bleYwUlC8/Bq2dcxij82DmHLrljOprI8zQEA+qh5YXH7TpeHtl11wPZjJpV++TyruHRSj6XQHB0b7Q9wa65wnJcjUZcULSo680GreSdnaKjuKh60vgTLLF0PukvC0//I/5SPm+2RVlg5ogi/l0xOd/FUDG4syoC/tEeL4mZIzbiVdVnRAyGenbiMUeYU4ujFGOEVXaB0jv96RMq9uu19TEj9/u9Qsgi43bdTNkjVUReGD8DJWp2/H4uyGx1xJeqx6M4UBoJP1KyLwG1zz2DmtzQ/Isj0+aqwIsFC65ELsbjqoxrC4uBG/9LUKWU7OPIyd X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(171992500451332); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:VI1PR05MB1695;BCL:0;PCL:0;RULEID:;SRVR:VI1PR05MB1695; X-Forefront-PRVS: 0954EE4910 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(24454002)(377454003)(86362001)(92566002)(31696002)(2201001)(33646002)(65806001)(66066001)(65956001)(2906002)(47776003)(4326007)(6116002)(3846002)(23676002)(2950100001)(81166006)(19580405001)(5001770100001)(15975445007)(586003)(77096005)(5008740100001)(5004730100002)(83506001)(8676002)(230700001)(189998001)(50466002)(42186005)(36756003)(54356999)(31686004)(76176999)(4001350100001)(50986999)(19580395003)(65826006)(18886065003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR05MB1695;H:[10.15.7.169];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA1TUIxNjk1OzIzOjdNNkR0Um91SVZacWpKZkIrb2VVZEJNUmlp?= =?utf-8?B?WG82cjRPdk9hU25iNHVmVktGdWR6VUNQdFNYTmUvOU5uR1FQMEpKekV0NjhP?= =?utf-8?B?M1JtSU9oMEVFUk1TdGFud3NPOTFlTGhOei9YdGFlejN6cHhpK0xDaXZScW5i?= =?utf-8?B?RkhPTG9oRW9UZTFLaEk4eVl1MkRvd1RNVDhtWERNMHlBS2ZzRlQraGVFUno4?= =?utf-8?B?OG45L0p0Z01PbzR1RFVyMkliTU1ZczlublJmM1NjcWU2MEZSeEd2R0pSTnBr?= =?utf-8?B?SkgyUVlya2xhSnBpYkdMZWdMVFZCMlBsUHhBSWxMdERhQmg4TkZIaXpZWjg2?= =?utf-8?B?UWdnMGRKSGd3OFQ4OEFGaUV0MU9KZTUvWGsycGZsaFBGeU92eDBIV1BhaEFr?= =?utf-8?B?a1cvSmVVS1VVb2lyV2srY2ZZbTc4T2dwaTdjVVpycnlBVTExMFRGNEZwU0Fh?= =?utf-8?B?OEhPeHBIRlB0cDdTbW9LUEdOek43cnROYTd0RkNwQVcvcXpubG5zS2VkbTlZ?= =?utf-8?B?Z3Y4L0F3NUhZQldBc1VVVnUrbVdxQlBsYXNETVJJTGZ3WTVFWW1nZEhHOTBk?= =?utf-8?B?SitwbzFaUUo1NWM5UmNvcnRBMGI3bDMxTWZFclFZZUpjcUdXOGd6UWJCeGps?= =?utf-8?B?MldKZ2EvVFp4S3BNSnpDaEJEeGpmZGdNaWtGRDZ5eU5CZXpMRSsxZGFJWmFu?= =?utf-8?B?b1VlN3NUOUFHVHloaTh0WjdVRHl2b3QvVVZqK0RqdTBKa01NRDJuSGNKcmNE?= =?utf-8?B?WFU4V0tkczFKTVpPR3pTV29MREtnQW9pcGJmRzI2bG1wYUp6TUQ5dmV2THBT?= =?utf-8?B?enRKaHdGMUIrZWsyRkJaTmp0UEtMMGh2QUxDbWNhUG51WnpubjB2d2pQVXB4?= =?utf-8?B?NlpsRG9LS1pWZW9hUm51RWc1V1JCTU9oMGpvdlBEU013NGNsMmpGanA1UUxs?= =?utf-8?B?M1R0QXhnZkdyT00vK0dFVXRRMlg1Mm9sYmVuL2tkZldVaUFVTGZqa2FnSkpw?= =?utf-8?B?ZlR6MW1rQ3V2U09TUGdxZG5oSXB0OTRvMXdIMnFCd2NPTmM2eHBKUHdqWmI5?= =?utf-8?B?RWxxbjVVVUhuaktQQlcrMEZ1b0c3UjFrbi9UNCtmR1BTTFhBZ3ByUnpkc2ZO?= =?utf-8?B?MmlET1RjVnFxWDI3MnBYUXhiZWRacWpoVzI3Ykx0K0ZiSnpONG1lVVlNQ2gw?= =?utf-8?B?SlhLNytTNmdSVWRrWlNJMjhTbW5sSHd4azJObGpGRDFIVDZnSnFJOUc1ZDZi?= =?utf-8?B?L1FidjhxWlBYdVU2b2lmUlFjZk9TeFFWQXRkbzhCeW40c1o1K1g5YjlCVUxB?= =?utf-8?B?RnFLb0puL0ZxUHIyVHducjJsWHZZaXF3NUZnSU10NU5mYmpxSTJnQUJnY1cv?= =?utf-8?B?M3Zwc1ZSeGZ3SDBWN0JHNHRVb0VraW1zUnRtaGRZaFBHUjlnS200cEJadXNO?= =?utf-8?B?Vll0N0Z6ZUd2ZThUZDhNTTFmYm9jVlZBZWwrN0duQURleXk5bzJ0Ym50bmRZ?= =?utf-8?Q?WrFbS37vyTFhwM8BAXR59UGcQx9SSrPbLdiNtQsTgcLN9h?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR05MB1695;5:qpAGWdO/BVDTqE6tvfSkL/wxOVB7lb5rFpYckVRyFXRLptGyBsznZTlnKD5ljm2b5lNCduRDR697JMB59BWdSdX3j3TA4r5u6cf251WhgemfavTkddR0lgrRqBPHS3kI1y9yxCvNhBix3MqUtrF22Q==;24:1wivblAZ9Mqif+s5J7cO4Ldcc7/0FHv2tzVC90uciwBml1FzHXQJzGcDv7PW2Ps3d5pqauCUaTBilqMPnrsHPN26jjGUID9HGeBk5Pc9CME=;7:paD9n4mj7SSl5ty2L0jVqIKZJzpw8NNLcfp6daC43+kaD8wrlphh9Vn+/WZzyAjMIbVK45VImHwwoAxT8ttHiFU/EmahNMVVKtV24sgliy7rtvmC9kZMKJz1gjNWgvtOLS8Hbi873b/uJKhfa5uB0mKAKYI+/XqhZ2jwlWYetIJymC1NGqRMg2kBhyMJ7+86 SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2016 21:10:50.1216 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB1695 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/26/2016 10:19 AM, Peter Zijlstra wrote: > --- a/arch/tile/lib/spinlock_32.c > +++ b/arch/tile/lib/spinlock_32.c > @@ -72,10 +72,14 @@ void arch_spin_unlock_wait(arch_spinlock > if (next == curr) > return; > > + smp_rmb(); > + > /* Wait until the current locker has released the lock. */ > do { > delay_backoff(iterations++); > } while (READ_ONCE(lock->current_ticket) == curr); > + > + smp_acquire__after_ctrl_dep(); > } > EXPORT_SYMBOL(arch_spin_unlock_wait); > > --- a/arch/tile/lib/spinlock_64.c > +++ b/arch/tile/lib/spinlock_64.c > @@ -72,10 +72,14 @@ void arch_spin_unlock_wait(arch_spinlock > if (arch_spin_next(val) == curr) > return; > > + smp_rmb(); > + > /* Wait until the current locker has released the lock. */ > do { > delay_backoff(iterations++); > } while (arch_spin_current(READ_ONCE(lock->lock)) == curr); > + > + smp_acquire__after_ctrl_dep(); > } > EXPORT_SYMBOL(arch_spin_unlock_wait); The smp_rmb() are unnecessary for tile. We READ_ONCE next/curr from the lock and compare them, so we know the load(s) are complete. There's no microarchitectural speculation going on so that's that. Then we READ_ONCE the next load on the lock from within the wait loop, so our load/load ordering is guaranteed. With that change, Acked-by: Chris Metcalf [for tile] -- Chris Metcalf, Mellanox Technologies http://www.mellanox.com