From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934467AbbIVS7O (ORCPT ); Tue, 22 Sep 2015 14:59:14 -0400 Received: from mail-bn1on0134.outbound.protection.outlook.com ([157.56.110.134]:3104 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934418AbbIVS7J (ORCPT ); Tue, 22 Sep 2015 14:59:09 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=scottwood@freescale.com; Message-ID: <1442948339.19102.270.camel@freescale.com> Subject: Re: [PATCH v2 22/25] powerpc32: move xxxxx_dcache_range() functions inline From: Scott Wood To: Joakim Tjernlund CC: "christophe.leroy@c-s.fr" , "paulus@samba.org" , "mpe@ellerman.id.au" , "benh@kernel.crashing.org" , "linuxppc-dev@lists.ozlabs.org" , "linux-kernel@vger.kernel.org" Date: Tue, 22 Sep 2015 13:58:59 -0500 In-Reply-To: <1442945547.29498.50.camel@transmode.se> References: <1442945547.29498.50.camel@transmode.se> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.16.0-fta1 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Originating-IP: [2601:448:8100:f9f:d59:7025:7bba:8c10] X-ClientProxiedBy: BLUPR11CA0052.namprd11.prod.outlook.com (10.141.30.20) To CY1PR03MB1485.namprd03.prod.outlook.com (25.163.17.158) X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB1485;2:mPtpIlZ+7dTx4QtIkpWSB25Imt65TPJZ+iVTPLCLPSbqPksOjf3TgDAKa1Zb5h3G79Hc/Bx7yTWbGS9hg0+EAuajtaYd977VIGVeAKy2dMYLw00OMXCTWKmsYB4GuZ9onWyNauouoRY00mNBF77BD5PcGSTN8c1XUeuQx5L6mNM=;3:CPKwZNPELdV7Jx0f7uEm9OVCDdDdv5ABjkgmmAa1NK+FOSxsmFJSGLO2GFCtSGV9FKlkGov5MgmYg8eVX1L8ZrGHKI5iLb4dzeD8Ot2O/O81U2cEu9tVFBhk3GaYDkkJNPUE4uTus7lOuUgiKRFpwQ==;25:SQDhVmXIxHNfG6lRujfO5yLTqEsI6vIFN+4NX2j8+qNzJszGF55pVQifiqmvRQr33TE/xLMP0BF9EKo/6HnkBMuJRuaT25gO3FiNXTCWn4O21+c5qZ9Kc4Dsms28Z10J6HWLUsZ5iDniS4gpfv41nfIPr2ACxP9hXgyG6siqd9mEZ4yKNRKxwiwTScLuyhVnMbeK+ALcjrCD0R6cMCFAjuQQdLvgm1vzHhrvtBXEiY9yC73BodZQvXzhZ/rBMADdaAZ0JZlWRndXuDEd/5nAAw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1485; X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB1485;20:t3P5FslYu9qgtNj7l/mDx7vh7miIQ/YEaSc+pUVG6eJzNRab0zd4gsoZj91mexc2Ab268FV7udZ0Szdzg0DWsmjJ0MK8amUri44+rvAwppzNEECPiviIIIFiOTP/k2aDSpyE29xX2kGj7D2Fs+CE5olVcK88t1vbpITg6ziFEcUfQ6zqHUAoxth9baDZpls75Jr+rbfP29dbsyqg2yFDGWELB31NFDfcJBl3idHQOHprEu1uu0fxbhE2NOh41zgPLyXuonJDYyjWYtr7b+JkexHhpajYzlaeBcg4Qec6NPJHwiHU+bZ8YwW5nAjrRxlt+tyaxotTA2VQ+Xsz7nO9rn27T/5Ie0zQUmdz140N9gY/3sfXS+aZr9AMgTHmtjGVrKucymgvwzPC32wCLEyuy5psKKUb/WEeTk6rOJvM8g3Yi5xGoGcZOV7C6qt9LgpiBruE3qV7qlVE+1L3VS3UeqUS9a+ADSVkx2Z3nJwDceTa6GlyOpmy5bC5ytjPwULx;4:Cs1teiJqV94jgdIdDFLIpasEY0CrWGslM9UqqYh7CxkuIZW8QLS4AW4TV9THAPzwQBMP3Are7uZqReJgmp9wjUqfBhwI/On4UffU+cKF87t0iXwI4i7fuvRZZ5uGJA3Ulc4Jp3N3maUmwEefRIAIecqScE40E4YEu7rJEXPPwZw5Mb0ZM6MvsL/Ld5aYavlzqjqmPka96G7Qal0xS9SRFH5ZFw+/yUiW+y+rO73SDC1JR4oxwA4cLzSaFu47uF3j8SbrZJhBo47dpry+XShvCr6JZypWXmJ0FUpUbddtfOZgAG0ic3LeZgv4uRhXk67XZ5tx70ACi7w9rr6dqnDKelap4tcYHzqfUwpNAXEO2PE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:CY1PR03MB1485;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1485; X-Forefront-PRVS: 0707248B64 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(199003)(189002)(24454002)(377424004)(46102003)(92566002)(103116003)(122386002)(77096005)(86362001)(50986999)(33646002)(40100003)(19580405001)(50226001)(76176999)(105586002)(68736005)(5001830100001)(101416001)(81156007)(97736004)(47776003)(64706001)(2950100001)(5007970100001)(87976001)(36756003)(50466002)(4001540100001)(23676002)(5001860100001)(5001920100001)(106356001)(5004730100002)(5001960100002)(5820100001)(110136002)(189998001)(62966003)(77156002)(42186005)(99106002)(3826002)(5001840100002);DIR:OUT;SFP:1102;SCL:1;SRVR:CY1PR03MB1485;H:[IPv6:2601:448:8100:f9f:d59:7025:7bba:8c10];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjAzTUIxNDg1OzIzOm92SzhaSElCUVRzcHRSTmJQOHNhWTZyUDZs?= =?utf-8?B?SDRlM1hNYU9MeDJBTzRDTWNjdmR0M2c1MWZ3N1lVQlp6WTNWbHVITjhWNXJK?= =?utf-8?B?SHNCNVMrNDZRMWRZUi8zZko1R09NN1FLUnc2U2U2Q3hndHJ2bFl0ekxEcTJ1?= =?utf-8?B?dHJhb1JXMXNITUJNVUI4Z2JJUW1iUzdjb29YMlVpQmtoam93aS9PL2d1VTZJ?= =?utf-8?B?Z3dSQmdFNU9iTWZBY0R6bGhENTJDeVNMdXc1b3Z2NmdteG0rUHgxUk42RjdE?= =?utf-8?B?RCs3NzI1em5wVXZZcU1KTGlRRmxtZUxDOUc4V2VzWnR1VkFueGVHN3pZZW9K?= =?utf-8?B?QVpKQ1lnYnVmc0N1dHNpdWhtbjJVcGJwWXBPcFV2YWtSaU1OQ1VKS01WQ0Ux?= =?utf-8?B?TEltQnRhUi8wZHgzaFVvbzloRm96T1B1ZU4wYVhXMmxMSFJJSDNzN2Zhbkhz?= =?utf-8?B?NGxZWFNzNHJMYWJNbWdTUEc4WGg5ZnQyYlFUc3A1akdWbFk3V29BVW1RaFVO?= =?utf-8?B?RTdvalRCQWhPMm1hd0Z3ZzRwaUlqekJENlBJKzlmNlRZWFVEa25QbkR5Y2Ev?= =?utf-8?B?NWQycUdDQUJmVVJXTGxxWnRoM2ZMeWVQdjB6RnFDbytFWnVqL1dLd0l5cEpu?= =?utf-8?B?WmRhS0NTTUlMSXc3RUVlM3dVQlZFNGV3YjNqY001K2tvOHdZcXhvZzBMWXN1?= =?utf-8?B?TUtZbDVrUTByTnRCYjBwaFN0N1Z4N3lyUVFPU09IaDlnK3hrbHhjR1FOaGpl?= =?utf-8?B?T1QwVTdxU1ZUMEVPdm1rODl2VEgvWWRVVTRvSW80QXJmbmgyOERLZVBURE9p?= =?utf-8?B?VnI3K3BiZTRTM05zMzB1bzlvQVExOTZPTmx6ZHNBVlZPODR3djV1ZnZlTXM5?= =?utf-8?B?ZmltQm1IUWdiUUNLNTlObHAxenB5MGkvMHBnOWNwRzJIUTVnL0RNQ3F6Vm5O?= =?utf-8?B?cFRWUjljY1MvOE5Ud1BHZ3UrZHNxSVJZZjVaenhkOHlINko0dWdBenhRL0g0?= =?utf-8?B?Q1Vwcm5WdkNsc1AzTnV1VUFSMWx4WS9BM2c2QlZvWHJVZTEwcEEvTUtycEln?= =?utf-8?B?S0laYXdrMy9xNlBIZ1FMMWRkSmxlWVFnejQ2cVBYSXZwa2xNRjl5SlVyRkE1?= =?utf-8?B?cWhQSzdJMUJLalZ2U05kRlA5L1dIdEh3UnF6TklmY0NIQ3FadE1iY2FXQ1d5?= =?utf-8?B?cjRZR1NTbFA0cDVTLy80RDNFdXlJY2pkcHVKMXBqd2l4SWdkemdFeWVaK2Y0?= =?utf-8?B?Vmd1VVRScm8remNKV1VwZmJ3OS9TNVE3cmhXTys1akxReGNqbW11RzhxcjJ2?= =?utf-8?B?TUE4ZkpDR0E2ZXp6RzAyZEdEcVVqQ3hUcFN5SVZXVzZNUGdkNG9rNDNwZEJr?= =?utf-8?B?Y3ZIeGllaGIzTXhrWGQ1VVFqYVpVKzRPYmZiSFFtUHgyQVk3OFlpZVRSeEkv?= =?utf-8?B?Tm9oMWNsUHNEaFY4cjBtdVVvTU5mb0huMEpIRThNc0FPOStFZUVjTkw1emxQ?= =?utf-8?B?b3c0MTh2SHVoQldQT2dsaHRwRG94VEFpU2sxUDFvOHM0cDMxVmpkVktMbmdv?= =?utf-8?B?SXFQT2NrMHdyT3hXSDltdWpVZ25hSjI4SHN5MzRNc0lsWTJCYUNoem1VWGhN?= =?utf-8?B?NGNIVVVWM21iNVg3cHIyRjlzenVjQXRIWlU4a2dwUGpCWERQUWo3WDZYeENX?= =?utf-8?Q?1c8HojH/idamtZ/CMQ=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB1485;5:FXuzRT2q0tWc0HiEPupW6eBIfMTyC0L5p+XoZ/F7dIT+a8VOOrLjLE0Ee5Al5wLvtM6yOhxu5bEpLDIQeSIf7y+bbFXphO+DMcmWd88MktSzJJqZZWKQG5bSicR5N+a9THAML5O2hGUvZKMMpaEt+w==;24:vZJSi50pBTk4Ko+TD9J6mAhJeVFgvQnU+l2OndRvb7J6twW/93E8C+WoxfTNPjr2jXpcjgC1VlmkV6X+7JB9voxn3Dy38PmQKJ2UIbCBCko=;20:K/0+/jqujTqU4J3skNfIBEbH2RZfh1HKcMaprqSuwT+hCF+CYiYkQ3TnNZssgTL7QNmJjw9bfvqQvpggU3+E7w== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2015 18:59:05.2914 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1485 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2015-09-22 at 18:12 +0000, Joakim Tjernlund wrote: > On Tue, 2015-09-22 at 18:51 +0200, Christophe Leroy wrote: > > flush/clean/invalidate _dcache_range() functions are all very > > similar and are quite short. They are mainly used in __dma_sync() > > perf_event locate them in the top 3 consumming functions during > > heavy ethernet activity > > > > They are good candidate for inlining, as __dma_sync() does > > almost nothing but calling them > > > > Signed-off-by: Christophe Leroy > > --- > > New in v2 > > > > arch/powerpc/include/asm/cacheflush.h | 55 +++++++++++++++++++++++++++-- > > arch/powerpc/kernel/misc_32.S | 65 ------------------------------ > > ----- > > arch/powerpc/kernel/ppc_ksyms.c | 2 ++ > > 3 files changed, 54 insertions(+), 68 deletions(-) > > > > diff --git a/arch/powerpc/include/asm/cacheflush.h > > b/arch/powerpc/include/asm/cacheflush.h > > index 6229e6b..6169604 100644 > > --- a/arch/powerpc/include/asm/cacheflush.h > > +++ b/arch/powerpc/include/asm/cacheflush.h > > @@ -47,12 +47,61 @@ static inline void > > __flush_dcache_icache_phys(unsigned long physaddr) > > } > > #endif > > > > -extern void flush_dcache_range(unsigned long start, unsigned long stop); > > #ifdef CONFIG_PPC32 > > -extern void clean_dcache_range(unsigned long start, unsigned long stop); > > -extern void invalidate_dcache_range(unsigned long start, unsigned long > > stop); > > +/* > > + * Write any modified data cache blocks out to memory and invalidate > > them. > > + * Does not invalidate the corresponding instruction cache blocks. > > + */ > > +static inline void flush_dcache_range(unsigned long start, unsigned long > > stop) > > +{ > > + void *addr = (void *)(start & ~(L1_CACHE_BYTES - 1)); > > + unsigned int size = stop - (unsigned long)addr + (L1_CACHE_BYTES - 1); > > + unsigned int i; > > + > > + for (i = 0; i < size >> L1_CACHE_SHIFT; i++, addr += L1_CACHE_BYTES) > > + dcbf(addr); > > + if (i) > > + mb(); /* sync */ > > +} > > This feels optimized for the uncommon case when there is no invalidation. If you mean the "if (i)", yes, that looks odd. > I THINK it would be better to bail early Bail under what conditions? > and use do { .. } while(--i); instead. GCC knows how to optimize loops. Please don't make them less readable. -Scott