Re: [PATCH 3/4] drm/i915: Store platform_mask inside the static device info

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

 



Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes:

> Rather than deriving the platform_mask from the
> intel_device_static_info->platform at runtime, prefill it in the static
> data.
>
>  baseline.ko drivers/gpu/drm/i915/i915.ko
> add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-20 (-20)
> Function                                     old     new   delta
> i915_driver_load                            5027    5007     -20
> Total: Before=1331200, After=1331180, chg -0.00%
>
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/i915_drv.c |  2 --
>  drivers/gpu/drm/i915/i915_pci.c | 69 ++++++++++++++++++++++-------------------
>  2 files changed, 37 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 90f4adbbff28..a81be8506797 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -899,8 +899,6 @@ static int i915_driver_init_early(struct drm_i915_private *dev_priv,
>  
>  	BUILD_BUG_ON(INTEL_MAX_PLATFORMS >
>  		     sizeof(device_info->platform_mask) * BITS_PER_BYTE);
> -	device_info->platform_mask = BIT(device_info->platform);
> -
>  	BUG_ON(device_info->gen > sizeof(device_info->gen_mask) * BITS_PER_BYTE);
>  	spin_lock_init(&dev_priv->irq_lock);
>  	spin_lock_init(&dev_priv->gpu_error.lock);
> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
> index 364d3b41f816..a10404686710 100644
> --- a/drivers/gpu/drm/i915/i915_pci.c
> +++ b/drivers/gpu/drm/i915/i915_pci.c
> @@ -30,6 +30,7 @@
>  #include "i915_selftest.h"
>  
>  #define GEN(x) .gen = (x), .gen_mask = BIT((x) - 1)
> +#define PLATFORM(x) .platform = (x), .platform_mask = BIT(x)
>  
>  #define GEN_DEFAULT_PIPEOFFSETS \
>  	.pipe_offsets = { PIPE_A_OFFSET, PIPE_B_OFFSET, \
> @@ -79,19 +80,20 @@
>  
>  static const struct intel_device_info intel_i830_info = {
>  	GEN2_FEATURES,
> -	.platform = INTEL_I830,
> +	PLATFORM(INTEL_I830),
>  	.is_mobile = 1, .cursor_needs_physical = 1,
>  	.num_pipes = 2, /* legal, last one wins */
>  };
>  
>  static const struct intel_device_info intel_i845g_info = {
>  	GEN2_FEATURES,
> -	.platform = INTEL_I845G,
> +	PLATFORM(INTEL_I845G),
>  };
>  
>  static const struct intel_device_info intel_i85x_info = {
>  	GEN2_FEATURES,
> -	.platform = INTEL_I85X, .is_mobile = 1,
> +	PLATFORM(INTEL_I85X),
> +	.is_mobile = 1,
>  	.num_pipes = 2, /* legal, last one wins */
>  	.cursor_needs_physical = 1,
>  	.has_fbc = 1,
> @@ -99,7 +101,7 @@ static const struct intel_device_info intel_i85x_info = {
>  
>  static const struct intel_device_info intel_i865g_info = {
>  	GEN2_FEATURES,
> -	.platform = INTEL_I865G,
> +	PLATFORM(INTEL_I865G),
>  };
>  
>  #define GEN3_FEATURES \
> @@ -114,7 +116,8 @@ static const struct intel_device_info intel_i865g_info = {
>  
>  static const struct intel_device_info intel_i915g_info = {
>  	GEN3_FEATURES,
> -	.platform = INTEL_I915G, .cursor_needs_physical = 1,
> +	PLATFORM(INTEL_I915G),
> +	.cursor_needs_physical = 1,
>  	.has_overlay = 1, .overlay_needs_physical = 1,
>  	.hws_needs_physical = 1,
>  	.unfenced_needs_alignment = 1,
> @@ -122,7 +125,7 @@ static const struct intel_device_info intel_i915g_info = {
>  
>  static const struct intel_device_info intel_i915gm_info = {
>  	GEN3_FEATURES,
> -	.platform = INTEL_I915GM,
> +	PLATFORM(INTEL_I915GM),
>  	.is_mobile = 1,
>  	.cursor_needs_physical = 1,
>  	.has_overlay = 1, .overlay_needs_physical = 1,
> @@ -134,7 +137,7 @@ static const struct intel_device_info intel_i915gm_info = {
>  
>  static const struct intel_device_info intel_i945g_info = {
>  	GEN3_FEATURES,
> -	.platform = INTEL_I945G,
> +	PLATFORM(INTEL_I945G),
>  	.has_hotplug = 1, .cursor_needs_physical = 1,
>  	.has_overlay = 1, .overlay_needs_physical = 1,
>  	.hws_needs_physical = 1,
> @@ -143,7 +146,8 @@ static const struct intel_device_info intel_i945g_info = {
>  
>  static const struct intel_device_info intel_i945gm_info = {
>  	GEN3_FEATURES,
> -	.platform = INTEL_I945GM, .is_mobile = 1,
> +	PLATFORM(INTEL_I945GM),
> +	.is_mobile = 1,
>  	.has_hotplug = 1, .cursor_needs_physical = 1,
>  	.has_overlay = 1, .overlay_needs_physical = 1,
>  	.supports_tv = 1,
> @@ -154,14 +158,15 @@ static const struct intel_device_info intel_i945gm_info = {
>  
>  static const struct intel_device_info intel_g33_info = {
>  	GEN3_FEATURES,
> -	.platform = INTEL_G33,
> +	PLATFORM(INTEL_G33),
>  	.has_hotplug = 1,
>  	.has_overlay = 1,
>  };
>  
>  static const struct intel_device_info intel_pineview_info = {
>  	GEN3_FEATURES,
> -	.platform = INTEL_PINEVIEW, .is_mobile = 1,
> +	PLATFORM(INTEL_PINEVIEW),
> +	.is_mobile = 1,
>  	.has_hotplug = 1,
>  	.has_overlay = 1,
>  };
> @@ -179,7 +184,7 @@ static const struct intel_device_info intel_pineview_info = {
>  
>  static const struct intel_device_info intel_i965g_info = {
>  	GEN4_FEATURES,
> -	.platform = INTEL_I965G,
> +	PLATFORM(INTEL_I965G),
>  	.has_overlay = 1,
>  	.hws_needs_physical = 1,
>  	.has_snoop = false,
> @@ -187,7 +192,7 @@ static const struct intel_device_info intel_i965g_info = {
>  
>  static const struct intel_device_info intel_i965gm_info = {
>  	GEN4_FEATURES,
> -	.platform = INTEL_I965GM,
> +	PLATFORM(INTEL_I965GM),
>  	.is_mobile = 1, .has_fbc = 1,
>  	.has_overlay = 1,
>  	.supports_tv = 1,
> @@ -197,13 +202,13 @@ static const struct intel_device_info intel_i965gm_info = {
>  
>  static const struct intel_device_info intel_g45_info = {
>  	GEN4_FEATURES,
> -	.platform = INTEL_G45,
> +	PLATFORM(INTEL_G45),
>  	.ring_mask = RENDER_RING | BSD_RING,
>  };
>  
>  static const struct intel_device_info intel_gm45_info = {
>  	GEN4_FEATURES,
> -	.platform = INTEL_GM45,
> +	PLATFORM(INTEL_GM45),
>  	.is_mobile = 1, .has_fbc = 1,
>  	.supports_tv = 1,
>  	.ring_mask = RENDER_RING | BSD_RING,
> @@ -223,12 +228,12 @@ static const struct intel_device_info intel_gm45_info = {
>  
>  static const struct intel_device_info intel_ironlake_d_info = {
>  	GEN5_FEATURES,
> -	.platform = INTEL_IRONLAKE,
> +	PLATFORM(INTEL_IRONLAKE),
>  };
>  
>  static const struct intel_device_info intel_ironlake_m_info = {
>  	GEN5_FEATURES,
> -	.platform = INTEL_IRONLAKE,
> +	PLATFORM(INTEL_IRONLAKE),
>  	.is_mobile = 1, .has_fbc = 1,
>  };
>  
> @@ -248,7 +253,7 @@ static const struct intel_device_info intel_ironlake_m_info = {
>  
>  #define SNB_D_PLATFORM \
>  	GEN6_FEATURES, \
> -	.platform = INTEL_SANDYBRIDGE
> +	PLATFORM(INTEL_SANDYBRIDGE)
>  
>  static const struct intel_device_info intel_sandybridge_d_gt1_info = {
>  	SNB_D_PLATFORM,
> @@ -262,7 +267,7 @@ static const struct intel_device_info intel_sandybridge_d_gt2_info = {
>  
>  #define SNB_M_PLATFORM \
>  	GEN6_FEATURES, \
> -	.platform = INTEL_SANDYBRIDGE, \
> +	PLATFORM(INTEL_SANDYBRIDGE), \
>  	.is_mobile = 1
>  
>  
> @@ -293,7 +298,7 @@ static const struct intel_device_info intel_sandybridge_m_gt2_info = {
>  
>  #define IVB_D_PLATFORM \
>  	GEN7_FEATURES, \
> -	.platform = INTEL_IVYBRIDGE, \
> +	PLATFORM(INTEL_IVYBRIDGE), \
>  	.has_l3_dpf = 1
>  
>  static const struct intel_device_info intel_ivybridge_d_gt1_info = {
> @@ -308,7 +313,7 @@ static const struct intel_device_info intel_ivybridge_d_gt2_info = {
>  
>  #define IVB_M_PLATFORM \
>  	GEN7_FEATURES, \
> -	.platform = INTEL_IVYBRIDGE, \
> +	PLATFORM(INTEL_IVYBRIDGE), \
>  	.is_mobile = 1, \
>  	.has_l3_dpf = 1
>  
> @@ -324,14 +329,14 @@ static const struct intel_device_info intel_ivybridge_m_gt2_info = {
>  
>  static const struct intel_device_info intel_ivybridge_q_info = {
>  	GEN7_FEATURES,
> -	.platform = INTEL_IVYBRIDGE,
> +	PLATFORM(INTEL_IVYBRIDGE),
>  	.gt = 2,
>  	.num_pipes = 0, /* legal, last one wins */
>  	.has_l3_dpf = 1,
>  };
>  
>  static const struct intel_device_info intel_valleyview_info = {
> -	.platform = INTEL_VALLEYVIEW,
> +	PLATFORM(INTEL_VALLEYVIEW),
>  	GEN(7),
>  	.is_lp = 1,
>  	.num_pipes = 2,
> @@ -363,7 +368,7 @@ static const struct intel_device_info intel_valleyview_info = {
>  
>  #define HSW_PLATFORM \
>  	G75_FEATURES, \
> -	.platform = INTEL_HASWELL, \
> +	PLATFORM(INTEL_HASWELL), \
>  	.has_l3_dpf = 1
>  
>  static const struct intel_device_info intel_haswell_gt1_info = {
> @@ -394,7 +399,7 @@ static const struct intel_device_info intel_haswell_gt3_info = {
>  
>  #define BDW_PLATFORM \
>  	GEN8_FEATURES, \
> -	.platform = INTEL_BROADWELL
> +	PLATFORM(INTEL_BROADWELL)
>  
>  static const struct intel_device_info intel_broadwell_gt1_info = {
>  	BDW_PLATFORM,
> @@ -421,12 +426,12 @@ static const struct intel_device_info intel_broadwell_gt3_info = {
>  };
>  
>  static const struct intel_device_info intel_cherryview_info = {
> +	PLATFORM(INTEL_CHERRYVIEW),
>  	GEN(8),

The order seems a bit strange... here it comes before the GEN
and in other cases it comes after the GEN_FEATURES which includes GEN...

probably we could make PLATFORM the very first thing on any case
but up to you...

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>

>  	.num_pipes = 3,
>  	.has_hotplug = 1,
>  	.is_lp = 1,
>  	.ring_mask = RENDER_RING | BSD_RING | BLT_RING | VEBOX_RING,
> -	.platform = INTEL_CHERRYVIEW,
>  	.has_64bit_reloc = 1,
>  	.has_psr = 1,
>  	.has_runtime_pm = 1,
> @@ -462,7 +467,7 @@ static const struct intel_device_info intel_cherryview_info = {
>  
>  #define SKL_PLATFORM \
>  	GEN9_FEATURES, \
> -	.platform = INTEL_SKYLAKE
> +	PLATFORM(INTEL_SKYLAKE)
>  
>  static const struct intel_device_info intel_skylake_gt1_info = {
>  	SKL_PLATFORM,
> @@ -522,20 +527,20 @@ static const struct intel_device_info intel_skylake_gt4_info = {
>  
>  static const struct intel_device_info intel_broxton_info = {
>  	GEN9_LP_FEATURES,
> -	.platform = INTEL_BROXTON,
> +	PLATFORM(INTEL_BROXTON),
>  	.ddb_size = 512,
>  };
>  
>  static const struct intel_device_info intel_geminilake_info = {
>  	GEN9_LP_FEATURES,
> -	.platform = INTEL_GEMINILAKE,
> +	PLATFORM(INTEL_GEMINILAKE),
>  	.ddb_size = 1024,
>  	GLK_COLORS,
>  };
>  
>  #define KBL_PLATFORM \
>  	GEN9_FEATURES, \
> -	.platform = INTEL_KABYLAKE
> +	PLATFORM(INTEL_KABYLAKE)
>  
>  static const struct intel_device_info intel_kabylake_gt1_info = {
>  	KBL_PLATFORM,
> @@ -555,7 +560,7 @@ static const struct intel_device_info intel_kabylake_gt3_info = {
>  
>  #define CFL_PLATFORM \
>  	GEN9_FEATURES, \
> -	.platform = INTEL_COFFEELAKE
> +	PLATFORM(INTEL_COFFEELAKE)
>  
>  static const struct intel_device_info intel_coffeelake_gt1_info = {
>  	CFL_PLATFORM,
> @@ -581,8 +586,8 @@ static const struct intel_device_info intel_coffeelake_gt3_info = {
>  
>  static const struct intel_device_info intel_cannonlake_info = {
>  	GEN10_FEATURES,
> +	PLATFORM(INTEL_CANNONLAKE),
>  	.is_alpha_support = 1,
> -	.platform = INTEL_CANNONLAKE,
>  	.gt = 2,
>  };
>  
> @@ -594,7 +599,7 @@ static const struct intel_device_info intel_cannonlake_info = {
>  
>  static const struct intel_device_info intel_icelake_11_info = {
>  	GEN11_FEATURES,
> -	.platform = INTEL_ICELAKE,
> +	PLATFORM(INTEL_ICELAKE),
>  	.is_alpha_support = 1,
>  	.has_resource_streamer = 0,
>  };
> -- 
> 2.16.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
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