From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm: Reduce object size of DRM_ERROR and DRM_DEBUG uses Date: Thu, 15 Mar 2018 17:05:24 +0200 Message-ID: <20180315150524.GS5453@intel.com> References: <016b5cb84cede20fd0f91ed6965421d99fd5f2ce.1520978414.git.joe@perches.com> <20180315133026.GR5453@intel.com> <1b50f5d8-97a6-2442-34bb-2782c35505fd@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1b50f5d8-97a6-2442-34bb-2782c35505fd@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rodrigo Vivi , Joe Perches List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBNYXIgMTUsIDIwMTggYXQgMDM6MDQ6NTJQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMTUtMDMtMTggb20gMTQ6MzAgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBUdWUsIE1hciAxMywgMjAxOCBhdCAwMzowMjoxNVBNIC0wNzAwLCBKb2UgUGVyY2hl cyB3cm90ZToKPiA+PiBkcm1fcHJpbnRrIGlzIHVzZWQgZm9yIGJvdGggRFJNX0VSUk9SIGFuZCBE Uk1fREVCVUcgd2l0aCB1bm5lY2Vzc2FyeQo+ID4+IGFyZ3VtZW50cyB0aGF0IGNhbiBiZSByZW1v dmVkIGJ5IGNyZWF0aW5nIHNlcGFyYXRlIGZ1bmN0aW5zLgo+ID4+Cj4gPj4gQ3JlYXRlIHNwZWNp ZmljIGZ1bmN0aW9ucyBmb3IgdGhlc2UgY2FsbHMgdG8gcmVkdWNlIHg4Ni82NCBkZWZjb25maWcK PiA+PiBzaXplIGJ5IH4yMGsuCj4gPj4KPiA+PiBNb2RpZnkgdGhlIGV4aXN0aW5nIG1hY3JvcyB0 byB1c2UgdGhlIHNwZWNpZmljIGNhbGxzLgo+ID4+Cj4gPj4gbmV3Ogo+ID4+ICQgc2l6ZSAtdCBk cml2ZXJzL2dwdS9kcm0vYnVpbHQtaW4uYSB8IHRhaWwgLTEKPiA+PiAxODc2NTYyCSAgNDQ1NDIJ ICAgIDk5NQkxOTIyMDk5CSAxZDU0MzMJKFRPVEFMUykKPiA+Pgo+ID4+IG9sZDoKPiA+PiAkIHNp emUgLXQgZHJpdmVycy9ncHUvZHJtL2J1aWx0LWluLmEgfCB0YWlsIC0xCj4gPj4gMTg5NzU2NQkg IDQ0NTQyCSAgICA5OTUJMTk0MzEwMgkgMWRhNjNlCShUT1RBTFMpCj4gPj4KPiA+PiBNaXNjZWxs YW5lYToKPiA+Pgo+ID4+IG8gaW50ZWxfZGlzcGxheSByZXF1aXJlcyBhIGNoYW5nZSB0byB1c2Ug dGhlIHNwZWNpZmljIGNhbGxzLgo+ID4gSG93IG11Y2ggd291bGQgd2UgbG9zZSBpZiB3ZSBtb3Zl IHRoZSAoZHJtX2RlYnVnJkZPTykgb3V0c2lkZSB0aGUKPiA+IGZ1bmN0aW9ucyBhZ2Fpbj8gSSdt IHNvbWV3aGF0IGNvbmNlcm5lZCBhYm91dCBhbGwgdGhlIGZ1bmN0aW9uIGNhbGwKPiA+IG92ZXJo ZWFkIHdoZW4gZGVidWdzIGFyZW4ndCBldmVuIGVuYWJsZWQuCj4gCj4gVXBzdHJlYW06Cj4gICAg dGV4dCAgICBkYXRhICAgICBic3MgICAgIGRlYyAgICAgaGV4IGZpbGVuYW1lCj4gIDM3NzE0MyAg ICA1Njg5ICAgIDQzNTIgIDM4NzE4NCAgIDVlODcwIGRyaXZlcnMvZ3B1L2RybS9kcm0ua28KPiAK PiBXaXRoIHRoaXMgcGF0Y2g6Cj4gIDM3MzgzMSAgICA1Njg5ICAgIDQzNTIgIDM4Mzg3MiAgIDVk YjgwIGRyaXZlcnMvZ3B1L2RybS9kcm0ua28KPiAKPiBNb3ZpbmcgdGhlIGlmIG91dHNpZGUgKGJl bG93KToKPiAgMzc3NjI5ICAgIDU2ODkgICAgNDM1MiAgMzg3NjcwICAgNWVhNTYgZHJpdmVycy9n cHUvZHJtL2RybS5rbwo+IAo+IEJ5ZSBzYXZpbmdzLi4KPiAKPiBJIGRvbid0IHRoaW5rIHRoZXJl IGFyZSBhbnkgcGxhY2VzIGluIHdoaWNoIHRoZSBkZWJ1ZyBvdXRwdXQgaXMgcGVyZm9ybWFuY2Ug c2Vuc2l0aXZlLAo+IHNvIEknbSBvayB3aXRoIG5vdCBpbmxpbmluZy4KCk5vdCBwZXJmb3JtYW5j ZSBzZW5zaXRpdmUgYXMgc3VjaCBwZXJoYXBzLiBCdXQgcG9pbnRsZXNzbHkgd2FzdGluZyBjcHUK Y3ljbGVzIGZvciBub3AgZnVuY3Rpb24gY2FsbHMgaXNuJ3QgcGFydGljdWxhcmx5IGdyZWF0LiBX b3VsZCBiZSBuaWNlCnRvIGFjdHVhbGx5IG1lYXN1cmUgaG93IG11Y2ggb3ZlcmhlYWQgdGhlcmUg aXMgb24gc29tZSB3ZWFrZXIgc3lzdGVtcy4KSUlSQyBvbGRlciBBdG9tcyB3ZXJlIHBhcnRpY3Vs YXJseSBiYWQgYXQgdGhpcyBzdHVmZi4KCj4gLS0tCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcHJpbnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbnQuYwo+IGluZGV4IDc5 YWJmNmQ1YjRkYi4uOTI4ODIyNDAzYTU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fcHJpbnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbnQuYwo+IEBAIC04OSwx NCArODksMTEgQEAgdm9pZCBkcm1fZGV2X3ByaW50ayhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYs IGNvbnN0IGNoYXIgKmxldmVsLAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2Rldl9wcmludGsp Owo+ICAKPiAtdm9pZCBkcm1fZGJnKHVuc2lnbmVkIGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAq Zm9ybWF0LCAuLi4pCj4gK3ZvaWQgX19kcm1fZGJnKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQo+ ICB7Cj4gIAlzdHJ1Y3QgdmFfZm9ybWF0IHZhZjsKPiAgCXZhX2xpc3QgYXJnczsKPiAgCj4gLQlp ZiAoIShkcm1fZGVidWcgJiBjYXRlZ29yeSkpCj4gLQkJcmV0dXJuOwo+IC0KPiAgCXZhX3N0YXJ0 KGFyZ3MsIGZvcm1hdCk7Cj4gIAl2YWYuZm10ID0gZm9ybWF0Owo+ICAJdmFmLnZhID0gJmFyZ3M7 Cj4gQEAgLTEwNiw3ICsxMDMsNyBAQCB2b2lkIGRybV9kYmcodW5zaWduZWQgaW50IGNhdGVnb3J5 LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKPiAgCj4gIAl2YV9lbmQoYXJncyk7Cj4gIH0KPiAt RVhQT1JUX1NZTUJPTChkcm1fZGJnKTsKPiArRVhQT1JUX1NZTUJPTChfX2RybV9kYmcpOwo+ICAK PiAgdm9pZCBkcm1fZXJyKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQo+ICB7Cj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIGIvaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgKPiBp bmRleCAzYTQwYzVhM2E1ZmEuLjJhMTQ1Yjk3YmRmYyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2Ry bS9kcm1fcHJpbnQuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9wcmludC5oCj4gQEAgLTIwMCw4 ICsyMDAsMTcgQEAgX19wcmludGYoNiwgNykKPiAgdm9pZCBkcm1fZGV2X3ByaW50ayhjb25zdCBz dHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmxldmVsLAo+ICAJCSAgICB1bnNpZ25lZCBp bnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCj4gIAkJICAgIGNvbnN0IGNo YXIgKnByZWZpeCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwo+IC1fX3ByaW50ZigyLCAzKQo+ IC12b2lkIGRybV9kYmcodW5zaWduZWQgaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpmb3JtYXQs IC4uLik7Cj4gKwo+ICtfX3ByaW50ZigxLCAyKQo+ICt2b2lkIF9fZHJtX2RiZyhjb25zdCBjaGFy ICpmb3JtYXQsIC4uLik7Cj4gKwo+ICsKPiArI2RlZmluZSBkcm1fZGJnKGNhdGVnb3J5LCBmb3Jt YXQsIC4uLikgXAo+ICsJZG8gewlcCj4gKwkJaWYgKGRybV9kZWJ1ZyAmIGNhdGVnb3J5KQlcCj4g KwkJCV9fZHJtX2RiZyhmb3JtYXQsICMjIF9fVkFfQVJHU19fKTsJXAo+ICsJfSB3aGlsZSAoMCkK PiArCj4gIF9fcHJpbnRmKDEsIDIpCj4gIHZvaWQgZHJtX2Vycihjb25zdCBjaGFyICpmb3JtYXQs IC4uLik7Cj4gIAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752725AbeCOPFl (ORCPT ); Thu, 15 Mar 2018 11:05:41 -0400 Received: from mga09.intel.com ([134.134.136.24]:1583 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752595AbeCOPFk (ORCPT ); Thu, 15 Mar 2018 11:05:40 -0400 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,311,1517904000"; d="scan'208";a="39177486" Date: Thu, 15 Mar 2018 17:05:24 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maarten Lankhorst Cc: Joe Perches , Gustavo Padovan , Sean Paul , David Airlie , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: Re: [PATCH] drm: Reduce object size of DRM_ERROR and DRM_DEBUG uses Message-ID: <20180315150524.GS5453@intel.com> References: <016b5cb84cede20fd0f91ed6965421d99fd5f2ce.1520978414.git.joe@perches.com> <20180315133026.GR5453@intel.com> <1b50f5d8-97a6-2442-34bb-2782c35505fd@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1b50f5d8-97a6-2442-34bb-2782c35505fd@linux.intel.com> User-Agent: Mutt/1.7.2 (2016-11-26) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 15, 2018 at 03:04:52PM +0100, Maarten Lankhorst wrote: > Op 15-03-18 om 14:30 schreef Ville Syrjälä: > > On Tue, Mar 13, 2018 at 03:02:15PM -0700, Joe Perches wrote: > >> drm_printk is used for both DRM_ERROR and DRM_DEBUG with unnecessary > >> arguments that can be removed by creating separate functins. > >> > >> Create specific functions for these calls to reduce x86/64 defconfig > >> size by ~20k. > >> > >> Modify the existing macros to use the specific calls. > >> > >> new: > >> $ size -t drivers/gpu/drm/built-in.a | tail -1 > >> 1876562 44542 995 1922099 1d5433 (TOTALS) > >> > >> old: > >> $ size -t drivers/gpu/drm/built-in.a | tail -1 > >> 1897565 44542 995 1943102 1da63e (TOTALS) > >> > >> Miscellanea: > >> > >> o intel_display requires a change to use the specific calls. > > How much would we lose if we move the (drm_debug&FOO) outside the > > functions again? I'm somewhat concerned about all the function call > > overhead when debugs aren't even enabled. > > Upstream: > text data bss dec hex filename > 377143 5689 4352 387184 5e870 drivers/gpu/drm/drm.ko > > With this patch: > 373831 5689 4352 383872 5db80 drivers/gpu/drm/drm.ko > > Moving the if outside (below): > 377629 5689 4352 387670 5ea56 drivers/gpu/drm/drm.ko > > Bye savings.. > > I don't think there are any places in which the debug output is performance sensitive, > so I'm ok with not inlining. Not performance sensitive as such perhaps. But pointlessly wasting cpu cycles for nop function calls isn't particularly great. Would be nice to actually measure how much overhead there is on some weaker systems. IIRC older Atoms were particularly bad at this stuff. > --- > diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c > index 79abf6d5b4db..928822403a59 100644 > --- a/drivers/gpu/drm/drm_print.c > +++ b/drivers/gpu/drm/drm_print.c > @@ -89,14 +89,11 @@ void drm_dev_printk(const struct device *dev, const char *level, > } > EXPORT_SYMBOL(drm_dev_printk); > > -void drm_dbg(unsigned int category, const char *format, ...) > +void __drm_dbg(const char *format, ...) > { > struct va_format vaf; > va_list args; > > - if (!(drm_debug & category)) > - return; > - > va_start(args, format); > vaf.fmt = format; > vaf.va = &args; > @@ -106,7 +103,7 @@ void drm_dbg(unsigned int category, const char *format, ...) > > va_end(args); > } > -EXPORT_SYMBOL(drm_dbg); > +EXPORT_SYMBOL(__drm_dbg); > > void drm_err(const char *format, ...) > { > diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h > index 3a40c5a3a5fa..2a145b97bdfc 100644 > --- a/include/drm/drm_print.h > +++ b/include/drm/drm_print.h > @@ -200,8 +200,17 @@ __printf(6, 7) > void drm_dev_printk(const struct device *dev, const char *level, > unsigned int category, const char *function_name, > const char *prefix, const char *format, ...); > -__printf(2, 3) > -void drm_dbg(unsigned int category, const char *format, ...); > + > +__printf(1, 2) > +void __drm_dbg(const char *format, ...); > + > + > +#define drm_dbg(category, format, ...) \ > + do { \ > + if (drm_debug & category) \ > + __drm_dbg(format, ## __VA_ARGS__); \ > + } while (0) > + > __printf(1, 2) > void drm_err(const char *format, ...); > -- Ville Syrjälä Intel OTC