From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751454AbcETUob (ORCPT ); Fri, 20 May 2016 16:44:31 -0400 Received: from mail-bn1bon0147.outbound.protection.outlook.com ([157.56.111.147]:56033 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750995AbcETUo3 (ORCPT ); Fri, 20 May 2016 16:44:29 -0400 Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=hpe.com; Message-ID: <573F7723.8030201@hpe.com> Date: Fri, 20 May 2016 16:44:19 -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: Peter Zijlstra CC: Davidlohr Bueso , , , , , , , Paul McKenney , Will Deacon Subject: Re: sem_lock() vs qspinlocks References: <20160520053926.GC31084@linux-uzut.site> <20160520115819.GF3193@twins.programming.kicks-ass.net> In-Reply-To: <20160520115819.GF3193@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.228] X-ClientProxiedBy: SN1PR17CA0076.namprd17.prod.outlook.com (10.163.3.172) To CS1PR84MB0311.NAMPRD84.PROD.OUTLOOK.COM (10.162.190.29) X-MS-Office365-Filtering-Correlation-Id: 57ea173c-f70c-4c01-f28a-08d380ef886e X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;2:WEtp8pTn+JVDeJDz2bLYgmB/5qhwYsET95LECasJuKiu7IrAHJnkZCqySwuEc37Ygj2uyJmV5mpUZvycdFx7hPaR6E2BqESKTKwVJmcKDQSynEUIECwPsUG01egzwL6wPL6g45AU9qEnXFsP+GnofXpgYtVMsliNr9TwnZKwG4gcHkEhM9ColWSKqwYLuTUF;3:quKvQ4E6E6CUxxcBAjNAzl3YuM2kSOOHIaSgEKkZwkS/WQ6BoF4oMEgpJ7v0Pe0mxeqzkn/fTAnADsq75byVGG51KLEpQ035X+N2NhVCwJ4e/XEnn0VbN0E6iN427/KE X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0311; X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;25:0isaS1/KtJDqajKdf46s9mxg1ABQXocGJSe+NN0+rEdYTJM+tUlqNQp1JmUVvvtUN6RczhEpQrjH4f6slPEbEEQRo7wezR8KiTlauQ31u/FB9hqMUD+/SDYupKXkjlmZp0z42+RKSN66+BqIFTY+Pk0/Z1MwkiXzcyDlEgvt95J+FG0x5J689g/e9zQwnN8UpdmC3qMud7Wq86NjI8HMivLpEuJu3NgeS9PgMpYU5XTKk506EG2LxLclC7/vCFClpO+vITsD17zJA5QB2S1eOihclxLV6WtSgWZzKnh2zGSpF5yAQPW/xwsRkqcS154Cf011Wq+M5QSu33GKvoYqpYiftoobDlhpsAkyEhmIgQ1HXNAgRxvNbqAMGP+0+Lmi3jOFXb+GlgDI0P42rh2mjcYC4CSBXMAyyzV2BHZ2MEbUhP320Rq6l0YSZY5FlfNCe4x0yP60gl4lGsXoxojyPdeivvGi7IuPRlBWEAaHd/fYg2MXNraCloMN8yKcFViH8QZSX4/kYtt7BpN0ulim1vsKNfSn+H7Aij6LvPjHQkN0PC9Vq3LDlq9VwilRkrGhbO+dsU7/ggaXNqlyTLJqWy+YTQtb49bBO9wwFtY6Kb6Bmn+e7U5dgtKkxIZjn4c+cxOVIpdcDsgjVl86tWquZnGOwXcowPJ29DEAhB8MNj1hLubPMUDnVuAwpgx6wK8LgIWtMeubw2Wl+IUGeEhYaQ== X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;20:gaJLNA+uFGUvUq9NAHJgb9XuN4wdPIF4ss0C4k8pr3ltShTtx8r/Av4DpVkDytG/hSUgeq9Ahe8A8Dylkg1MaL6qAVH0TXWhmkP+LZL3KHUzEr/jqbXzPnCcGFLs7/LoQ2dyiCerPzV9s2dvVo7quX3lc5Gd+Bnss+6vw0j/m3i1N6a6wvpBzfyqHNH+TVRqHMhLtiVx/AYRrKrG1HDeMhqgvcejeC34qKXKANSM+egLEh55iTPKLL2fXqyYkmvLDywK9GPvhEcTuGWJA9nweQ03sJ5v0WDSJeXqAK2WnsIbw/en4IX7iFGRvCFHYO7RnzjWAc76pR7uGGc1gD2DPg==;4:hSIA6lIFeCRbBncuzWueLmcHuBMrD/cmDY10u00AOfbViScOfqN13EF7GXh5vNvSp1JyCgWVc81ssvQy8gZHuZHb/5RtV1OTuWEcx/G3jb/hBUF1tuORj+fFt/iX0REOxzOOi7t3H3Tap1ZMlSDFHFFL6ZfK35vnpy/8R2WdXMFA7+9Ax7HI2bdCDGT47s6msxWxTWQ68RRWgKH575vazxYiLR8YKjH59qWn0tLn8yaaXp0Zon62uD5F9S6iQJsGpNt7goQSYI2y0g0n2/UxtOftTYvPcmsVr6B72ANgqlHuTB5gsvejo/F0iqm225DqV7wAK4GW5cx/Km17mCYgSz+W50GHmKM0HHKBJ0ZDbLvlcDSyghYygV0ZYIlYwD8/ 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)(3002001)(10201501046);SRVR:CS1PR84MB0311;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0311; X-Forefront-PRVS: 09480768F8 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(24454002)(377454003)(33656002)(2906002)(8676002)(86362001)(23756003)(81166006)(117156001)(4326007)(64126003)(36756003)(54356999)(87266999)(65816999)(59896002)(3846002)(76176999)(6116002)(50986999)(586003)(42186005)(77096005)(189998001)(47776003)(230700001)(92566002)(83506001)(50466002)(65806001)(5004730100002)(65956001)(4001350100001)(66066001)(2950100001)(110136002)(5008740100001);DIR:OUT;SFP:1102;SCL:1;SRVR:CS1PR84MB0311;H:[192.168.142.135];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CS1PR84MB0311;23:8x7cwlBeb17Bm4zy++nDXL2ep+awjBViXuelJ7c?= =?iso-8859-1?Q?OD8MUp5FFhSVCvCizpByIZoN96wejl7+eucASK/oNW+YUWwnagMkycxMs9?= =?iso-8859-1?Q?IHnG/PwgHpx1sKCkFUvu1MBHI8ePP3IFSh4AVDfC4w18qFqEuv/+rKS+7/?= =?iso-8859-1?Q?xMYs9DYdPAl2C8dkT/yQDZ5XgllJYufGl4/EfWAi8sI3nu6o22Dr667+Mm?= =?iso-8859-1?Q?MC7WyuIwLLFl0uTvphx3BMh9v9NRAp89czWbFF8cWz/YEo6iiyRXMFoW2S?= =?iso-8859-1?Q?S4D7vjt59phTffGy8+tRWOOMla9owgYhq4Dc6vYSzz4BHW8jGhY2dqjugK?= =?iso-8859-1?Q?pGZRsPTsybe+M9xab38tWGPLqVFFm+HLTCWJdpKJiJuF4vkDLKvu1hTsix?= =?iso-8859-1?Q?Nlyal4AZRo/VhD2P6xYsHYBWrqa/axy3AxHng2+olL/ypOoUtQpRKKMMLq?= =?iso-8859-1?Q?zfsKJHKzN1tIC5cGk41bJtTZWEzgsxnLsXLdJj7OIqmkB4g/VxLKpz8rB8?= =?iso-8859-1?Q?M4Gjxm3z7nAhmm35/7VAe6GbGDOhSPiXeUHXBAkPMnUKr0/LWh5KNIeLcv?= =?iso-8859-1?Q?JzUhhcfvT9Hm/PiutIfPixLuWTTqus85cQC8pVCJBI9lo1HB5DnAsdDGVb?= =?iso-8859-1?Q?Zop17tFdOIxHPXhSERC8aMbNvvMt2NkcCv36gDsu3JKxEz3Z7FZgo4sXqW?= =?iso-8859-1?Q?ur8CcHIHuM2b95BK/mx7B3bPZ18bG2+pxHGcFbcERsBp2zYXY1X0v7AM4q?= =?iso-8859-1?Q?QdPOfGHQ7PSa854MiyFY440mKdUsarkMDAaBglBUcolah5JWV9M4YeQCPK?= =?iso-8859-1?Q?YCog2WcoecXy7wyJ9rZa7gp99Gnl97rgOziwlWOy0Scl+QOYABitkjpyKl?= =?iso-8859-1?Q?gs/M9PuUWdDEa7rUBjX8d6uTomT7xBQxDjPE+uLUxxgcVHDtosSjm0z9zC?= =?iso-8859-1?Q?V/tG+e8UzEhbB9dOnMvkFAwCtisW0UkeNR6cBPNQ3V34ciGnJosiwKIkpO?= =?iso-8859-1?Q?/FWwnR8QwPWLIGiHAM2TasD/Zhze2UTRPJHzNUuEYToFGEGg4h8bIVN3aw?= =?iso-8859-1?Q?3uC+XkTw9OWOCCM4MYrgVTRsWAAXhDSlz5OJzWven4=3D?= X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;5:N6WNB8XDnECCZ7Xy9MMFmwPKP2JyTDSLbH5j2Q1jOPLE72rhCBC+ODrizAx4qKDvjPzgvV5YE3SZH7eroRvCsenpYYhReuerQdVdXLsLlzIB/y67M1t/a9IMbfCGFMU1SPI4tTM4ALqW+Fc5E/2DRg==;24:pgINErhRpBzqvVNlp817e0q1/CsIUdVkm9l/jWettstVxpUmqP3qx9K7jej37X5X5X2VjAgIDWdfnmwTdkoRJi5/AJ8sLT/AVE9PMBw88wU=;7:WYlX/zQYoIDqGHFdXl/d7ZsOKDEgKbuux781C0HmdlMr+BOiFbyHy5oUoN0+q1v9BmKdEDyaIRSLJ4oCBupi+Rs7b5wldOGFNkVba9aujEf1/gGx2U/3MQ5tHrstt2DUxLkgmtSkirN/NFvqy4q/rcTA63X5XTqFHWfiBzDeeNn/cW7P/HOLD23FpLEbfrIT SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 May 2016 20:44:24.8257 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR84MB0311 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/20/2016 07:58 AM, Peter Zijlstra wrote: > On Thu, May 19, 2016 at 10:39:26PM -0700, Davidlohr Bueso wrote: >> As such, the following restores the behavior of the ticket locks and 'fixes' >> (or hides?) the bug in sems. Naturally incorrect approach: >> >> @@ -290,7 +290,8 @@ static void sem_wait_array(struct sem_array *sma) >> >> for (i = 0; i< sma->sem_nsems; i++) { >> sem = sma->sem_base + i; >> - spin_unlock_wait(&sem->lock); >> + while (atomic_read(&sem->lock)) >> + cpu_relax(); >> } >> ipc_smp_acquire__after_spin_is_unlocked(); >> } > The actual bug is clear_pending_set_locked() not having acquire > semantics. And the above 'fixes' things because it will observe the old > pending bit or the locked bit, so it doesn't matter if the store > flipping them is delayed. The clear_pending_set_locked() is not the only place where the lock is set. If there are more than one waiter, the queuing patch will be used instead. The set_locked(), which is also an unordered store, will then be used to set the lock. Cheers, Longman