Re: [RFC] Prefer INTEL_INFO(dev_priv) to INTEL_INFO(dev)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/04/16 07:09, Joonas Lahtinen wrote:
On to, 2016-04-07 at 18:57 +0100, Dave Gordon wrote:
Where we have a suitable dev_priv pointer, we can use that rather than
'dev' for accessing INTEL_INFO().  This removes one level of memory
reference, decreasing code size a little and possibly making everything
a little faster. We could also do this for all the macros that implicitly
use INTEL_INFO e.g. IS_CHERRYVIEW().

If applied to all macros, sounds like the right thing to do. Although,
I would prefer to see s/dev_priv/i915/g and then i915->info.gen, i915-
info.is_cherryview etc. rather than dozens of macros.

Maybe, but not all callsites actually have a 'dev_priv' in scope at present, which is why this had to be done with Coccinelle rather than just sed.

I tried extending this to all IS_XXX() macros as well (but not as yet HAS_XXX()) and got:

 36 files changed, 741 insertions(+), 763 deletions(-)

the line count difference being due to 22 now-unused local variables deleted afterwards; the i915.ko binary shrank by about 2k - which represents quite a lot of instructions. So this isn't just a matter of style, like changing INTEL_INFO(dev)->gen with INTEL_GEN(dev), this transformation actually improves code size and presumably speed :)

It's going to cause a lot of rebasing, though. So depending on when we
apply dev_priv -> i915, might be or might not be worth the hassle now.

Regards, Joonas

The point of including the actual Cocci code in the commit message is that then anyone who has a set of not-yet-submitted changes can apply the Cocci script to their own codebase before attempting to rebase onto the new version of nightly, thus eliminating from the conflicts all those which are simply due to the patch applied to upstream.

For this reason, I'd like to recommend that anyone doing this sort of bulk transformation with Cocci or awk or just sed should /always/ include the transformation script to help those with patches in flight.

.Dave.

Coccinelle:

     @dev_priv_param@
       function FUNC;
       idexpression struct drm_device *DEV;
       identifier DEV_PRIV;
     @@
       FUNC(..., struct drm_i915_private *DEV_PRIV, ...)
       {
	<...
	INTEL_INFO
	(
     -     DEV
     +     DEV_PRIV
	)
	...>
       }

     @dev_priv_local@
       idexpression struct drm_device *DEV;
       identifier DEV_PRIV;
       expression E;
     @@
       {
	...
     (
	struct drm_i915_private *DEV_PRIV;
     |
	struct drm_i915_private *DEV_PRIV = E;
     )
	<...
	INTEL_INFO
	(
     -     DEV
     +     DEV_PRIV
	)
	...>
       }

followed by manually deleting 6 now-unused "dev" locals.

Signed-off-by: Dave Gordon <david.s.gordon@xxxxxxxxx>
---
  drivers/gpu/drm/i915/i915_debugfs.c        |  66 +++++++-------
  drivers/gpu/drm/i915/i915_dma.c            |  30 +++---
  drivers/gpu/drm/i915/i915_drv.c            |   4 +-
  drivers/gpu/drm/i915/i915_gem.c            |   6 +-
  drivers/gpu/drm/i915/i915_gem_context.c    |   2 +-
  drivers/gpu/drm/i915/i915_gem_execbuffer.c |   8 +-
  drivers/gpu/drm/i915/i915_gem_fence.c      |   8 +-
  drivers/gpu/drm/i915/i915_gem_gtt.c        |  14 +--
  drivers/gpu/drm/i915/i915_gem_stolen.c     |   6 +-
  drivers/gpu/drm/i915/i915_gpu_error.c      |  32 +++----
  drivers/gpu/drm/i915/i915_irq.c            |  36 ++++----
  drivers/gpu/drm/i915/i915_suspend.c        |  20 ++--
  drivers/gpu/drm/i915/intel_color.c         |  16 ++--
  drivers/gpu/drm/i915/intel_crt.c           |   6 +-
  drivers/gpu/drm/i915/intel_ddi.c           |   4 +-
  drivers/gpu/drm/i915/intel_display.c       | 141 ++++++++++++++---------------
  drivers/gpu/drm/i915/intel_dp.c            |  20 ++--
  drivers/gpu/drm/i915/intel_dpll_mgr.c      |   2 +-
  drivers/gpu/drm/i915/intel_fbdev.c         |   4 +-
  drivers/gpu/drm/i915/intel_lrc.c           |   2 +-
  drivers/gpu/drm/i915/intel_lvds.c          |   4 +-
  drivers/gpu/drm/i915/intel_overlay.c       |   4 +-
  drivers/gpu/drm/i915/intel_pm.c            |  50 +++++-----
  drivers/gpu/drm/i915/intel_psr.c           |   6 +-
  drivers/gpu/drm/i915/intel_ringbuffer.c    |  40 ++++----
  drivers/gpu/drm/i915/intel_sdvo.c          |   8 +-
  drivers/gpu/drm/i915/intel_tv.c            |   2 +-
  drivers/gpu/drm/i915/intel_uncore.c        |   6 +-
  28 files changed, 270 insertions(+), 277 deletions(-)

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




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux