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