From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753728AbcFOTf7 (ORCPT ); Wed, 15 Jun 2016 15:35:59 -0400 Received: from mail-bl2on0133.outbound.protection.outlook.com ([65.55.169.133]:9440 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751907AbcFOTf4 (ORCPT ); Wed, 15 Jun 2016 15:35:56 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <5761AE13.9040107@hpe.com> Date: Wed, 15 Jun 2016 15:35:47 -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 , , , , , , , Davidlohr Bueso , Jason Low , Dave Chinner , Scott J Norton , Douglas Hatch Subject: Re: [RFC PATCH-tip v2 5/6] locking/rwsem: Change RWSEM_WAITING_BIAS for better disambiguation References: <1465944489-43440-1-git-send-email-Waiman.Long@hpe.com> <1465944489-43440-6-git-send-email-Waiman.Long@hpe.com> <20160615174508.GU30921@twins.programming.kicks-ass.net> In-Reply-To: <20160615174508.GU30921@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [71.168.64.62] X-ClientProxiedBy: SN1PR12CA0017.namprd12.prod.outlook.com (10.162.96.155) To CS1PR84MB0312.NAMPRD84.PROD.OUTLOOK.COM (10.162.190.30) X-MS-Office365-Filtering-Correlation-Id: 236c359e-8525-4341-e3f1-08d39554438a X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0312;2:NYKwV/zWMQPU8LNR7o6lxkMfXSC2p8O4O5cZYqdDCqCv4UIpibmPwJftXyIQjLPP+93JJRUQfkJV7P0bsAG53x1ZI9GE8MvqR1+8njAb2tu1KlFmi+sB/FsCrIKam4ELur56AFWuCsVP+Z0smg+iLbLOj3PtepeaPNecQD3YrJlwa6YBeKrKMgsQQ4xneNx+;3:YxDdeBe88tMxQMYaykWVZbspJNmHICbKNvl7DI+EXMtbv+EFTvhM497TlSgDRS2ZTpp8VsIoB2mcTMR2m7KFYH1LlbYtPd5xz4xqnByv6fTCHhTtLVwau+AWo6HtZHI3;25:YcXIqcMLy03pNabkCzkvd+e90ZAX/BS8gklni2tt4nrWNnUzKVsgdZwg7VIq4PPeYsFRk8LWhLaI+k+JjGcmywi/fLBfYq1GIkQH1kk0Wbqq8T05JkyOHoSmCLzab7VdP302pMLqUunram3rTXVo2KKCaocdVH1+M3T8uwc7LiIq4MEJSx69Ld4emDcK80t5KXIMNEKt+IIKKopJVoyPUPwbc+BVbgIIdx8BdYPRCa9xERGqFJSHQ4Fc7Vx7qsV4Gm0936MuM7v9/g+YnP53Y+4lcK9C96T7bycplKNpp6IVeUBQ3ES5ItCtkaiZVcyMu33Scak97osBJczRJJHCkjmDviycMFXogOnulYGZnNtyId6YmL+oWlubWNg783KpNRHZahdweHxwNVOERuIDIjm3tN1t032QLjyVo9c7/IA= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0312; X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0312;20:Roj72QYvpo40nXZKA0Mro8CTRq1sFTZ4gHfV6f0OAYCB1unVig63WqHq5zUyeN1Z2XskoxS9Tl1G9SyrvZ3C3RFLi6yRO2TrNUWFuatMmFZCk97SgRKXovhHWCqsnOxXdeIkGCbp/+EN1ilYciViwmVXobYz//rn61cvGLaXnuYGWsumZ2R4d3IfCZ6apbEozZ8wYx02LfC8ab5FkEZdNSg/DoZrjgpn0c0jyFe9/hpTNSWW6tdovtf5c3MtF8LCgnzk4qd3/PQSHLk4ok6SHakqgBF5pbAxGD/HpkZcq8aDzysPygIDcDJ26Lskkhn0kOwtNvn84xtq5smcwmM3qZ/64QtsWtHeb9htSuOZHgEt4M7I8+xaY40XUI3Ppp5r4aLdt+vdIbxqXF1DNco8iFDgsA6BIRXybECCKgk204BVT3dWfJkECEI8LbrC2MOHp7H1AiLe0TvHvykzqJ9RUyQNtzqXc4DscSv0YdUtOnoSY95yzv7n9gxbL3eRAdq6;4:ZO8+j+7oh72gr4zGKbgdBbGC6R2Yds6zz1SxPTDiXGTouUp8PeuRyadQEiPmMzldOyAbXb1p+DsY6txqhbNJPn8ShybwoMO/hjKxrVXGgTCEuXpFRRCG4tGckf9Zr3g9X9D1hdeNtadBMpjeeZrC0wFgH7TQP/Mq8xT9j8meaxUrd6vF3FHqwgTAzK2r/5BLIjPHDsy/3C5SmIHKPiVD0j3VRz/tv148zbDX9/woiLnTQmPFdQi28BwDygmGhg0+D7B/u2D9GAo4WXTB65mT7A9tBHbisJStR1moItPO58QRJZCH+7TESHOBIv9mW/Tf3zF1I9fXUS+e5EAYpKZBGuR/Hou3THRY90ZlIIXKWU61iGaYXyGbuns3B9r4OKs+ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);SRVR:CS1PR84MB0312;BCL:0;PCL:0;RULEID:;SRVR:CS1PR84MB0312; X-Forefront-PRVS: 09749A275C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(199003)(377454003)(189002)(24454002)(64126003)(2906002)(65806001)(36756003)(65816999)(87266999)(105586002)(50466002)(4001350100001)(68736007)(8666005)(97736004)(50986999)(54356999)(110136002)(586003)(3846002)(4326007)(230700001)(8676002)(6116002)(76176999)(81166006)(81156014)(66066001)(101416001)(189998001)(5008740100001)(106356001)(59896002)(42186005)(77096005)(23756003)(83506001)(33656002)(117156001)(65956001)(86362001)(92566002)(5004730100002)(47776003)(80316001)(2950100001)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:CS1PR84MB0312;H:[192.168.142.154];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CS1PR84MB0312;23:Vh3qN7teTHWnsZfYFcolj591C5jI4bceYdlXNPb?= =?iso-8859-1?Q?GrwVs7N11ieC2AYUybQOftUTbb6IenQKII95PydISuBP8m3K/xs1ur1f7f?= =?iso-8859-1?Q?ITuMoKj/6cM/Kp0Pi0m0qd18NRoOQ1xy+mD/t/99J5xDK2womi+y+hkj1j?= =?iso-8859-1?Q?tc8CXgjDMuqV02iwKYO96FqRJnaCS+VbYtTEfsoiyh2c5hvzr5nj8UoiY+?= =?iso-8859-1?Q?41guktblYhCAJsuEkn8HO4CJijWW/Py2w9BLb7LT6J0rRxwnclWaVFxTAn?= =?iso-8859-1?Q?FozXXNNcPerGMbHsauLpHV5LnFJ6CA5EC/aR3WF7Yu3lY4ZTXLB/FkwbZm?= =?iso-8859-1?Q?Ynn7BwPtS6I5kb4/LQElrPdQh3KgrFkuIlP8nrnfCo/8Z6Qvh+tU/QY2+e?= =?iso-8859-1?Q?h03SZHFiO9TTTsAU2gKkRile42Eq7G3PNPvFrUBuI8ENShguqDJb81c1T9?= =?iso-8859-1?Q?sRF5xOn+ngXg1HYAOPxM1Fb3nfMXKveI6oiA6WW2A0nv6tQV3bzUK/cnoo?= =?iso-8859-1?Q?s+Aq6csNnOto1MFE/kRKrUHxV7F4312TBmO71174KXibUfm0L3+zDloHAq?= =?iso-8859-1?Q?Qon83kgpgSO1zO8H4J4xARlDL8aYqe3mPd/UhzzxaR7SXxRl7n9IBZ8wAl?= =?iso-8859-1?Q?nmF3WoiTjho6f36c3++1ob7HPNGxM0/3VAX4TNlUxBxoUvvhA3iF2uQiiI?= =?iso-8859-1?Q?gMIqrZiLtp4NfALjW6FJ9i/7i7jMq5g34AaAMylLEzr8hD7gVrQfUmxTyI?= =?iso-8859-1?Q?WW0L8FsdHCE1cuA/DREEOfmJNjiggiaaU2zsyxF7gEKJIpldid6rsjDZvI?= =?iso-8859-1?Q?yX3fvaawagQg4Oe33c7rLZKHPGt1orOAowAumqeGcEUDb73Fm4VWiiWJe0?= =?iso-8859-1?Q?45n8PKvisg76zdvNLsAuNNroGHe6xVjWOvkSQYF6l8jGuBkF4QOO0/TRRd?= =?iso-8859-1?Q?aoVjr38A5nvat/8zMG8D0r7q9xRSVzaTQwHfzLzkUfXTd5/hOn214tVKvy?= =?iso-8859-1?Q?M3dT3Y/PmefYA+db8Gm4nH0ZEA2OiSI60rUf2IrSiGJVBHKaVj+fJxWES+?= =?iso-8859-1?Q?OHnmOqLjd2yN9CIzVtWpUVQlbZ1Xwy4OAMnxF5W4i79TeO0IwEy6L5vFBn?= =?iso-8859-1?Q?X5Hp+dCaEDoNqTMWVY0kWAHZPsrAE38vI2WYWaPZZxziHCozKWVzRToIWw?= =?iso-8859-1?Q?DB2I88LItFcOnZ+l7DlsiHyN9/WP1pTSVL4ub7d6/+xAnJSkLiRT1Ee7Da?= =?iso-8859-1?Q?UqK/icTLUVRIuH+XcNcllTW9lyzWQdYiIwFf/n7oKVft18QeFAh3P4PGqp?= =?iso-8859-1?Q?heeEoIgZNML1/eMBVvV81oY8KZ2hMlmcGUOQDPla7rOFA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CS1PR84MB0312;5:ZGvihu288YBqPFoMGR8z/rgAJ+84oSaegtkLXsOPWmt0R2B4JiqkW97vUxJ3NnlTp1aa1FMkpdfK7CzMN9DzdZkSCLu0Gv0vUWHSSN+yTSbIBWKpoK6As2opMie36U4S5CvEtVqfZHdgcpAzoEBSrQ==;24:u470mJ9Fl+Y7ZEb69xQj7zJ7xxvubCxuhh34tDsZixaZWeXAq0T0QLXDjaianIVAKUFlNXvvm0AUuR3iRFgwm2FuwH0aT08OqkRy9iQG6aA=;7:Jvs2gDpjrvo3Lqlm6oq+sVQ8C/lvzjuvH9RiBz5lQ+15Icn9CWcenVwcRQeNoz8etL8143picCxX5DyAtmAGUj6i04cnQT/ooRDgB3TsTO+CeNnlC6b0wSgqizUXdMgIAaD5v9XtxkWO0J7/clny29oWR4uQEOvETVQ2UsoIITPQROZTvCwPtXQNHlQC7Yqmfrk5BJoAsVWLIw/065eMo8Qm2msJP1WmBzrYqy5U3qE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2016 19:35:51.8588 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR84MB0312 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/15/2016 01:45 PM, Peter Zijlstra wrote: > On Tue, Jun 14, 2016 at 06:48:08PM -0400, Waiman Long wrote: >> +++ b/arch/alpha/include/asm/rwsem.h >> @@ -17,9 +17,9 @@ >> #define RWSEM_UNLOCKED_VALUE 0x0000000000000000L >> #define RWSEM_ACTIVE_BIAS 0x0000000000000001L >> #define RWSEM_ACTIVE_MASK 0x00000000ffffffffL >> -#define RWSEM_WAITING_BIAS (-0x0000000100000000L) >> +#define RWSEM_WAITING_BIAS 0xc000000000000000L >> #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS >> -#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) >> +#define RWSEM_ACTIVE_WRITE_BIAS (-RWSEM_ACTIVE_MASK) >> +++ b/arch/ia64/include/asm/rwsem.h >> @@ -30,9 +30,9 @@ >> #define RWSEM_UNLOCKED_VALUE __IA64_UL_CONST(0x0000000000000000) >> #define RWSEM_ACTIVE_BIAS (1L) >> #define RWSEM_ACTIVE_MASK (0xffffffffL) >> -#define RWSEM_WAITING_BIAS (-0x100000000L) >> +#define RWSEM_WAITING_BIAS (-(1L<< 62)) >> #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS >> -#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) >> +#define RWSEM_ACTIVE_WRITE_BIAS (-RWSEM_ACTIVE_MASK) >> +++ b/arch/s390/include/asm/rwsem.h >> @@ -42,9 +42,9 @@ >> #define RWSEM_UNLOCKED_VALUE 0x0000000000000000L >> #define RWSEM_ACTIVE_BIAS 0x0000000000000001L >> #define RWSEM_ACTIVE_MASK 0x00000000ffffffffL >> -#define RWSEM_WAITING_BIAS (-0x0000000100000000L) >> +#define RWSEM_WAITING_BIAS 0xc000000000000000L >> #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS >> -#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) >> +#define RWSEM_ACTIVE_WRITE_BIAS (-RWSEM_ACTIVE_MASK) >> +++ b/arch/x86/include/asm/rwsem.h >> @@ -41,21 +41,23 @@ >> >> /* >> * The bias values and the counter type limits the number of >> - * potential readers/writers to 32767 for 32 bits and 2147483647 >> - * for 64 bits. >> + * potential writers to 16383 for 32 bits and 1073741823 for 64 bits. >> + * The combined readers and writers can go up to 65534 for 32-bits and >> + * 4294967294 for 64-bits. >> */ >> >> #ifdef CONFIG_X86_64 >> # define RWSEM_ACTIVE_MASK 0xffffffffL >> +# define RWSEM_WAITING_BIAS (-(1L<< 62)) >> #else >> # define RWSEM_ACTIVE_MASK 0x0000ffffL >> +# define RWSEM_WAITING_BIAS (-(1L<< 30)) >> #endif >> >> #define RWSEM_UNLOCKED_VALUE 0x00000000L >> #define RWSEM_ACTIVE_BIAS 0x00000001L >> -#define RWSEM_WAITING_BIAS (-RWSEM_ACTIVE_MASK-1) >> #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS >> -#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) >> +#define RWSEM_ACTIVE_WRITE_BIAS (-RWSEM_ACTIVE_MASK) >> +++ b/include/asm-generic/rwsem.h >> @@ -18,15 +18,16 @@ >> */ >> #ifdef CONFIG_64BIT >> # define RWSEM_ACTIVE_MASK 0xffffffffL >> +# define RWSEM_WAITING_BIAS (-(1L<< 62)) >> #else >> # define RWSEM_ACTIVE_MASK 0x0000ffffL >> +# define RWSEM_WAITING_BIAS (-(1L<< 30)) >> #endif >> >> #define RWSEM_UNLOCKED_VALUE 0x00000000L >> #define RWSEM_ACTIVE_BIAS 0x00000001L >> -#define RWSEM_WAITING_BIAS (-RWSEM_ACTIVE_MASK-1) >> #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS >> -#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) >> +#define RWSEM_ACTIVE_WRITE_BIAS (-RWSEM_ACTIVE_MASK) > Can't we collapse all that? They all seem very similar. Yes, they are actually the same. I think we could extract the macro definitions into asm-generic/rwsem-macros.h, for instance, and make the architecture specific header file include the new generic header. Cheers, Longman