From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753702AbcERP5J (ORCPT ); Wed, 18 May 2016 11:57:09 -0400 Received: from mail-by2on0133.outbound.protection.outlook.com ([207.46.100.133]:41307 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753681AbcERP5H (ORCPT ); Wed, 18 May 2016 11:57:07 -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: <573C90B7.4010103@hpe.com> Date: Wed, 18 May 2016 11:56:39 -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: "Paul E. McKenney" , Peter Hurley , Ingo Molnar , , Davidlohr Bueso , Jason Low , Dave Chinner , Scott J Norton , Douglas Hatch , , , Subject: Re: [PATCH v2] locking/rwsem: Add reader-owned state to the owner field References: <1462580424-40333-1-git-send-email-Waiman.Long@hpe.com> <5733AC64.6020306@hurleysoftware.com> <20160513150749.GT3192@twins.programming.kicks-ass.net> <573615AD.60300@hurleysoftware.com> <20160516110948.GM3193@twins.programming.kicks-ass.net> <20160516121719.GC3528@linux.vnet.ibm.com> <5739D686.302@hurleysoftware.com> <20160516175041.GR3193@twins.programming.kicks-ass.net> <573B6DC8.2030902@hurleysoftware.com> <20160517194607.GO3528@linux.vnet.ibm.com> <20160518110555.GE3193@twins.programming.kicks-ass.net> In-Reply-To: <20160518110555.GE3193@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.68] X-ClientProxiedBy: SN1PR0501CA0015.namprd05.prod.outlook.com (10.163.126.153) To DF4PR84MB0316.NAMPRD84.PROD.OUTLOOK.COM (10.162.193.30) X-MS-Office365-Filtering-Correlation-Id: 31309447-5c3d-4bfb-1f6b-08d37f350e85 X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;2:RvAsg1cmzpAmKZqjbbdJmEO337r/3BbUXI+1JAKDsux/lJIBrU2UHs/4ltDfN9wc5wec+aYcp5cUJP+J4zUisy684FRtiDJS1UcJ6JFCNK3j3sxClCN4ErfRoDEURuR2crjGStFpDCDzoJNEgke0vyFytxRYBKIL8irGDXZ1H7x7mvArXlGWqlKIQacwiCW+;3:s3PuyXPwsDwMn2LpFXlrFWMPOZpncXNw30A7C1sKDf/9dOxWatIncjQqcGzjVXuaIi2uH99QhNLrXJhWTmgCdHUv198uXgUJLyis7Y8m3J0C0jjJ7W95zF3pFLGX47Op;25:CebKJQNRYaDGdnLUGLqniZAXqVCCj+LtGTBoW7YLbTz4tCgp4q6lFN7Q0s9oQY83C4s3uiGD/r9DQ5XfKUJLLj/JkqjZd8ARfZg0pTbGztQq/VRX5LHU0tfz96dMYKaZBzO/4Mt+NhiFCYHjDWUrX3gxYzia1zPwmf+mYaq0k44xzQM9qzlQQYbL9jP3XmuBq5TRPqHmyZ1SX48jPYlPEFI3OMU0SbWAWt0mrr19UJM7Y8SwMaoCciqFeIZ04imrhsq5Hq34hTQ1VO1QXCW+jYjgLEjMJ0Sk984Kz6GSPP2tMU3tIT4MVzgYyU4tt5TyHIj5ZfDcLw+PU+K2lBqWvNCyvlV5WnblJoJH/X5XAhPVzn1NJt2D/AlkgiLbP/b0lvJQxb4uqRisbkS9M8AT3vaiytJSRlsvKP4D127CPNU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0316; X-LD-Processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;20:N5MRsitBlPU6+OOpOvwaaT1DQko7JE2vfukUg+wBC3DQszS7qSyxq7E/woOlrLysFKiwGk5rELuYSrvfzlmBXOCbSBqMOh6zSEAk989kv1L2xc/P8lr15ADz45Q3lYMiNCP2hDPqTH4X+Eiw/sdM5rA9qi1iqIXLJV1Lu9RjMoTT9IMHoI1ElZVZy3WGf3/PWItc1OMBFQg51LCL6Dn2vVDVPomUrtWfyq+2DdC/RVToRVmtVWBhRrJr0sU9GPN1qGA/XTphikAjG0TWY0cqPT01lf8Xrw7cOKYHNx7/19Q46cqOqOIHziI6DXWcBOQdT1hFQFMXGMNuB0J23ER+xg==;4:Dx59RjKpGP8SyIMA4mpM1njyUdntY70Kad1bvajOmDr5n0pznZnMDhAzPNkOY3GXYXtHj3E5M2kF14w31glJeEZJlkXz+bhvwxptpsOuwjAbcU2FBK7sU5RK2FYf13jXcSDCAnlMxJSCmP93sksqCc3iv8gkZ7pfStd0xcqs1c07S1oJVQ/o3Y7bsQr158juTcQzf9vROQvS/af1wS/hr5prnbqWzCTTLRN38l/ftnrgy4cz5EXubACAlP1pTGRR/MssV+L0Kxo8YueYiNGyD8A7/W96O2IE501aTjR0yW8B2+oGwM717j3JlQMM5BRNCrURWvxykWJqCqzqmcs/BMoiLKTTvYWJtMCE/LD5RLjfFgZpy/24h7v/t7WIJxSB 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:DF4PR84MB0316;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0316; X-Forefront-PRVS: 0946DC87A1 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(24454002)(377454003)(230700001)(77096005)(586003)(6116002)(5008740100001)(189998001)(4001350100001)(2950100001)(4326007)(2906002)(5004730100002)(23756003)(47776003)(110136002)(66066001)(50466002)(33656002)(64126003)(81166006)(83506001)(76176999)(36756003)(93886004)(59896002)(117156001)(50986999)(42186005)(8676002)(54356999)(92566002)(86362001)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:DF4PR84MB0316;H:[192.168.142.134];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;DF4PR84MB0316;23:Xphc/ofk1smPFxtsxPkwRLE/27fZpm+HwbAqgH4?= =?iso-8859-1?Q?L3pDmBTkOoDyQSHkAkoeqJRD4pMZGyrwKiXjxvI/TDTMypVVGcQ5yxRK/8?= =?iso-8859-1?Q?CQdqufAybuvQHHlqhztPIef11BZXNbCDXkV/0GItd8PYwyoUuoOXCIx3UC?= =?iso-8859-1?Q?I9/wtztv9ZEIeBT56mLdCv4Mh7LSRArlw9IIktRQKIcvd8t73kvx1dxFEI?= =?iso-8859-1?Q?NOe83+OD/rIMbKyxwkYWLy5nCNVYD/jJE455o2pjy1k+3gYqsXL65bT/h7?= =?iso-8859-1?Q?plTa+6igASrUzWzC7Nkp9shsOw06iRDiCbBl8cRvuMhaK/+HwL65U15dlv?= =?iso-8859-1?Q?K+AT/E4WEyonHb8AM5SDHAy6JAaKHfiZhIiKQyNI392rZ4ek1CLX0WnCtF?= =?iso-8859-1?Q?GpiTvyD39ViLNKFFKkvTONfIWUk/u0wVWh8lYREW1O/sBZpLWAEH8FHPrW?= =?iso-8859-1?Q?XlirG03kFMY2kni9xwRU6I0SUcIRg8EkAUhfLRssMSTyrTRdQ1vQRJzoGy?= =?iso-8859-1?Q?M6jPOd8o/uxcVynlkyexsLuCQOranmO7fsza58Y0UZrIFxNyGU6wuYYCOu?= =?iso-8859-1?Q?8uzTfXUYz7cJOpKZRBW2BxmBhln38rywGcMlkWsVYb4PyMIrBN+57ATrvf?= =?iso-8859-1?Q?onL6By1ffhmQPQAg6150Umy+RclRFKFuJpTPCJDtDEsVt3YsE7o+a0FDbD?= =?iso-8859-1?Q?DA15w5PCXEHxk0IapeEy0EkDe7+GLSgsiLz7uhMPpefR5FcN83kiHWrPfo?= =?iso-8859-1?Q?Ecug7p6mXomD1xoAV/UQpSIF+mKB8/SIPCW0wsJVDpBFmZPl34dZFXhPgV?= =?iso-8859-1?Q?Uf8bbJiZ1oh25HzYo5i5mMFD8Xbq6tCoAd1XP4dtnkgwalZaUv3S3ZPUsV?= =?iso-8859-1?Q?Serqv+r3iWYvuakQi60zo8vvJ0mPGe+U//MDypnPitPaO3zqWlKaAqXrDr?= =?iso-8859-1?Q?ak62xjVJxuPQp+KSRrZAUpst0tMXJzrxvYxcuzxr9UVV92h4DDlWH6o+XE?= =?iso-8859-1?Q?yuWUY8M2qxUWEW3CqqUb5NRp6PhXxV/TkV9w=3D?= X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;5:gniwGA9H9u6ElHYU8OJ0IEGOOmii8el1l0I8PX2G4OSExVt58kYlh4ByjAD9oIrjjcNr31NQcCtVzpnHOFIbN0Y/qwOrL1XkGX9KnJH4M+yWpLJM+CtDI/4w5jvqgX0ByXvHq5yj66MTUeOFB98TwA==;24:HUQ2HPZI9cv4fHRZjDUBXbqAnxGeBqUA46tXWlJBk/odWwRttqHGlhqZpHh9D+j72UiMZ8URv3XRfHQVknWae7q1MZ/nViY2qAqaK1eJLag=;7:Dr0v+5bGnDXaeXVXkZY3wViucirezES8Iff2MUqpGJCMtbsThoK2Qex3WzH6aK/H29jFHPJ8F32O9HNjEzX+BF//xLPwwqY+b0XomX/8NTBlLTHRwZ/XwLNYiaU77hACQSK8P1CVSk6afroTvR5cyJ36kkRm3Yb5Gf4YcRCLmOb0dJRrRuKPu3ZKuLxms5C9 SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2016 15:57:03.0783 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR84MB0316 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/18/2016 07:05 AM, Peter Zijlstra wrote: > On Tue, May 17, 2016 at 12:46:07PM -0700, Paul E. McKenney wrote: >> Actually, if you show a case where this makes a visible system-wide >> difference, you could create a set of primitives for #1 below. Have >> a compiler version check, and if it is an old compiler, map them to >> READ_ONCE() and WRITE_ONCE(), otherwise as follows, though preferably >> with better names: >> >> #define READ_NOTEAR(x) __atomic_load_n(&(x), __ATOMIC_RELAXED) >> #define WRITE_NOTEAR(x, v) __atomic_store_n(&(x), (v), __ATOMIC_RELAXED) >> >> The ambiguity between "no tear" and "not ear" should help motivate a >> better choice of name. > Alternatively, could we try and talk to our GCC friends to make sure GCC > doesn't tear loads/stores irrespective of what the C language spec > allows? > > Maybe the GCC guys can define a tag which can be set in the variable or structure field declarations that those variables or field have to be read from or written to atomically. This can allow critical data that are used by multiple CPUs to be handled correctly while allowing compiler the freedom to do what it sees fit for the less critical data. This approach is also easier than looking for all the places where the data items are accessed and modifying them. Cheers, Longman