• Denys Vlasenko's avatar
    radeonfb: Deinline large functions · 08bfb453
    Denys Vlasenko authored
    With this .config: http://busybox.net/~vda/kernel_config,
    after uninlining these functions have sizes and callsite counts
    as follows:
    
    __OUTPLLP: 61 bytes, 12 callsites
    __INPLL:   79 bytes, 150 callsites
    __OUTPLL:  82 bytes, 138 callsites
    _OUTREGP: 101 bytes, 8 callsites
    _radeon_msleep:      66 bytes, 18 callsites
    _radeon_fifo_wait:   83 bytes, 24 callsites
    _radeon_engine_idle: 92 bytes, 10 callsites
    radeon_engine_flush: 105 bytes, 2 callsites
    radeon_pll_errata_after_index_slow: 31 bytes, 11 callsites
    radeon_pll_errata_after_data_slow:  91 bytes, 9 callsites
    
    radeon_pll_errata_after_FOO functions are split into two parts:
    the inlined part which checks corresponding rinfo->errata bit,
    and out-of-line part which performs workaround magic per se.
    
    Reduction in code size is about 49,500 bytes:
    
        text     data      bss       dec     hex filename
    85789648 22294616 20627456 128711720 7abfc28 vmlinux.before
    85740176 22294680 20627456 128662312 7ab3b28 vmlinux
    Signed-off-by: default avatarDenys Vlasenko <dvlasenk@redhat.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: Richard Purdie <rpurdie@rpsys.net>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Alex Deucher <alexdeucher@gmail.com>
    Cc: Ben Skeggs <bskeggs@redhat.com>
    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-fbdev@vger.kernel.org
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    08bfb453
radeon_base.c 77.7 KB