public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH 00/22] .rodata diet
@ 2016-10-05 12:33 Tvrtko Ursulin
  2016-10-05 12:33 ` [PATCH 01/22] drm/i915: Shrink cxsr_latency_table Tvrtko Ursulin
                   ` (24 more replies)
  0 siblings, 25 replies; 45+ messages in thread
From: Tvrtko Ursulin @ 2016-10-05 12:33 UTC (permalink / raw)
  To: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Dynamic typing in __I915__ (INTEL_INFO) has and unfortuante consequence that
for every time it is called under a WARN it generates a very verbose string
placed into the appropriate .rodata section.

Each instance of that can can several hundred bytes to the binary. One example
of such strings found in the binary, not word-wrapped is:

WARN_ON(!((&({ struct drm_i915_private *__p; if (__builtin_types_compatible_p(typeof(*dev_priv), struct drm_i915_private)) __p = (struct drm_i915_private *)dev_priv; else if (__builtin_types_compatible_p(typeof(*dev_priv), struct drm_device)) __p = to_i915((struct drm_device *)dev_priv); else do { bool __cond = !(!(1)); extern void __compiletime_assert_1912(void) __attribute__((error("BUILD_BUG failed"))); if (__cond) __compiletime_assert_1912(); do { } while (0); } while (0); __p; })->info)->has_ddi) && (control & (0xffff << 16)) != (0xabcd << 16))

If we gradually remove dynamic typing abilities from individual macros we can
start bringing the size of the binary down.

For example after this series:

   text    data     bss     dec     hex filename
1067727   23256     576 1091559  10a7e7 i915.ko.nightly
1038202   23256     576 1062034  103492 i915.ko.diet

Which is a ~29KiB saving.

This is disruptive of course, but perhaps it is time to bite the bullet since we
now have a situation that even new platforms like Kabylake are adding code which
uses the wrong thing in those macros (dev instead of dev_priv).

The way I have done it here makes it impossible to use the converted macros in
a wrong way going forward.

P.S. Series starts with three diffrent type of .rodata shrinkage patches. I was
just lazy to split that up.

Tvrtko Ursulin (22):
  drm/i915: Shrink cxsr_latency_table
  drm/i915: Shrink sdvo_cmd_names
  drm/i915: Shrink per-platform watermark configuration
  drm/i915: Make HAS_DDI and HAS_PCH_LPT_LP only take dev_priv
  drm/i915: Make INTEL_PCH_TYPE & co only take dev_priv
  drm/i915: Make HAS_GMCH_DISPLAY only take dev_priv
  drm/i915: Make HAS_RUNTIME_PM only take dev_priv
  drm/i915: Do not use INTEL_INFO(dev_priv)->ring_mask inside WARNs
  drm/i915: Make IS_GEN-range macro only take dev_priv
  drm/i915: Make INTEL_DEVID only take dev_priv
  drm/i915: Make IS_IVYBRIDGE only take dev_priv
  drm/i915: Make IS_BROADWELL only take dev_priv
  drm/i915: Make IS_HASWELL only take dev_priv
  drm/i915: Make IS_KABYLAKE only take dev_priv
  drm/i915: Make IS_SKYLAKE only take dev_priv
  drm/i915: Make IS_BROXTON only take dev_priv
  drm/i915: Make HAS_L3_DPF only take dev_priv
  drm/i915: Make IS_G4X only take dev_priv
  drm/i915: Make IS_CHERRYVIEW only take dev_priv
  drm/i915: Make IS_VALLEYVIEW only take dev_priv
  drm/i915: Make INTEL_GEN only take dev_priv
  drm/i915: Make IS_GEN macros only take dev_priv

 drivers/gpu/drm/i915/i915_debugfs.c          |   4 +-
 drivers/gpu/drm/i915/i915_drv.c              |  63 ++--
 drivers/gpu/drm/i915/i915_drv.h              | 198 ++++++-------
 drivers/gpu/drm/i915/i915_gem.c              |  55 ++--
 drivers/gpu/drm/i915/i915_gem_context.c      |   2 +-
 drivers/gpu/drm/i915/i915_gem_execbuffer.c   |   4 +-
 drivers/gpu/drm/i915/i915_gem_fence.c        |  11 +-
 drivers/gpu/drm/i915/i915_gem_gtt.c          |  60 ++--
 drivers/gpu/drm/i915/i915_gem_render_state.c |   6 +-
 drivers/gpu/drm/i915/i915_gem_stolen.c       |  17 +-
 drivers/gpu/drm/i915/i915_gem_tiling.c       |   7 +-
 drivers/gpu/drm/i915/i915_gpu_error.c        |  18 +-
 drivers/gpu/drm/i915/i915_irq.c              |  34 +--
 drivers/gpu/drm/i915/i915_reg.h              |   4 +-
 drivers/gpu/drm/i915/i915_suspend.c          |   8 +-
 drivers/gpu/drm/i915/intel_audio.c           |   6 +-
 drivers/gpu/drm/i915/intel_color.c           |  16 +-
 drivers/gpu/drm/i915/intel_crt.c             |  53 ++--
 drivers/gpu/drm/i915/intel_ddi.c             |  22 +-
 drivers/gpu/drm/i915/intel_display.c         | 416 ++++++++++++++-------------
 drivers/gpu/drm/i915/intel_dp.c              | 165 +++++------
 drivers/gpu/drm/i915/intel_dpll_mgr.c        |  10 +-
 drivers/gpu/drm/i915/intel_drv.h             |  28 +-
 drivers/gpu/drm/i915/intel_dsi.c             |  37 ++-
 drivers/gpu/drm/i915/intel_dsi_pll.c         |  26 +-
 drivers/gpu/drm/i915/intel_engine_cs.c       |   7 +-
 drivers/gpu/drm/i915/intel_fifo_underrun.c   |   8 +-
 drivers/gpu/drm/i915/intel_guc_loader.c      |  15 +-
 drivers/gpu/drm/i915/intel_hdmi.c            |  58 ++--
 drivers/gpu/drm/i915/intel_i2c.c             |   9 +-
 drivers/gpu/drm/i915/intel_lvds.c            |  29 +-
 drivers/gpu/drm/i915/intel_pm.c              | 166 +++++------
 drivers/gpu/drm/i915/intel_psr.c             |  22 +-
 drivers/gpu/drm/i915/intel_runtime_pm.c      |  15 +-
 drivers/gpu/drm/i915/intel_sdvo.c            |  25 +-
 drivers/gpu/drm/i915/intel_sprite.c          |  30 +-
 drivers/gpu/drm/i915/intel_tv.c              |   4 +-
 37 files changed, 851 insertions(+), 807 deletions(-)

-- 
2.7.4

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2016-10-13 14:03 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-05 12:33 [PATCH 00/22] .rodata diet Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 01/22] drm/i915: Shrink cxsr_latency_table Tvrtko Ursulin
2016-10-05 17:01   ` Ville Syrjälä
2016-10-06  7:35     ` Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 02/22] drm/i915: Shrink sdvo_cmd_names Tvrtko Ursulin
2016-10-13 14:03   ` Daniel Vetter
2016-10-05 12:33 ` [PATCH 03/22] drm/i915: Shrink per-platform watermark configuration Tvrtko Ursulin
2016-10-05 15:07   ` Joonas Lahtinen
2016-10-05 16:50     ` Tvrtko Ursulin
2016-10-05 16:53       ` Tvrtko Ursulin
2016-10-06  6:58         ` Joonas Lahtinen
2016-10-06  7:37           ` Tvrtko Ursulin
2016-10-07  7:09             ` Joonas Lahtinen
2016-10-05 17:11   ` Ville Syrjälä
2016-10-06 16:38     ` Tvrtko Ursulin
2016-10-06 16:50       ` Ville Syrjälä
2016-10-05 12:33 ` [PATCH 04/22] drm/i915: Make HAS_DDI and HAS_PCH_LPT_LP only take dev_priv Tvrtko Ursulin
2016-10-05 17:16   ` Ville Syrjälä
2016-10-06  7:39     ` Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 05/22] drm/i915: Make INTEL_PCH_TYPE & co " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 06/22] drm/i915: Make HAS_GMCH_DISPLAY " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 07/22] drm/i915: Make HAS_RUNTIME_PM " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 08/22] drm/i915: Do not use INTEL_INFO(dev_priv)->ring_mask inside WARNs Tvrtko Ursulin
2016-10-05 14:01   ` Joonas Lahtinen
2016-10-05 12:33 ` [PATCH 09/22] drm/i915: Make IS_GEN-range macro only take dev_priv Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 10/22] drm/i915: Make INTEL_DEVID " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 11/22] drm/i915: Make IS_IVYBRIDGE " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 12/22] drm/i915: Make IS_BROADWELL " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 13/22] drm/i915: Make IS_HASWELL " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 14/22] drm/i915: Make IS_KABYLAKE " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 15/22] drm/i915: Make IS_SKYLAKE " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 16/22] drm/i915: Make IS_BROXTON " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 17/22] drm/i915: Make HAS_L3_DPF " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 18/22] drm/i915: Make IS_G4X " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 19/22] drm/i915: Make IS_CHERRYVIEW " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 20/22] drm/i915: Make IS_VALLEYVIEW " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 21/22] drm/i915: Make INTEL_GEN " Tvrtko Ursulin
2016-10-05 12:33 ` [PATCH 22/22] drm/i915: Make IS_GEN macros " Tvrtko Ursulin
2016-10-05 13:01 ` [PATCH 00/22] .rodata diet Jani Nikula
2016-10-05 13:39   ` Tvrtko Ursulin
2016-10-05 13:54     ` Chris Wilson
2016-10-11 13:06   ` Daniel Vetter
2016-10-05 14:49 ` ✗ Fi.CI.BAT: warning for " Patchwork
2016-10-11 12:17 ` [PATCH 00/22] " David Weinehall
2016-10-11 13:15   ` Tvrtko Ursulin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox