From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754050AbdEISsq (ORCPT ); Tue, 9 May 2017 14:48:46 -0400 Received: from mail-sn1nam02on0082.outbound.protection.outlook.com ([104.47.36.82]:14752 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752049AbdEISsn (ORCPT ); Tue, 9 May 2017 14:48:43 -0400 Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=caviumnetworks.com; Date: Tue, 9 May 2017 21:48:29 +0300 From: Yury Norov To: Boqun Feng Cc: Will Deacon , Peter Zijlstra , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Adam Wallis , Andrew Pinski , Arnd Bergmann , Catalin Marinas , Ingo Molnar , Jan Glauber , Mark Rutland , Pan Xinhui Subject: Re: [PATCH 3/3] arm64/locking: qspinlocks and qrwlocks support Message-ID: <20170509184829.scwjixgc2kxxxku7@yury-N73SV> References: <20170503145141.4966-1-ynorov@caviumnetworks.com> <20170503145141.4966-4-ynorov@caviumnetworks.com> <20170509044708.vvwgzhvdrqyljy6s@tardis> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170509044708.vvwgzhvdrqyljy6s@tardis> User-Agent: NeoMutt/20170113 (1.7.2) X-Originating-IP: [94.25.181.227] X-ClientProxiedBy: HE1PR07CA0029.eurprd07.prod.outlook.com (10.160.74.15) To DM2PR0701MB1280.namprd07.prod.outlook.com (10.161.225.18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8e4c9422-4632-4932-b23d-08d4970c0347 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:DM2PR0701MB1280; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1280;3:mxucBSgyl0K3EUE30yaCmtUmg+3/lqnDMresIeIxIuS3inepsaJYO5IY3V9QwR99yruzD4Yh9HacL+utfSjQYM6FXfApk9tCprP7UfUvUXlgcCr77DHa18TGmT3qdDtdxDNPAGOv0TuCM66CG3nwwj56rDvp4SJgjH+AlHJoYIQM/IYk3Y/NsWfjWHBEMQTviHyeq5eC9HH+Uu0nDyQcJ2yvc8yKi7X1f4/wg/+pLjVoFY55yQGbLThF1AEbT2lmsyFS77+t9maosUb7wqI6u3aySFqpt3p5eSJGGS2JiDKlAyWYw6CWjZdyVhRDcgR1t2IvfHWv13IV7178RizEmw==;25:HoKpNhOfOrMDO/fqyU/wJbSNxZINaJTPzeD4qNp2BItitnnTiamzN8waIC5Gm2LCdTpOmEXL63X2Nuo6E6Z0qs3sR1jllnLVmz6+HjzuVjYu1joNsBss0BQuhVEGdB78uMKJ0d2jdTyC/glRSjmcqdQNUVhwIApdKcTa9Ya7m+CuzB1T6wUPemo6lQGquS1yaMRf50qJEMQcNIcgsBw0TVzAxx+xl2OUOOh3KynoyxuR9pUUldWQO0CVy41dGlFrUuZHcyN+pUHS5T4/IV6tG2XxEceNdvDyw6TX1e+UeGr7z687cHtmgQ+9+DnHHnhY2s1/N2KxaFx5lXpXf0BxjIeh90JzEDRAJhlrARZsW2zqDaN/tYtyOYTxuQbA7cEu1vUztSCYuZ+PGOsNOiLNrPJs/STf7DUrGeA0IcHBCXIBneyi79K0cD3m1DbbIfwUFjPxojJ/euNRJbre8Z3JHIwriqv5Xj0xk6UyzlwF3WM= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1280;31:LqTER5B1gyhGhM6/vhG/eRh4av2KLLpMynx+6lyreiBw4nDTKZcaWB5AKrePss/Gong1Q7Ehl+iL1juvUqbvgGXT/VlM5m1afTVFQv7vX22WFxyJ35TiJLwIyGJzNnCqO6KkhYsL7k1UP6W0UUdUo6dhSohNncOcveUAnmMBx4RXxUIg4fYOFyiiBmxYqkGTFraaEE50evHWd6RWDOM9feMZKjoSlIBagOtfE3yb4K0=;20:l/TL6Rj1zqKOVroDi6jBOwkxQwfu3Oacx3xvq3g4TYlUKttY0hZatQ2/td8C1BrHYpuSsEqTyhar7r39gyNNFa/R1IGJ2ehxj80XrKK4pjhnc+6M7q6rLsgsglTmmawfuDqjV+TUDG/nM9XGXyV/796afp+XXshdgeyny0DqXoxDWTMpdRqhICNwgjCPzqyeBU+2i2oIAwUcwmFwSCGO82HSTbLvaZbe9oPm4/BdZfV7Q9kVW/M3TuYGOeorIR6b3gnr7GElk5yFzUQIHtGCOy2rFDfWrYFfsqvbt0iALQGsyMgEilpl9t/9e3xJ5w6BVOSb22lY/ENQjVR0RQTaYaCZkVo6AfmR7SnuvN79HmamihKHzYJ/1NUZtlKg0z6n7ErJNafH9ze0Y1midxjkB7DApTCadcTTRCii8slPRrS+SQD/4dI/WGyIPpEnzSOM3L9oBhVRpEjmQz/CqBalKWeFPiw8jRnTJEWylQRC40lU1YQsMFkvtps/BrxksXoHDg8gT7hVHh2892CIX/W/a//fbMSzg2Pl7AUD5vLy3p5ny5gEyY0rXeZq0qBE8SizJf7IHOsNvSl83pN1yWUe5G9hdnC6m9suLa6Pdk6fcXA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(6041248)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148);SRVR:DM2PR0701MB1280;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0701MB1280; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1280;4:ao2A9ANFuY2030Lsajm8k0r1ZqUx2OzPYt5Ls3Xrh4WSTX2CM+W8fuimg4dx/Yq2pLHTshOnzKtidrdl4u3/k8tGJcxF9KmHGY6uhStQ9O26IvTeDAhAH1+uJl6/V+ZbM9bI/SNIJK8cNZMywumj3kxYYmH8nMEyWikg4efs7IxlGJ2q9jB5X9aPu6paXOX9xe/NyHQyImcvKa54c8Gk1HeKsn/EihdGGoefwOR7B92lJeRKq9pq/2K3dfcFi5CArXDi4hhiHKMZzQXH032mBXYWym1uJvlot0Nb68GlGI05z3G2IjLE1WYPayRczmmaQ962WEp700GwfRWX0RgJfSdGCqkEbGKiL03ESHV4x/umAa7B716SHUJ72/Pw95gAGymKHyMvEuONEqYxf34Roz1Q1Ts4h+g8kg8zPKJ+M42Be2A/bXLI052cz8eI6EnlfBlU5qjnTDvYhNPc84RnJrzatp37c1/Jx99xuN2InRkGPpyhb2jj0mWl1f/Q9l5WaBGtLfFXIp45+40AlAfLg82Oy05uucaCZJBgWdqkq5dx06vSQdXfpJU6O8CnKkAFIWxYKWk7zWfYCx/dcRuHSmFK6zVfNHzyVVugVLmPLyWzjLvf4tOW9Zz2a/6JLzqI12lZlf+RqQqm2e5/31+JaZVFZ6W4wy7+hOphhlsREPocY6spEZhPxjHy5a5pyzjLncrlF/4rwM0ThkudnUAltu+opxwTXBQLeBhjwsEiGJ9Mkn6cxARDkOOolTQ8VNJzr8921cYr0LjNtEFE8XQj8w== X-Forefront-PRVS: 0302D4F392 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(39840400002)(39450400003)(39400400002)(39410400002)(39850400002)(24454002)(6116002)(33716001)(53936002)(110136004)(38730400002)(6486002)(50466002)(83506001)(76506005)(8676002)(81166006)(4001350100001)(25786009)(23726003)(189998001)(3846002)(1076002)(4326008)(2906002)(7416002)(54906002)(42186005)(50986999)(6496005)(54356999)(76176999)(478600001)(305945005)(66066001)(6666003)(47776003)(42882006)(33646002)(7736002)(229853002)(6246003)(2950100002)(6916009)(5660300001)(9686003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR0701MB1280;H:localhost;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0701MB1280;23:FVYH8QRoh5BZNh9oJ7HQGaX4BbONJryTdExaJkW?= =?us-ascii?Q?jK89sZdLI7O2/WYLKNlrkzzSvVFRvcqdmrmIvbZoJAvgQsZmWeEjV1yPMqXI?= =?us-ascii?Q?NESZDY8K8i2pwOWdwBxN9ehp8ATAn8hHZtsamaViaIoyUAoQC1kjohZQk8+M?= =?us-ascii?Q?gbXQHW1DFYlO1HzNTSiWuqbsu44fZErk4+/vsJM53NnWdtQUiG4yNgJCg6PW?= =?us-ascii?Q?41wNUxHMW3Wsq2OsxIIEXjqQq+NGSeS4e0Gq/VcZYp/h3a06q7Of/tf//4bk?= =?us-ascii?Q?H/ZjHsFn8KFAhVBX4fjMayd1/cWws4IcTePli2P/p4HKxERCvrq6Wtg+EJpE?= =?us-ascii?Q?yrjPk3fjSl5YFr0acYSK0aspYBDnqby7WPE04xQSMqyyCiCdNWrQ7NhSe2Pw?= =?us-ascii?Q?gkVZxYHX1IlN+T449vYIqvZX3u5IAeZNWiZISofkIdhCDdzY7TslJ1ngHB3L?= =?us-ascii?Q?/0gLc6RX+QjE3FFS4KEIn52PcLVUInv6AN7jjh52TxmufMOBsHd6JMGbtYuX?= =?us-ascii?Q?YB9GVqhhWNAwVBhj9nKnC4VxT/K6P1tTz59zSUWKs/i0odBV9cEM7EVgxuCz?= =?us-ascii?Q?8pO4Kbg3BJS8jeysiCsKREOEl6h/rE4SvQlGOy0JqGm1BtaMikyL6MjxDD48?= =?us-ascii?Q?h0QRezuZjoajaKYFO1K24Ig/o72c5OSqRcTSP9MTWvnV2UcnwBV6CgNzP8rV?= =?us-ascii?Q?O5qmZrCurtflGLMGRxn3j3h3+rldCMnSlTmtSvKdsArKuf4gppwGdYHOv7Oc?= =?us-ascii?Q?Mko3wJ0uzaAxFw57mDTa/yQTeLcg9iOW1An5U4uT5WoRSvNnQkrNrmA2HmAt?= =?us-ascii?Q?6zW6NYykRDxGYmO36PxLSlOg0016x1PzwLKdYrcQrygtQnAh3bpdF0JQI0SC?= =?us-ascii?Q?6Kfvn1KLMMM+0qrz3UUViNJqvCv0Pmlo2ry9Z2O7Z4ulcyGLYMO9NKoO3+Pv?= =?us-ascii?Q?Z20f7LTkoq4fjf7qhjm7D8xy3StdFFeLUE8De1utFIvSQVn5BgeeEeo+olCL?= =?us-ascii?Q?h/mVkTYfTht7/dbUNuLr1adsF3HDCmkXn5cBeZreQQxLcsAkAlGhUWp9u0nG?= =?us-ascii?Q?PMUft8ffEf5+MniLSIZU1NJGEc5BTfTBDMLTR0uY13sYGvmnE5sfRpqiYggy?= =?us-ascii?Q?plRYcb+OKMU/1i4oOd/DorEdX+GQEmRyroliKEbJimxCFLEaPUs0807vDy+M?= =?us-ascii?Q?Qlbz7wskmzxnRg3kn3Gbq5D3l9utUhfhku/vv?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1280;6:ga5ThuMDBR2SFihDr+Sx6v8lKB9FO4c/iBOgzywttBmLEY5emuo9HuE7Ld4oOZVDlmG2K+00eYqL/OyorysaLQ1aUHtqk+biwvsKZkDmmmh6l7UK7hh54KjtbFARszU3cp9EknAs8TMCtHL4Zf3cZYxUMm9tCkYXiu6lL4kO0Oe4l0YwMFFGWXI9eIg1Se/XlZJyjn/JSHh8JoEgmAMsAaZfapTiLyYSWjZajDJmwVR2bDyo/BG4+7FOe5+amURtEvc2dPlPYa6q1lNPcPPApMW35sAQwNVPrjxkqd9gc7WmjcIq2VriZqPbrG8O8Q8QdIOlPydtBhC9leLANNX1XNPeUMsFCty/sgEXUjKf1bDd8X9zPj/dl16IAGsvk344hZoNCxfcmGdwWnE7BFOJ3bvrvgzbXkuc59BmHlduO8ZfquEtVuFiXeZHabWUD9RwT1xzSOEU2dFgbWtYNVphAQqYlLzactTzaR5cxOT3dOSdiRObFoXCkJdX4kq7l/huQpUF/DR5WYr4Drbpqe2/FQ==;5:LAZrT5RRVXSZMKit4XtXnhAV9SvSaTbXWdOcC7gCGqZb4JoA4mS1mikxGD7mgN6RnJhfqRDRLmQg3+b2EjLjk81xNYrL18jB/WsvvwTSL6A8JIE/w8dQgPNPCTXd/hpX5pKaKjkeuBmV2EWUMzJiTQ==;24:/oQHXdc1xg0tCf2KBspMV9bSvvKlNX1JPExfbdbj0k56gvRaRMWmvgeU6vjzOuSTAHK0BHGavGTKlHe4xs755ffy02A1mU1eaMAbShKuUvg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1280;7:jiWBleEqoTm8dJlabw6v2aKP4HmIrLQUgbduNWb7YGR/MxUsceOxdjn3NX4PQpNgxvfpPGyoo2oZqRw+X3YJMlgIkanoriMRgIssI9ogQoZBTiPBXXQLUrF66BQ/nEipzi868Oe3XWfmwRYmAdg2t1PLUTERQyBCF7mroY777KD5w5T9bfmK5Ha7cF4tPjiPhkuAzxUAOZS3817esE7R/eCJQCvahmvzgtcOMs/fLMJCe8FFvljjmjGzBeKh5lueltJu6XujOADYCG+y+B2+m/wlNo12cN1bkZ+FoNSm2a7xHAVjf0W3Yn1M4tLfRmb0/oy1oM35p5hS3ihDkUXTwQ== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 May 2017 18:48:41.1200 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0701MB1280 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 09, 2017 at 12:47:08PM +0800, Boqun Feng wrote: > On Wed, May 03, 2017 at 05:51:41PM +0300, Yury Norov wrote: > > From: Jan Glauber > > > > Ported from x86_64 with paravirtualization support removed. > > > > Signed-off-by: Jan Glauber > > > > Note. This patch removes protection from direct inclusion of > > arch/arm64/include/asm/spinlock_types.h. It's done because > > kernel/locking/qrwlock.c file does it thru the header > > include/asm-generic/qrwlock_types.h. Until now the only user > > of qrwlock.c was x86, and there's no such protection too. > > > > I'm not happy to remove the protection, but if it's OK for x86, > > it should be also OK for arm64. If not, I think we'd fix it > > for x86, and add the protection there too. > > > > Yury > > > > Signed-off-by: Yury Norov [...] > > +#define queued_spin_unlock queued_spin_unlock > > +/** > > + * queued_spin_unlock - release a queued spinlock > > + * @lock : Pointer to queued spinlock structure > > + * > > + * A smp_store_release() on the least-significant byte. > > + */ > > +static inline void queued_spin_unlock(struct qspinlock *lock) > > +{ > > + smp_store_release((u8 *)lock, 0); > > I think this part will cause endian issues, maybe you want something > like what we do in queued_write_lock(). > > Have you tested this on an BE environment? No. I think I have to. Thanks for the pointing it. > > Regards, > Boqun I think it's just the issue of copying from x86, and there's no any specific need to cast to u8* type on arm64. So the correct version of it would be like this, I believe: smp_store_release(&lock->val). Yury From mboxrd@z Thu Jan 1 00:00:00 1970 From: ynorov@caviumnetworks.com (Yury Norov) Date: Tue, 9 May 2017 21:48:29 +0300 Subject: [PATCH 3/3] arm64/locking: qspinlocks and qrwlocks support In-Reply-To: <20170509044708.vvwgzhvdrqyljy6s@tardis> References: <20170503145141.4966-1-ynorov@caviumnetworks.com> <20170503145141.4966-4-ynorov@caviumnetworks.com> <20170509044708.vvwgzhvdrqyljy6s@tardis> Message-ID: <20170509184829.scwjixgc2kxxxku7@yury-N73SV> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, May 09, 2017 at 12:47:08PM +0800, Boqun Feng wrote: > On Wed, May 03, 2017 at 05:51:41PM +0300, Yury Norov wrote: > > From: Jan Glauber > > > > Ported from x86_64 with paravirtualization support removed. > > > > Signed-off-by: Jan Glauber > > > > Note. This patch removes protection from direct inclusion of > > arch/arm64/include/asm/spinlock_types.h. It's done because > > kernel/locking/qrwlock.c file does it thru the header > > include/asm-generic/qrwlock_types.h. Until now the only user > > of qrwlock.c was x86, and there's no such protection too. > > > > I'm not happy to remove the protection, but if it's OK for x86, > > it should be also OK for arm64. If not, I think we'd fix it > > for x86, and add the protection there too. > > > > Yury > > > > Signed-off-by: Yury Norov [...] > > +#define queued_spin_unlock queued_spin_unlock > > +/** > > + * queued_spin_unlock - release a queued spinlock > > + * @lock : Pointer to queued spinlock structure > > + * > > + * A smp_store_release() on the least-significant byte. > > + */ > > +static inline void queued_spin_unlock(struct qspinlock *lock) > > +{ > > + smp_store_release((u8 *)lock, 0); > > I think this part will cause endian issues, maybe you want something > like what we do in queued_write_lock(). > > Have you tested this on an BE environment? No. I think I have to. Thanks for the pointing it. > > Regards, > Boqun I think it's just the issue of copying from x86, and there's no any specific need to cast to u8* type on arm64. So the correct version of it would be like this, I believe: smp_store_release(&lock->val). Yury