From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932408AbcHISch (ORCPT ); Tue, 9 Aug 2016 14:32:37 -0400 Received: from mail-sn1nam02on0103.outbound.protection.outlook.com ([104.47.36.103]:18512 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932234AbcHISce (ORCPT ); Tue, 9 Aug 2016 14:32:34 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57AA1A20.4090904@hpe.com> Date: Tue, 9 Aug 2016 14:00:00 -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: Ingo Molnar , , "Linus Torvalds" , Ding Tianhong , Jason Low , Davidlohr Bueso , "Paul E. McKenney" , Thomas Gleixner , Will Deacon , Tim Chen , Imre Deak Subject: Re: [PATCH v4 3/3] locking/mutex: Ensure forward progress of waiter-spinner References: <1468874366-56955-1-git-send-email-Waiman.Long@hpe.com> <1468874366-56955-4-git-send-email-Waiman.Long@hpe.com> <20160808173716.GZ6862@twins.programming.kicks-ass.net> In-Reply-To: <20160808173716.GZ6862@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.211] X-ClientProxiedBy: DM5PR09CA0044.namprd09.prod.outlook.com (10.172.184.158) To AT5PR84MB0305.NAMPRD84.PROD.OUTLOOK.COM (10.162.138.27) X-MS-Office365-Filtering-Correlation-Id: 0163967e-0002-4e2b-ea00-08d3c07f01ee X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0305;2:u4CBvPRJMAUSkm5OF7I/Jn/RAu8/fZAWdJDJI0elPk0nxKi5yN1W7Rktr3FWY4PUFxKMi2XnTu4r+SqlHOxnuQD7ZiA+2e53LNHFd4qZh1qrnwMojNZbyAAe6yQ/dKd6N9PToSSv0dKhAF5ZcJKIx3s65A8DfbyH1+CTPgGjGWr/9aWxhJwbmFm89AvNuIi2;3:5tGEPfYP8OIC6Ez16qWE1F2Kh/IttUDJuq/dvzDIbrJHgZPue/578/1LIMFwTmIqFSKEqZqkN1W1bU5rcdsczigzNUrVDhuiD46Of7uqU/Y6lvsRpQ0aifF4x+bs+z0g X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0305; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0305;25:Bbe9YN+fniCUISxDpOlKWijVOD5PXi5u2NgX1fP/93ZIXiPQdViSmTmQiFbi4amUJx8MTcTXhpKTD7QvlinXt3Mh+EvC2LfHOfX6euZHGKhbgE5qqZIXiu2QAWv13Vz9PH1dt3plizYqCak5tNt+/u4W36He5icqH6rfDyh8UsUl+9crSuL58pgLNwKQ+obxn4RYq5MExwkLfXXa/G6RB5VCh4S+Ls/wYtMx6DjLHze7mdNMJvlMqYm8+oQ2zPCdORJlw+dEz0h1hXcR0R0xyzunisfhxavvqAyIhWgDUzKdn3SYfF9Wtz0lfSFV7OOhvRAAOspnnmPBBRyZGp+ZgIN30hpmTIghHaqv1mRAkWSmD4sUb0Vlx0JRvIOXvBHpiyADYJ+dMiwKba02sP7Ua3+0lubnHB5YAj0uzMhVMCsWMDicS3xLZR8L4t7K33WZMJNpc95DKkBr2wF/KWrU1Hp7RMWHley1P+IWE1Tzn5xpNCmPunud0RIWIDS2fo+2a31aEUi6qcZPehPXRuQJcdKT9PzdkZFzXKNYLTyClwrXJCYPJVt0P0lEWVTwRNKQfsJrOWKAz7hhKPIiaKLMTF3l64piLF+Zv0f6sszr4t8aAwgSBV7ARIon7LvzEdwe8F557KhSczJS9y5lnsVYlwbjmL42zSBuXXXLPDt7S3sd9YAAK4HuDMYTOoTyrSYnJz3AxbUmBBterxCj6ff/xlCXBHNMNi/MHoHDkqMxxSAqZXpNVfAwyMTnwY+p/l0F X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0305;31:sBhsweP8qcaqJTDOKRDtbUWvwqVuzLP1TKN8w0QbJUqu228WSb6rA7iVzylqGqQRE8gQwkg3uvYtIAKUKDL0T6orAMwoC/xG4laDFxA9EnLG5+xxHCMZe44OQHmX0I5SmtQ3aYweUtjttIH6DGtaLDXKKxeV4ylPjcFKUInZRQ6J7gEXNrZkgjW1CsSm4J/Ptz3HIVYZKUfFuB9CZepQaTqf5+X/VP4xgd1L53wX0ro=;20:dVV+KJPQcx/xy2sZKqFMoeO2Joaewb8kbCD8pL1gJA8FRJXNHM8BR5w1z1y6ThkasmX5QRCKZEfctek8i8Hw9/Bnrpr8bhjqNtkmF6yyVPqX3EX7d0LmutIyRGZa7va75lIRpYHPXDa0HzTCr/Kzs/fEihaCNcmlK5+zT5ef2bVoxGvp9ks64Y+7CIo0ojKHIPF2lz0WqeoPNiEl85ts0t09vgJv/q12HcAvufk31Eg/FpBto0jIVNiceutGW9fve1j7WTj2jC03ANsmrwiisQePx+6Dp+rvf1rTioCKOnbka636oc4eFQs6Qc5DvOQlLwv+iRe/bgQU9zmMuPgPVfxUpPmV5nY61L6tyU1b+1y2v99YXPjCCSyR0nqW6vloBBt+paK9wftVfHj2viL5wVwSFTjwggGopIyaxAy65VXnmcRPEQnnEo8RN+q7d6wcYlB7NlJdVDBZAABGGKc7ouxFoBRM0kdCHAB0QUczvpBI2AyMQBI06VACQzKqm8Aq 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)(6055026);SRVR:AT5PR84MB0305;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0305; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0305;4:X0PttxoDlASxE4ZHRfpwo2b9JGiEBOpIvJUeEcHMZUIPLcufQp7cVqQi2kS/TMahTGHQ9ZSPrhhWPDL/II21PcnSffG4LjOjZWnzp3H8Sexh8SnWC3rUoo3BvoqHGd0U6GFXGw04jpZNlDpURSarJ7U/GlOyCTFaFYQDV2q6+0D7FoZjDrqunBRuNrbwbfAj/4Xbef4lprIgyn8PidrXGOsuqV8ggXdG6aZrKG2w6ESWB1CHON3Rsw9qIPYIg/yVKRqOs1Im6k5iHgpp4FyjHuC0UGYXjx1xIumc1vxxEGa0WYJVcEQFjtqAur5OYZIwC826cvC9ppJIo8PdM0hxZXpe6ZkHWF2RqD+N0qfSEujG+i7izrrtQpc5cf6elNT7yeHiuookjSjzlu8ap2MHsQ== X-Forefront-PRVS: 0029F17A3F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(54534003)(199003)(377454003)(189002)(24454002)(117156001)(81156014)(81166006)(7416002)(8676002)(68736007)(80316001)(2950100001)(4326007)(59896002)(230700001)(110136002)(83506001)(189998001)(106356001)(86362001)(105586002)(36756003)(2906002)(42186005)(50466002)(92566002)(3846002)(101416001)(23756003)(76176999)(54356999)(87266999)(50986999)(8666005)(65816999)(33656002)(6116002)(7846002)(305945005)(7736002)(64126003)(586003)(65806001)(65956001)(97736004)(66066001)(4001350100001)(47776003)(77096005)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:AT5PR84MB0305;H:[192.168.142.183];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;AT5PR84MB0305;23:O7r3YSePOny4LdEjN+ZAvsflASfM/srOv/U3sRk?= =?iso-8859-1?Q?EW1COP+b2SIs60TO6AF2YyqQ+vN4FtRAXFX+NAAPj6bmrVQblxymYxDF+b?= =?iso-8859-1?Q?/TlOx+ANToztg8IPPz7bDWr+zT4ZeyZxOvC3/eQa46/bZKdLMB/HQfS7Fn?= =?iso-8859-1?Q?Om6cxgI0w0fy8rpUTQUml5PHCp0k5lsWOyjFKOZSzL6nD7Mmt17ZgumOn7?= =?iso-8859-1?Q?DdgGosdwQh+MAEs+c6y9IyJkrZUqpPqe+bbBzNQSvMZS4MYwNnpujv+/5U?= =?iso-8859-1?Q?MGsfDHCepiitjBPeKT37Bsu25r9FwisvGrj1MPlw4xP/FybBllEh3BL30i?= =?iso-8859-1?Q?aDB5r5JxIh2ye5zkNH6eplNMbHTLmTZl1qO5GtVMY6J4f0ACjcP6eH3BiE?= =?iso-8859-1?Q?OsEbnqS3OMGBjgvNJ/8dd1z7OMTELyLMfWV3XSe1sOKmQipn30MQvmrh+i?= =?iso-8859-1?Q?1BA12ApXRGCpOi57EXhzYk9JnQ1Z04vElo9eoxXNo4V5BQbfsYglSEXnTH?= =?iso-8859-1?Q?JD2eVo38ABbKMoyzsu+sfDV2F3rLq+Z+85unvKOqikoIyBmX94TajjLID6?= =?iso-8859-1?Q?cTa4necWLhvSipDkICVuvsANpHyRYVkiApaO6WX+UPz3mFdSOhhy3h9Ego?= =?iso-8859-1?Q?OcXXMzl1Vp+zSEDmRc+jwEKU4lCMX1aydQJy73a+8yzd5zifWlolzps4J3?= =?iso-8859-1?Q?7Guf2z323PTiErQJRWV0SkL87Wc6Atd8OowGog+Qzfj4/O4JCFb7xUH8YY?= =?iso-8859-1?Q?domuiII1DPDAr/5KOCsem+w59rDOfqbUxS69d5GziPrOlZnuCd7YF19M06?= =?iso-8859-1?Q?xgCxkbCoZ3Fu72+sGNw5Wwb6wFp8D8UK/PpdSjepjq43wmwTszMV1r5/EW?= =?iso-8859-1?Q?TS4carEH3qb/oIuB1nKYMJXsb9i630tlE5/fPzGx/51QgLELrZeOHIOMVI?= =?iso-8859-1?Q?tg1rvgKMqWowZuLDAtKktwF2R8sxh5/L6cLe+utL2MIaXdpC1dJX7Qq+aT?= =?iso-8859-1?Q?uHhDMnjkXfBEval1VtL1clo320FFczt4k6FUDssLmcTuKR1W/txesGOTsu?= =?iso-8859-1?Q?j2mYuRRmQAYFycbk/9+05aevFgCu+bzLh9rgid2SuEBpjtsetXEjuz9Gn8?= =?iso-8859-1?Q?u7h4G6lzJgEQKz1+PZKzf8lXAlttKHvMQoPT7Ed9OKIRiq+8FKf11tXEPI?= =?iso-8859-1?Q?YeuckMD8p0JPNILWLpZzPC5O6eBQ8zRQ3Jmc6ASj+XF9bsUp0pp2vzk9Kw?= =?iso-8859-1?Q?UU9x88iC9jR5MjRT4anp+X9HjjYy8f0FaC/IuRaOXBtQf6u6IIyoeTMNP0?= =?iso-8859-1?Q?mzjblmY4MdAjn4IU/mnhhIAPpzvyot+7DiGrSeMHppoQbH4YsUwbCr0TNK?= =?iso-8859-1?Q?nB31PnqncpZDCCKyMNVz6+tC8wDLr?= X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0305;6:6o5KMQ210WcSbxsRugJY4WeOOhaRvs95Yl4V5BgfyORKqE8MDkDxok8lQw+fKj6pFb5+4bDeUmKuZU03KvC+glWF5v/4JaW0mGchbwdpd3rQVZfqeHkS+GRsrR1vJeQmmdTqtW/YJicvwaTf0fRTxxGGoy/NenE8Y4/SpsOB3MKk5muwlaz7pCJYqIq8cxETIEiv6s2i3CwW4piPbB59Pyg2uoxKokZvwr82nkYkXU08z/5ERkw5qZmFUxuUM114RkV1aaWrQ/HdJ6S6ikei9ypLQ0f9O/6HuuE5H2V8tSDMyLYHwgLkr5NBIyhk6r60Kn96vU7E34I6F3uS+SZp6Q==;5:nt/ArmrAQt0wZ93mIZ6tzsRGD8bJXPlRFYPlXvO57aJ4dtsBUYASHEVvdDlLmR2qqQXrWTQrcuLXxU9uzj0e9Q4TlcGm5J9Bi5fvrsCAAos/esuUhA+c1UFrXxbjLIql23eQ7zjurGVIFEDy3z7hvw==;24:k8zm9jnW+lxJEZbjy61bHcKRIMjoPABjeX13sySEFzHRaNdMB4/Xti49llVeOzHKNOWT27PqBq4qZmdqbcpLiLK58kE9tvVmA75jNkvr8iM=;7:bVIkmptsIfp/E4bVTBfbBTzLHadSXCAfp7EpjVdKb5VDerrk5x/WWWr9kX+vWCSAgpdnc4HhUhdLDl3QjCXYdYCZoRJ5PBxjqxJr7HSDhOuIxOdns1q/56sIqyn6LAy2ZAC7VDt/5Qwpjv6cYttq63RW4V2wfwktAtDDi+p90A3Rg07vKZDGHnPpKSVWhryPLumLtznehVMgUH4ae/pMWF9vRgHdh9yVG1LgAXcEYT/mFYz/lGVxVlrqby4WTnic SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2016 18:00:09.9772 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT5PR84MB0305 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/08/2016 01:37 PM, Peter Zijlstra wrote: > On Mon, Jul 18, 2016 at 04:39:26PM -0400, Waiman Long wrote: >> As both an optimistic spinner and a waiter-spinner (a woken task from >> the wait queue spinning) can be spinning on the lock at the same time, >> we cannot ensure forward progress for the waiter-spinner. Therefore, >> it is possible for the waiter-spinner to be starved of getting the >> lock, though not likely. > Right; yet your previous two changelogs/comments implied otherwise. > >> This patch adds a flag to indicate that a waiter-spinner is >> spinning and hence has priority over the acquisition of the lock. A >> waiter-spinner sets this flag while spinning. An optimistic spinner >> will check this flag and yield if set. This essentially makes the >> waiter-spinner jump to the head of the optimistic spinning queue to >> acquire the lock. >> >> There will be no increase in size for the mutex structure for 64-bit >> architectures. For 32-bit architectures, there will be a size increase >> of 4 bytes. > Alternative might be to use the LSB of mutex::owner, but that's going to > be somewhat icky too. I was thinking about doing that. However, the owner field is used in quite a number of places. It may be a bit risky to change all of them. > I'm not sure the 32bit platforms are going to be excited about growing > struct mutex... Or we can make this a 64-bit architecture specific change if the increase in mutex size is a real concern. Actually, we don't need to use a list_head structure for wait_list. It can be just a pointer to mutex_waiter that has the list_head structure. This can save a pointer from the structure. Cheers, Longman