From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756247AbcH3Wcl (ORCPT ); Tue, 30 Aug 2016 18:32:41 -0400 Received: from mail-sn1nam01on0133.outbound.protection.outlook.com ([104.47.32.133]:63162 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750849AbcH3Wci (ORCPT ); Tue, 30 Aug 2016 18:32:38 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57C60970.2060108@hpe.com> Date: Tue, 30 Aug 2016 18:32:16 -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: Linus Torvalds , Jason Low , Ding Tianhong , Thomas Gleixner , Will Deacon , Ingo Molnar , Imre Deak , Linux Kernel Mailing List , Davidlohr Bueso , Tim Chen , Terry Rudd , "Paul E. McKenney" , Jason Low , Chris Wilson , Daniel Vetter Subject: Re: [RFC][PATCH -v2 4/4] locking/mutex: Add lock handoff to avoid starvation References: <20160825183734.113736626@infradead.org> <20160825184324.934871397@infradead.org> <57BF6A73.1050505@hpe.com> <20160825222328.GN10138@twins.programming.kicks-ass.net> <57C05287.8000708@hpe.com> <20160826151818.GO10121@twins.programming.kicks-ass.net> <57C0D372.9030301@hpe.com> <20160829154109.GU10121@twins.programming.kicks-ass.net> <20160830115342.GH10168@twins.programming.kicks-ass.net> In-Reply-To: <20160830115342.GH10168@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.137] X-ClientProxiedBy: YQXPR01CA0041.CANPRD01.PROD.OUTLOOK.COM (10.165.102.179) To TU4PR84MB0319.NAMPRD84.PROD.OUTLOOK.COM (10.162.186.29) X-MS-Office365-Filtering-Correlation-Id: 9126716c-d52f-4438-382e-08d3d1258a7b X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0319;2:A4LQ8fjuTqf8Qt64KNywQIro3ILsXFkFlRwYQt7yquRv4rdCtDfw8sJ4LJK8i56O0C2Z2Zc70H00BaeRDUb65APZGyYBc0vWtWGDYFvm/Q4jA+eGvHvt/ijn1qJP5vuM5Medb9esaqgZlNroEQka//kD5pZYhvm2qrWjaUtZntmH6Hhn5ucMuWvRO5o3rzOr;3:UNu6RjFZQhCl4Xd8cCBSs7/3Ske7aARau12MU5L0UHeeq3xEVKycmGMklHdZti0jbn0XWqV+QomhP4F/yt24ECePTzhwo66WZglQW2eQs+knv//Jw6GdeglA7CfhP6sX;25:fU3GZcU57J1Noxq+uJVBaPDPXUTo1Kt/ZCnWid//4zCY1caRkPhhEl0y0LrTsxJkwln6WKhhksfWWgQBrta2oCkWTI4CtUisI0XMKdGuOYyzQRHUOoF5f4cfmTz0sX9tGJd/9HG99WRi3vy3DRP5Y2cFi7HP2dnc8oC7bcPl3Ho7PEXYuX5qjwhd1ggfwsNnfSeSjB7z+fywjmgxptBZ8DAfYx29Q0UNWjVQ79ZwGSkJD9z0wGnfyB3vDRs0xy4ymKAhkgJX8Ife522UPrp9DuHiLRN1WUHXoIeh+kSuBKc/cCpw5FlqAXpIuD9WYGHPt3BDFr/VAe2agTAgT6TWitMN/x6GEX4iFXhcGX9rNday+KVqNXPsLKY1w3N0zk4GFe1R31EcjvXrev6du7MY8LL4YseW58puArrTdI3EMDk= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:TU4PR84MB0319; X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0319;31:0Blzg4HK3eATiQ4/bT3l7ReaQ0CGh8fVgh6P7/+gqevmGOQeXiKctmSneL8/myAxo9AXH16/j1G8McERNm2Mo5OIO780X4/tm1xcLnaE58j0BWkUjzlOrVyrIOVNApfgYHGZeUFSrP8rhn9r+eYrMjJea/4Gmo9xpLmjRXSA2FJiZS9uwS6RhL6UmpSfnq0EzhLgc1I/zuTL7GYsvpYZMGSdN658r9hao4smoopXe6k=;20:u3ZGXiEBGxlDO/2iELMZTKKF6EigS5rxBdr+FTdQPwrTRW1zceBeroOLn/NB6kUmHQTsCLqt7g3tzmkko5Pa1cNj9BYT4jLTey2k0JRVVthZdoiCqbxCpDXFAz3beapeLSlnXk8lAT2w+1h2OmZloJHMCjAFnSltQ/yNxlr3wb3EeE3XhBely65xACRWRuSIq0pS0JDJ/tAo9Ujg6x7WZ1ZP0BX1y+BYGAtZGkpZenBLolheNN5gu+wT+OVNvfvoo9f70vDqxbYmYHjoHmnIuw5WRM5WFTEMepIS8UoBdZNTShN2HuECKjdvPhO3eOSFy3pyqwDUFVg3I2N/V/a4RF0FcLMjTgyaRCfaXUPxzKNd0BFXVWqg0XjqRuwJ8cxFTaf7LUgmbOY/xXSJ4ulMwAv2jFe/SohCweLUchqaUYGHjg+D/jdHD556lmvV+BsU364Oh4gVcmXWQxM1he+CQLnqFdgtKRtDqwu8LVd19uf050ul3JeWWi7CAG+Q+8sX X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:TU4PR84MB0319;BCL:0;PCL:0;RULEID:;SRVR:TU4PR84MB0319; X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0319;4:XirP9hzNXl7v502Rb94D8l/vPdDDCDpbqR/kAiyaHSUTK8fyHxYrsfN70x2/+pcI4tgsm2rluWUsguiLxgtlYxhrkxAGY2qP0hl0MYhxVeoMt9/bG22I+u4BmD1mYsZ56N1Sw29oaGMlLBMW2dbs020M/kjjYnDan8U5fBRixgquczYXrRGMCX3gtg92+OM6HYBqJjcxlkocp3SWDFCCh5KMJniXr0vgXK2M2bMzA7dz7wRabGUqeDEozrF6XzBtTMdaJIm6qwMy6MKDeRB1WXpcLESt49zd1JaSO1rNQjcDT7nKuApYtoZUYaV34Q6HXVtll5Jtozsji2Dgeb3iYdmzVeODThKSyuefMj73/eWw5x6x6+ba0/Z/4gEFeVjIzpZN+UbCPx4BShwhwY2Qiw== X-Forefront-PRVS: 0050CEFE70 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(377454003)(199003)(24454002)(54534003)(189002)(65816999)(80316001)(7736002)(47776003)(50466002)(64126003)(23756003)(65956001)(66066001)(65806001)(117156001)(36756003)(54356999)(50986999)(76176999)(86362001)(68736007)(93886004)(7846002)(305945005)(8666005)(87266999)(8676002)(81156014)(81166006)(230700001)(83506001)(6116002)(4326007)(3846002)(42186005)(2950100001)(2906002)(92566002)(59896002)(77096005)(586003)(105586002)(189998001)(97736004)(110136002)(33656002)(7416002)(101416001)(106356001)(5660300001)(4001350100001)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:TU4PR84MB0319;H:[192.168.142.194];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;TU4PR84MB0319;23:FMx3IKjB6SaPzpVjtlCr6NX8U+NnqrB3JWUIFK1?= =?iso-8859-1?Q?jDuoEnXSEVhY9tKHOGEnZceMRnHipqFCM6XdaGT86/hDGY8HTbJAjrn27b?= =?iso-8859-1?Q?dhwLTa5z3bqANDGM99RjCrC9zlLQmxe0NPUMuPl6kh+9XcBFDVhSyx/coK?= =?iso-8859-1?Q?QaOocXY+uUfNd7eDdzYRWgfNoHqglsIu5umpE6Et7v2MGHqr/0gbDLNd75?= =?iso-8859-1?Q?jzEcvyTbP2APBc6gTRGmrfukHh20/xyMFWiC84JjrWeojampIXHcB6xlvM?= =?iso-8859-1?Q?llLwG+EhYftzZhw1PjtbhxORArPcDKAmjm8HjXKc+h4a6C9MOMbzWpjhtk?= =?iso-8859-1?Q?weBys9VTbGoaW/4fLuxSk+OxG2uwFPzHH+LCyHYowyOMlzLTbw/1og9DSl?= =?iso-8859-1?Q?TBAKfP2aMwojIGoe99BoFxDfN3vXPpVe+eLcRd2ySfhoVB7Srd+G/8Mync?= =?iso-8859-1?Q?Eux96/SpXskxvWCamwvcWIMglVAyrUfOa6jSXw6qaZiVoGprQXB+T3wvcf?= =?iso-8859-1?Q?2s/EsRQhf/auujXk0sER5lvvqFMasCNPwigwyxsKdQyI1F5nWu5Su/9FJG?= =?iso-8859-1?Q?TzhSAlGVJCYDJeAikuEvz8lrdlfBHktkBllwKxLgS7Hf0DH7TliuRnjMFS?= =?iso-8859-1?Q?l26uWGzDKtizVyffDJtcpcpS7dEExmB7R2d6bzuVPSkhkotrwkDLHWZ9pq?= =?iso-8859-1?Q?NIpk3wBNYZb1zL+6y+VUXH6rL5WXn+S33hnWL/bRPUc3E2SShKl2pvy8oq?= =?iso-8859-1?Q?QbpoAk5dBQ6ujvq3OiECx1PdE0sN3/1UagfdkJQ+5eefFpdUOXQlBkvmuD?= =?iso-8859-1?Q?C+rcY/95mfVJ7uGOl8xQtYTg5F8XjmI6hssd+zJQQeo62uFuinkKyCDU8H?= =?iso-8859-1?Q?UeED6MnN9Ntxn+p2jFymZkp3e+vAWdQuPzWII+6xPY3jPMTO3gKOxREPTo?= =?iso-8859-1?Q?zwFbN8mAvYQOj4ghT1bUVhoGEx/bXKjei+jNfLOK1SnBHLe3chX2kVl7hs?= =?iso-8859-1?Q?PXqyzGz1auC3gcn5eP23/bHsru23oDNsCPZT39BnKQX9pCuG7X+QTM29CG?= =?iso-8859-1?Q?1wCWUQQOMgMg9vUBlt7vUFNG+wICfRM3uoasVYnutY5tdPmvPrDF3Ze+l8?= =?iso-8859-1?Q?qWJSC7J/WIiy9LIr9tN6BCsQEpOm0OykP9NxiaiO2HZVLI7yT3YQQv4Mv0?= =?iso-8859-1?Q?YmidirRYA2MtGwFqJJ9ZsYbSBD8QR21ruNzf7GtXhj3nVle/bbPq5zLP0W?= =?iso-8859-1?Q?ACN+Sn1UDj5fe+jBaMJXsxMm/xu6ugB4dcXzAj5Tfvjru6BUBxnlUBrBfs?= =?iso-8859-1?Q?ZQhfQlVBiKAl/QO/DUNEJekUn6K3q3MjPPzRv38WyizkuNRCBusfY8CXO8?= =?iso-8859-1?Q?TY3VlrOdy52QEDvAzG46qMLiu2xPuFFq8fsCxOm0YhFAoZM2cXR9TcyUT+?= =?iso-8859-1?Q?EHczce3QvWBrEA=3D?= X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0319;6:aL8wMC9dEbZdGdpsof7j/Iqx7ckge76ScaKt43dYzt8eLGtR4RT2gMmA9tQilVwamOzZ/ZLIeG47hH1d1LwSU/U/lPbNCX7MicQ7ejZXiHUvcqPAYzi8xNrPyuA3vqE2/OZwZw7seM00LRjFl/rpH3ac5nts5XilISPvPNZYK4cs+bAh5csvcjdHpuy7W8XEs+JNgLf7IF6wgw8pZZiWuWUekK55h8Wf1JHh9SFMByZSSeiXh/InKtnw8VQtIG4sl+etptkq02qrw9NxkadcBHSSp2MYVzS6aB+aQUYIhEH9660cu+8f/tVgwG7TQXZ0YXXOFpuO0ihtF+5xnf4W7Q==;5:jtJqvQ6jj89rkbTNVpKqTYgtWR96X0HAZzuAG/M1vez0rm224Mv/yFfS9TKbaPlnXcjJgW8l8PsQGiHCpzLnOEyrEwxuy6ELExZbqaPQIqoOuJNHpO9oPQjhsUMqjxzkV25cQZr1M+Sdv4XzU1+/Og==;24:dvqkbMMoDL8B++R+6vbz3gp6jsezIY71lnAv+pDfrX3Wb6XmTyaJ+lHZ85vT18Ees+q7/YsvE/xcXNNGNEqm1ntop6WESD6VDbyDDICis8U=;7:+sk8+Ynq8uumLi/JABzOqX3gyLdncmaNYiWbmz2P1B/7ScSO6tEWVCmJix4MzCqbgqmYqjxmoUdL+3gM3GgU4SdGC24Evgdu3T77bKoHfC1eC8fmaxDNJCCU7VXGwUN9JZGT+CUO1Q1NdXRukrcI+vzgHbzpBih/nAZE6vwTj9ezlFGJVRL/9dyyLBBr7z9bfUHlVtZppCXyyQelViYrWinMlPnx8lxdvpuNCsi/7C6wQvqyMnZvuBnmDrLxC7Dc SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2016 22:32:26.7958 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: TU4PR84MB0319 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/30/2016 07:53 AM, Peter Zijlstra wrote: > On Mon, Aug 29, 2016 at 05:41:09PM +0200, Peter Zijlstra wrote: >> On Fri, Aug 26, 2016 at 07:40:34PM -0400, Waiman Long wrote: >>> On 08/26/2016 11:18 AM, Peter Zijlstra wrote: >>>> Still need to look at adding spinning to the handoff case. >>>> Also need to look at writing (much) better changelogs, they stink. >>>> >>> I have looked at the handoff code and I didn't see any problem. >> So I found (or rather the buildbot did) a problem with it. >> >> locking-selftest has testcases like: >> >> >> lock(&A); >> if (trylock(&A)) >> /* fail */ >> >> and >> >> ww_lock(&A) >> if (ww_lock(&A) != -EDEADLK) >> /* fail */ >> >> But with the 'trylock' accepting the lock if owner==current, in order to >> accept the hand-off, this breaks in interesting ways. >> >> Now, ARCH_MIN_TASKALIGN is at least 8 (mips, s390, parisc) which would >> give us one more FLAG bit to play with. >> >> >> The below seems to make things happy again.. > Much simpler solution... only accept handoffs when we're stuck in the > wait loop (which precludes doing recursive locking, since that would've > failed much earlier). > > Now, let me look at that spinner patch you sent. Yes, that is like my original mutex patch that sets a flag (the handoff bit) that disable the optimistic spinner from grabbing the lock. I hadn't been thinking about the corner case of a trylock after lock. Fortunately, we have test that can uncover those problems. Cheers, Longman