Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934757AbcJFTbI (ORCPT ); Thu, 6 Oct 2016 15:31:08 -0400 Received: from mail-sn1nam01on0100.outbound.protection.outlook.com ([104.47.32.100]:34490 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933164AbcJFTa4 (ORCPT ); Thu, 6 Oct 2016 15:30:56 -0400 X-Greylist: delayed 112284 seconds by postgrey-1.27 at vger.kernel.org; Thu, 06 Oct 2016 15:30:55 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57F6A647.3010207@hpe.com> Date: Thu, 6 Oct 2016 15:30:15 -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: Davidlohr Bueso CC: Peter Zijlstra , Ingo Molnar , , , , , , , , Jason Low , Dave Chinner , Jonathan Corbet , Scott J Norton , Douglas Hatch Subject: Re: [RFC PATCH-tip v4 01/10] locking/osq: Make lock/unlock proper acquire/release barrier References: <1471554672-38662-1-git-send-email-Waiman.Long@hpe.com> <1471554672-38662-2-git-send-email-Waiman.Long@hpe.com> <20161004190601.GD24086@linux-80c1.suse> <57F4EFCA.6050503@hpe.com> <57F5181F.60202@hpe.com> <20161006054747.GB29373@linux-80c1.suse> In-Reply-To: <20161006054747.GB29373@linux-80c1.suse> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.102] X-ClientProxiedBy: BY1PR13CA0028.namprd13.prod.outlook.com (10.162.107.166) To CS1PR84MB0311.NAMPRD84.PROD.OUTLOOK.COM (10.162.190.29) X-MS-Office365-Filtering-Correlation-Id: 0078af86-3745-489e-0e80-08d3ee1f499b X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;2:234uS5DyuHZg5e+UIt2vMUCsrvf9QZWgjVAJNN0f57+lEA1AAIuT2nEE0OHEOxRHAeHAXCbvms5omn4GXBt0LZ3CmRMDKcwJmeoZ5jPOI+z6RwFd8m3PiSf/YR32ODHVTQHUIVm+I4gGh1LvCuLvUqh8PKJFBNQeuNNlbPi6mX1Vkd07bJ2tsWodOxaWe1kY;3:+gNRRXsILIhX9dfTLsR9x48BmG9A9LeLfd7UziChKUSlc1REeWHDcG03egqEs155Lv8mdI0ZznKuzMyhVj8WqQYx2+Cxld1ran5w0/ukEtYYQSgc+DEZZcnemywlnOWN;25:o6uEIHLqmQbWoW5+NzRI+RnrP99/Hb31SLLZ3DbkM9JKl4X7RXVPeSshknCCfa4zfchiYXGW4vL9xJrftY4YqwB2GZnRQQHUADqj8rKRYK4IPTzCHwbFLO9t7MVJI+sVizfKWPgA42NJa/IwfPDO/Tk8yLgvy3D5RWshRyOYRAwqHlJtE3ef3SQxjSYOhQnkpAuwGFIIx8DhR0Hz1LK/4YJT66mXeSxhZm3LovS65oFud2kqhP5CDCPSinl8BitSm81Sf5Q60QFQ+UVGIopWOJ5jwn0OtZdSa0TLE/KsxBDFyzLZjAyDPUJ0cW7WUvhiSksocurgO8umMotw2IkHi+2eEYLsfhIlZ5URG0Pg6ZDQDn1oDhhm7hQHxchW41rMBUpZGloqXIeNmpzj0BBPtk4hnCHZmTNHuHhvk5ZBQNo= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0311; X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;31:dn136Gkhtf7R+d9QkSlLLeUFFElO66ggt8IJlcXPkaeJEvp7r1BwFCxQ9Mcnim/TDROfnCuCKOGVispuzXO8+pR6cuvi8FCEGmwksuulQ3Vy2J146W8uDNa0VYkJAk6kgRV6HscUKjP0o2HlSEBz/7wvu5D5ahVR5ASMxrloc5ypwjViL06ZozLklIkpsvQGCw4CovxespPzHLEckEMPnGq6GG7j3CmpFlrAxi90USg=;20:HdPLTlMGcBG0+JdoUSdXu+UCMACR77Py9JGY4cSgnkRozbHOMJrVdd/YLJZcBeuAaSD0e9uEZSlJZhGZv12J6ByWTZCkjpXHV95PR7rUB2pj/UGiYYFasj7MOvHCsZeWulhaRmnTL/fKNqdHf+duWWRKAqGr6IeVsjiVVJxWRnOxrWwCL1o/EiZeHiK1kQfcSnz/L0jmYYgjm8e9XfMYqJC9ZaKJq7pfGMSh+TLBqfQJJ2RVUXtbmidAqq5s3Wvur9Lw7yi5Xtwnf7baC7EdAz6AhKaVpOfls2gvImA5G3+iD1S/PFL3ltC2hd+1unHI62D7E+T8CP1sLu8tP5n74UcuarRfVRtXbVzSnNhbe0oI2NQvJrSGsyrirKnCIG+bIULDCyuvt/fvIFGSno0IFbgW75022YMgdjMNBXuWxHrPmmFZt4NFRpE5oKVPOZqk21+kEQ/FOQOQxOUvFWAqRmbAXmF0sZi5TJzzYrVtsT2PdSochCtCOY5JaJu9h0UH X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026);SRVR:CS1PR84MB0311;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0311; X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;4:6xgBQeOyr1MgyN0ISseu+PFHf/QH8ZTNJXExYolvZiCfJq1LciC9iQyJngQ1ZQriJKRxS6edcSUhHQuVrj02THPa61PuBwqEzxLNh3QL11tLA8jOTnQPbgQ+4Oa1rOUkZ0Ejjpk549At7gHJIsYKFHxBSgYByPCBTi8M68gboc+bDRvjgQa3EBDl3AtxHykb6PYexBwmLnwYBaJr8vhQ6BXXKLqejlrJx9KriHzps2adJpC19rJZFYB2tGZrSwkIw76Cao4QDapGvg7l8zugBJk4ohsA45Uk/gluk0mA1F5M7AezI8OfHxePq6JHQD0XclAn8X3DWWCGeJsNpN7/oa7pa5P/ZyP+zfzyelpdIT1AEsPnKXuJgeTB2257hcWyUQ5JMc9vv2vrt+FmlFTiqw== X-Forefront-PRVS: 00872B689F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(76104003)(24454002)(189002)(199003)(377454003)(42186005)(64126003)(4001350100001)(6666003)(81156014)(86362001)(23756003)(117156001)(81166006)(97736004)(105586002)(59896002)(7736002)(7846002)(8666005)(93886004)(101416001)(50986999)(68736007)(77096005)(33656002)(54356999)(230700001)(65816999)(87266999)(76176999)(8676002)(586003)(110136003)(47776003)(106356001)(2950100002)(5660300001)(80316001)(189998001)(6916009)(92566002)(65806001)(83506001)(7416002)(3846002)(66066001)(4326007)(65956001)(36756003)(6116002)(305945005)(2906002)(50466002)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:CS1PR84MB0311;H:[192.168.142.143];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CS1PR84MB0311;23:dLzpbHi/nu9CreXu2Wlw6MYNZsnP9slsHWzmd0l?= =?iso-8859-1?Q?eoiNHgUC9bhrFMZB3XA2Mqpkj6IT7QM+vWmtTAUoXeeK/lGsDnGOwTCn3l?= =?iso-8859-1?Q?j+q62gWtH2jtk/7uDNDIauky380yfpCHv4uQiFt9osjdA5pjQt4mUGxTcd?= =?iso-8859-1?Q?6aa9VumDe73EGvzisnnSEyjSN+vaKeTjxfblHraI8JlvcxzIZBYmnvoRVM?= =?iso-8859-1?Q?enc1Jl2LUQKV6ukbo/3rDOFZsMsi64X6dqNVu1VJQxJ+3SlmiE4sn3/Nwv?= =?iso-8859-1?Q?nYlUFIapBXV2raV3exrVlQo13RBB2faaAz75NRq9StQ6e94SCTbQxUkSfS?= =?iso-8859-1?Q?jtq676OqisfghjPG9wg8GrHJjY0NasARrQn7XbaFoL4HFujqCi1BrwvMsu?= =?iso-8859-1?Q?IbRy88wYPUJerPZeMx3aWQB4AgsE0LRvSrg+/QXT60RxSLKt92utZY9YDr?= =?iso-8859-1?Q?KyJGy1TTLyCZiX3A8EsGDoQv4PqIHuFDVpdvehpF8iKwMCbpTAji3bQp/H?= =?iso-8859-1?Q?Q6QBHu3RiD5iYaG8TKe84iz7xM+8NGybKzqwoK1QcS/IcfwOhbAlw9MXYJ?= =?iso-8859-1?Q?8DOcAlXscKMLAVKf+z6Be9VY3W6USpoUdstBQl1e6ncVkB1eyjBs1Ev5+n?= =?iso-8859-1?Q?FPcDyqPRSak3O0wFpMlq7FIp3hFYnIDqwO3bvqw+abiMVI/4RN6hDu1HUP?= =?iso-8859-1?Q?5ajN55n6yhqfpYjhQKhuH89dOt8eBfB5z2Ovy+PaTJ4fY1S6+2YdthdTLJ?= =?iso-8859-1?Q?KWfIl5Ep6AeVzhHdMCyPVWvwIRiJ3y/sLIKS/Qtu8RPUH5MuPdJ3gDgJYF?= =?iso-8859-1?Q?bwDW1vG3Ig3pGaIuynPBkrdTrdepiU0yxDz45YUzSDxACYwq8JYcrO/Y/c?= =?iso-8859-1?Q?bbUxo9KMXWipLrwp+GCuf4PemLpnDlejccr7ejWkHYLvieV7xm8q710z+c?= =?iso-8859-1?Q?26mnDMCYhzvmdrhcAiVODUs2kXou29mt8xwz2EWH2uzBq8iSGHnyo4tlF6?= =?iso-8859-1?Q?rPExySQ/4Pd8DTAtANIxzIklY8IHqGPqojfeSYYIRAUPu9RnhxZ/c9r1N2?= =?iso-8859-1?Q?PQheueft+Ikuy1ifi0LkkPnjVgp2J4DmXwS/Q4nHATnYfxQLMfN+uXuCjf?= =?iso-8859-1?Q?AtwurF7AQ0e5E+0e9dmYV3sZpfNXBplI92DetezGBecJlHzLSkCFajNmMe?= =?iso-8859-1?Q?fviaSYY6i379uHcHv8RPq3tV4d7/X2Hl7uWVRr9rZoe9K4f90XXl/ahPgm?= =?iso-8859-1?Q?Av5r76YDWB7Z1LyhnUq/evETcNxWKVeQAhAepXWHG0a2nZvcmfVwcr2x8J?= =?iso-8859-1?Q?M+mROxb/GNw8H6krmOstLXQsrYLq7UfOMD539VTtJdhY2SGklyUI6mt+QB?= =?iso-8859-1?Q?TK5IV3DvjJvwgjtF8g9wmvEAzbJIKaHaoBEUGCt5fn2j3galr3LxD96QXR?= =?iso-8859-1?Q?660pWSSz3Dc7zoMEmJbIcLju50Ucp59VgzkI0bXNioAGqrC0C3B+Axvcg?= =?iso-8859-1?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0311;6:EeEZ4EFBIZZMCfRgH/Lt7pfNzwsKWKBFQRFh/1DQ5i+lxC0kgSjBTgLAiT/vDtYKNDckSRSpZji77Ia7QSqkoRWgzyoRsiwi5hmtVq9J4XLG+LvlQ6Q8KZ/1Na3pDK9yBy4Fh8iTCvlTNFbvPXK6ltOv30jb6Cr68gXoT3ofK/OUpSg5jZyRKvZJlBBpyJSKvWKlNitMamERo7+f6VKqhQzqVPtfHkWQi14mDIakFlEbxmrZMXe/A8VSsQckuQ7C/DJ5Y1WZXErVKqvWKnlPmqBwnl+7v1+9QSHHeXUF/kVpA210KHlD8jylw00BXrzrHUtwvk9pamb8wetyh0KqjA==;5:k/tUiXsSwFfIBErhG/fDZVB9EuuFaJWJ0uxw9diONk0y990yFC8nku+9PhAkQ6FTGuVY2opWMshCQ/1AheXYwCkRJAfLuK67avBCLzoGystYAabLkDfG0jJRhMa7h+cU2+u2LeajWeOyx36sw4RFYA==;24:vnJZOLEYtGmuSv0KcyURn48T06wBS7V4dzayKBU4PlEacxK2QbE+KXHwHtjN5vUtZ4yRkCVebT9lmsm5YfsqHIYXjID8Czx86xk/UwcBugs=;7:ee5eEG8xZuB4mK498wqpfNT0NEyd7g8yokaiAzlpCBE0Mb5Eavst2hMYHPUSh3HUOW9AKS3phj4BvmO9cr5KJRFtSO+k8/9F+TR1zfglk2wjYU+mF+wC/7J//UCy5ru6N2kMb+0E4QbULW6AZQc2+sWfqM1PVLouYvmzgYxyP960z/uYR6xe9blJPkbBhFAl/eswjur8qLCFyMi1rmgpuPW1WEAbZSlJhv+lAYcakteHVLy94e4REDyG/vY7dAuFAG/y+YQfmJhqyELabOCyzGIHFUsCisYZ9HI6IJvRvYaiPcdWhLm73CgTXnWw7YwI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2016 19:30:21.6907 (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 Content-Length: 2013 Lines: 63 On 10/06/2016 01:47 AM, Davidlohr Bueso wrote: > On Wed, 05 Oct 2016, Waiman Long wrote: > >> diff --git a/kernel/locking/osq_lock.c b/kernel/locking/osq_lock.c >> index 05a3785..1e6823a 100644 >> --- a/kernel/locking/osq_lock.c >> +++ b/kernel/locking/osq_lock.c >> @@ -12,6 +12,23 @@ >> */ >> static DEFINE_PER_CPU_SHARED_ALIGNED(struct optimistic_spin_node, >> osq_node); >> >> +enum mbtype { >> + acquire, >> + release, >> + relaxed, >> +}; > > No, please. > >> + >> +static __always_inline int >> +_atomic_cmpxchg_(const enum mbtype barrier, atomic_t *v, int old, >> int new) >> +{ >> + if (barrier == acquire) >> + return atomic_cmpxchg_acquire(v, old, new); >> + else if (barrier == release) >> + return atomic_cmpxchg_release(v, old, new); >> + else >> + return atomic_cmpxchg_relaxed(v, old, new); >> +} > > Things like the above are icky. How about something like below? I'm not > crazy about it, but there are other similar macros, ie lockref. We still > provide the osq_lock/unlock to imply acquire/release and the new _relaxed > flavor, as I agree that should be the correct naming > > While I have not touched osq_wait_next(), the following are impacted: > > - node->locked is now completely without ordering for _relaxed() > (currently > its under smp_load_acquire, which does not match and the race is harmless > to begin with as we just iterate again. For the acquire flavor, it is > always > formed with ctr dep + smp_rmb(). > > - If osq_lock() fails we never guarantee any ordering. > > What do you think? > > Thanks, > Davidlohr Yes, I am OK with your change. However, I need some additional changes in osq_wait_next() as well. Either it is changed to use the release variants of atomic_cmpxchg and xchg or using macro like what you did with osq_lock and osq_unlock. The release variant is needed in the osq_lock(). As osq_wait_next() is only invoked in the failure path of osq_lock(), the barrier type doesn't really matter. Cheers, Longman