From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754858AbcHWTga (ORCPT ); Tue, 23 Aug 2016 15:36:30 -0400 Received: from mail-cys01nam02on0095.outbound.protection.outlook.com ([104.47.37.95]:22432 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752094AbcHWTg2 (ORCPT ); Tue, 23 Aug 2016 15:36:28 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57BCA5B1.1010401@hpe.com> Date: Tue, 23 Aug 2016 15:36:17 -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: Jason Low , Davidlohr Bueso , Linus Torvalds , Ding Tianhong , Thomas Gleixner , Will Deacon , Ingo Molnar , Imre Deak , Linux Kernel Mailing List , Tim Chen , "Paul E. McKenney" , Subject: Re: [RFC][PATCH 0/3] locking/mutex: Rewrite basic mutex References: <20160823124617.015645861@infradead.org> <20160823161750.GD31186@linux-80c1.suse> <1471970103.2381.51.camel@j-VirtualBox> <20160823165739.GQ10153@twins.programming.kicks-ass.net> In-Reply-To: <20160823165739.GQ10153@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [72.71.243.126] X-ClientProxiedBy: SN1PR17CA0027.namprd17.prod.outlook.com (10.169.33.165) To TU4PR84MB0317.NAMPRD84.PROD.OUTLOOK.COM (10.162.186.27) X-MS-Office365-Filtering-Correlation-Id: c9edfae1-f423-4f26-d0c6-08d3cb8cc556 X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;2:SwU7CYOSqNl0w1A45iQ4xtYDI/V8YO07Xbd+dRcg3Te+wVbperdQ/pU2G0xoUW0l24atzZaFzMe3SfHY4nTBdm1nANDqDrL8LXdRLmikrIXGeba8AJIpUgjuCxxWP0IpRjDDAGX7c9txhKXvY1JKGjMzn4FJAJMVYm3DZIIfiiBB15HLdxYqYzviNeATfRK4;3:lB0yonUKHcgCZpWJEZctYIWdCcD7ON+k4/xElKVEnBzn+OeX7Q7wxQohOi9Of4dC7kMUvAq0L8p+uWLEpyldh5e52TGoHEziSo3zqmjfuhsueme5qk2iLY/ejWFimve1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:TU4PR84MB0317; X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;25:J7Wg4/TD24K4U+uQLS4ENWtZBll+ImEEA7p8fETOT8kkfb5ekti7yfHxEwT0ATZl7ZTGvdWg4fNqDtOX/wPDkp7eXwjQMnvOLwILCjbsB7fa3p03SgIRwGQd5o5Qxa68kJIvWWBQ8iz/73GnclIrWM4POsbjL5IJK0Gy96f+WSxMuL60MeJQcfUxtUOav6Fa8w3Mlguze+9wUs8JXaDgnZDttOd6Rwt/yyWQn513rCvwT4pytTpee05b/jv2jgzAl4pMKPrfBA0wOk4xUop0JaACBapplhfx7BcpizM1ckRcbWUNPnsnOo1TH+37ilCmgib5qJ9GxC85YmLSjzmkJmKp6zAT3QBEZTIxSzMEv/E9drjk9he6F9FzEoOiPHzyrk9CjL5Ul7a3AciO/5oP+VhO57Ha1yr/b5YJ5dq/bRcJRaWYzprfjeRyvSbA+xL7kyyg2SxM/8elTWWR08JPujwSGVP78BVng1hGZuRzy4VoLQJ6ORZhAWaEMnxc8pOw5G4Ta5HRfSieDe8kEVLXMunskyi+e2va04Sh2sJ4w/G86bQyH/c2wFAncsUuJXIzdWxQH0hXHTa3xXvFq5oOzfhJBfocpVpRuiKKCAgVTIngw7T6lNw6nMwSOk3IjVcj0pcmZGVEkT+1NLwStOWmcqd/6Dhwuh6uWX/EZfYwXEDOYhilhzfUWhKSHY1ber3/;31:3UK/eVMBm8AtWr2eGPubqXdSfe6sX46Poo9ZvH91eeCBnSGzlFEywqP2GqedOrjlNaOY6mbinb6G88Bpq13MlYXS8sxCJU6zNBCVdcnVq/g0AY+/9y2EQOGmgJwKtp9B+8tnJXOEyteUcTMAmw2Eap1+4y9hBD7ufqf3+iNdWOt4FzNyYSvyWdgOuoiRrLPbe2Uogu1Z+RTSAmTGSOvRDbEr7orqNLBl/AWHh4V9y8A= X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;20:YJXrvl8xNpI9TFTanz0Jhp5AL7U5wnQS7bvNykhxcgFGPOQP2L24cRHvrkUsPmaTxlAOWerdNvbjygvit+fBcGsclYWFEtssr2GDqpTFW9Byr9QarGFCnmRcXgl52qDYZUQOS04wXKbgrLeg3o0uxoYNmocVsKF7ZBklSdoN+a4KYSw05sdmZe4KdY6zOv2QXKIswo/A6X/iBjgsUnoFlktNkUpOV99GaPZLILPYlh7PfJeDT2kluqCbpVoDaYUxIvjD+O6OyQeCUzQUM7kxmd2a11n2rEkJb6y+0Iiw6YW8jN9gl2XVVoLBugdhQn+8Jl+i1NPX2d7eF758KF77voGIZA4TjE3Em+uOqXJMN+CUF7j47aH9jh9kGi+7Tufh873IsC8etAkXtq/Fq3oV0kDQCXbqUb9wxW7bjrm+jNj6Fh7KXqrWuTNq0NGFfHElEE2OrBEN5LtR6rbwC93eeshzBLNPKf7ZCXlr1m44kbFziwRuX/Sa0pddz+ZgI0qu;4:uLksfgAmkMXUojqEhvsm6k+vqCLVaFV1aICSZv/00e2Qf1f225oArEeS8rXAZJ+jXwSEDMnXwEIO672SijvA7nBh3AWFzHAsPHuM7YMEBk3lCYkK3mCcPxRszVObM8K5iCWZQ9m895a1KtoliqdPKDIdNEMnDEqPxxZAhDqiEydP+qwwhgaugTpetll/Zg6Fy5lfD3oPINKd9IiOP62qXDxOqC4sVvs9iNipQGCvJAfF+JQjhMtUOgSF7Ogv2UXuBKPFTG/kc/s85EkmM67O/jbovoNQcvOs3VPyQovH4yudA665k2xI1oo8HZGuTE998Rdv7z+0j5RWo/8iuxNvghxdYBC9hFyfn2mVsRHYMdsCAJZBFgP9eokrpkeRf0wNBPl5kWnOqViXMCsvO560TdR7/KIjZJ/Va3klR55d+0SI7gsQqaE2b/NlA0r5uoV9 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:TU4PR84MB0317;BCL:0;PCL:0;RULEID:;SRVR:TU4PR84MB0317; X-Forefront-PRVS: 004395A01C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(377424004)(377454003)(189002)(24454002)(199003)(36756003)(68736007)(4001350100001)(189998001)(77096005)(3846002)(6116002)(92566002)(101416001)(110136002)(33656002)(305945005)(8666005)(81156014)(7846002)(81166006)(97736004)(586003)(8676002)(2950100001)(54356999)(65816999)(5660300001)(76176999)(7736002)(50986999)(87266999)(7416002)(23746002)(47776003)(65806001)(66066001)(65956001)(80316001)(83506001)(59896002)(2906002)(93886004)(42186005)(106356001)(117156001)(64126003)(2870700001)(86362001)(105586002)(4326007)(50466002)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:TU4PR84MB0317;H:[192.168.142.190];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;TU4PR84MB0317;23:LyzbCUOMvWK97TezjBspm+dlQvcVoTXV5P/wG?= =?Windows-1252?Q?KTiL4Q0mIJtumNlGTlIoQmfPBupBzKmFavL86yPXacDnZCwj9vfoAadn?= =?Windows-1252?Q?528Ixkqh//7TwKxekxwnFY6xlu1rVYPBvu5bZgexHNQ1UuvE9F6An8Ed?= =?Windows-1252?Q?ZyXuE23rIAnC7s6X1/C75ALzd0JsVp/l+fgEpzSRiVzfnZNpkzYv4o/Q?= =?Windows-1252?Q?BQzDhkATM3kgeuVdgcbb//dptF0qxH9Fz2QRnf5qXU43wyZRCzcwfXRL?= =?Windows-1252?Q?kpoi7x4AULprAKNqF/eTLSsJl+hLu/2VSdukgKbx2x/nX+hM4BRo8GQ4?= =?Windows-1252?Q?Hq2j3iFCfcvf/gl9oJANtJprBreZcFM/EsQzKO4fYr9Bu0+4joItNr60?= =?Windows-1252?Q?7nJ3ys0b1sNNzm3C9s9/MAGCud3VhqcFVlNJ8PMYQUKEs7UChsqh3gFD?= =?Windows-1252?Q?Kru+Cv5A9rU8zGFszkHhL3n61FyPN78Q1AMlivvvnkuod75qhCrhR9gK?= =?Windows-1252?Q?JeprVGKRNgTWE5dtBkbmuz3aa8YgUPUPiqEAL9VtftlNtJmZJm8WPap2?= =?Windows-1252?Q?Se2N4lmG91y8sdNb16Ri+399ODucpt6hDYEEkpQrVVfu9b8xMjzypOje?= =?Windows-1252?Q?djUM88yl7Gxf9RWsupuTS9+sTiNSClOgGHtq4miYIHNOBiFtG8pbLfOT?= =?Windows-1252?Q?N6h/6+zzEyQJI3m/PaXssGgDHxbt4/V83GJXgIhfS2GRFar1vcwcpotA?= =?Windows-1252?Q?uLC8dxW+7mvws6pJdWH1O2HVEYGIkv92teiiHCP+Zr24k4iXhl2rDjnr?= =?Windows-1252?Q?+0uGcivHvmDg9PvQ/rSXJLaJp/Gn+MahynZNCf19wN6cvz1S7xYTunyM?= =?Windows-1252?Q?QyGmibJ1//EegJhgeZO8Ri53mutbKqZB+aA5/DQu/B2S/88ICiW7vfId?= =?Windows-1252?Q?w5Bapo5YvchchZ0rVF/O+eUOJY4wQq0CXWwEZlyVkTQDWg+d2ZNbBt3t?= =?Windows-1252?Q?qyWWVTcJ+VYiD+ieVpmiprcPhXSeSwXZdz7Ni+wihVpSbBlpSnJzxJ7r?= =?Windows-1252?Q?M/jZqSI29xxb/nkFNfHDXVLQTldHipXRu3J1Cqby0eNJLS/Ex5wBC108?= =?Windows-1252?Q?n35KLuQziZ/nrgdx+vuR8MkPLcmAN+QH32+ADYRt0tMaiYWBxpC5co9j?= =?Windows-1252?Q?FPvT+FTXQn/YkMxsWmRRWvJg7P0xMVAyZ6gFI3rBgJ1myLtU2ulVlCf8?= =?Windows-1252?Q?5XZPHDBRWX8Sp9u5+9d9TAVc3bpeAeJ3Di5/LKqAyK+An0dbQid3KroT?= =?Windows-1252?Q?Iws8dJtdU2XlUKgRou4mfgfctwf7TZhIPV9vUIy0lKVpLrnikJRYJAF3?= =?Windows-1252?Q?aWAYcpLUQaMIWc1KwMVdK6EMgefWOLgYJmzQ/5W4fVkHX9duLhweCRk5?= =?Windows-1252?Q?KNfsb4bEqkDF0CKup4fLjbicVQdBosgy4tGLqnF8uKX5rmbWuzbgwAgR?= =?Windows-1252?Q?adOGN4=3D?= X-Microsoft-Exchange-Diagnostics: 1;TU4PR84MB0317;6:OqMPKPIN4kG5Gl5LqLNiTPelUgY1rO0djc8KoJ+Fn1auCvzTA38wGzSHT8Zw7jjf8uJcEaHN/7Tx0V8hKwCQjsyqznu23Se9todVO4+4iswqRtDeSI9/rv8eMdpbe6mbd/BxFwU5ACDP8KYaFCBlwXJTra+0NZQQaqBRygPLdlrxWCKzvtBTn/eCyauLhC5ax4Z2onKjxqpn4ILIzSjCsG8DQemEOj1XPnLFnl53jrt8/qUNOgFKWrsPhkx5CCxT5IQoHv9MQvPNmrvNys0QZBNOy4+J0WzszFxluo54nV8jJ/tKAjB4zS3Z8BEx0VJEcO5E6AuH2Km3FC6Q+pFAnw==;5:m6GOE+T2Hdmv4CnQ85gqtrB2ZeSo5DdIfTEhsbReYlTqxRHNW5YFOMnqhZDLbb8I0mfb7xB4vO+KQNeFBe3LDTP1Be9ujVxGM/FriH2MS/itSG7zeaCqyjRLAgU+9zIZafzHTTLXUTX6uNe8c4ZwLg==;24:LhY0S0PKEoEGO/xVldNgE4DHTfBvtBhJL8WI/TRrLkYAjsvIWotdVaSGnkzO9F123APRzL0AMcNM5daiAB1vElsOHR3Iq/3K9yhzukCGfz4=;7:bunFV6WVXoad4DLCi/Is2hwMnhXbZ2/LSJtzj1EdFRzIsTrH+S4ylZog6J7BLTxdKq7GOtp9rIR+PXxSuDNGXkXeIjE2VkbtYZBQZ5dJ28ZmL7IJUDVZCVsJO1eE7rJsw8rXEA2kFcUjvZ5v+rk5rMAngzWW8qdXRacGumT8YoczGVTN2a3AB937waH3HFuOplhhXYbD4+/+Kuakav+04JHicDiwKt0isRZd4+S7EBCJJG9RKYuyVqzgoPgqeT5K SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2016 19:36:22.1942 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: TU4PR84MB0317 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/23/2016 12:57 PM, Peter Zijlstra wrote: > On Tue, Aug 23, 2016 at 09:35:03AM -0700, Jason Low wrote: >> On Tue, 2016-08-23 at 09:17 -0700, Davidlohr Bueso wrote: >>> What's the motivation here? Is it just to unify counter and owner for >>> the starvation issue? If so, is this really the path we wanna take for >>> a small debug corner case? >> And we thought our other patch was a bit invasive :-) > So I've wanted to do something like this for a while now, and Linus > saying he wanted to always enable the spinning and basically reduce > special cases made me bite the bullet and just do it to see what it > would look like. > > So it not only unifies counter and owner for the starvation case, it > does so to allow spinning and debug as well as lock handoff. > It collapses the whole count+owner+yield_to_owner into a single > variable. > > It obviously is a tad invasive, but it does make things more similar to > rt-mutex and pi futex, both of which track the owner and pending in the > primary 'word'. > > That said, I don't particularly like the new mutex_unlock() code, its > rather more heavy than I would like, although typically the word is > uncontended at unlock and we'd only need a single go at the > cmpxchg-loop. > > I think this is the right way to go. There isn't any big change in the slowpath, so the contended performance should be the same. The fastpath, however, will get a bit slower as a single atomic op plus a jump instruction (a single cacheline load) is replaced by a read-and-test and compxchg (potentially 2 cacheline loads) which will be somewhat slower than the optimized assembly code. Alternatively, you can replace the __mutex_trylock() in mutex_lock() by just a blind cmpxchg to optimize the fastpath further. A cmpxhcg will still be a tiny bit slower than other atomic ops, but it will be more acceptable, I think. BTW, I got the following compilation warning when I tried your patch: drivers/gpu/drm/i915/i915_gem_shrinker.c: In function ‘mutex_is_locked_by’: drivers/gpu/drm/i915/i915_gem_shrinker.c:44:22: error: invalid operands to binary == (have ‘atomic_long_t’ and ‘struct task_struct *’) return mutex->owner == task; ^ CC [M] drivers/gpu/drm/i915/intel_psr.o drivers/gpu/drm/i915/i915_gem_shrinker.c:49:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ make[4]: *** [drivers/gpu/drm/i915/i915_gem_shrinker.o] Error 1 Apparently, you may need to look to see if there are other direct access of the owner field in the other code. Cheers, Longman