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 d47fbada79e6..e3cf7c9721e3 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 a75b88f37830..c5edcf24a34b 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_static_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_static_info intel_i845g_info = { GEN2_FEATURES, - .platform = INTEL_I845G, + PLATFORM(INTEL_I845G), }; static const struct intel_device_static_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_static_info intel_i85x_info = { static const struct intel_device_static_info intel_i865g_info = { GEN2_FEATURES, - .platform = INTEL_I865G, + PLATFORM(INTEL_I865G), }; #define GEN3_FEATURES \ @@ -114,7 +116,8 @@ static const struct intel_device_static_info intel_i865g_info = { static const struct intel_device_static_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_static_info intel_i915g_info = { static const struct intel_device_static_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_static_info intel_i915gm_info = { static const struct intel_device_static_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_static_info intel_i945g_info = { static const struct intel_device_static_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_static_info intel_i945gm_info = { static const struct intel_device_static_info intel_g33_info = { GEN3_FEATURES, - .platform = INTEL_G33, + PLATFORM(INTEL_G33), .has_hotplug = 1, .has_overlay = 1, }; static const struct intel_device_static_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_static_info intel_pineview_info = { static const struct intel_device_static_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_static_info intel_i965g_info = { static const struct intel_device_static_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_static_info intel_i965gm_info = { static const struct intel_device_static_info intel_g45_info = { GEN4_FEATURES, - .platform = INTEL_G45, + PLATFORM(INTEL_G45), .ring_mask = RENDER_RING | BSD_RING, }; static const struct intel_device_static_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_static_info intel_gm45_info = { static const struct intel_device_static_info intel_ironlake_d_info = { GEN5_FEATURES, - .platform = INTEL_IRONLAKE, + PLATFORM(INTEL_IRONLAKE), }; static const struct intel_device_static_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_static_info intel_ironlake_m_info = { #define SNB_D_PLATFORM \ GEN6_FEATURES, \ - .platform = INTEL_SANDYBRIDGE + PLATFORM(INTEL_SANDYBRIDGE) static const struct intel_device_static_info intel_sandybridge_d_gt1_info = { SNB_D_PLATFORM, @@ -262,7 +267,7 @@ static const struct intel_device_static_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_static_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_static_info intel_ivybridge_d_gt1_info = { @@ -308,7 +313,7 @@ static const struct intel_device_static_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_static_info intel_ivybridge_m_gt2_info = { static const struct intel_device_static_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_static_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_static_info intel_valleyview_info = { #define HSW_PLATFORM \ G75_FEATURES, \ - .platform = INTEL_HASWELL, \ + PLATFORM(INTEL_HASWELL), \ .has_l3_dpf = 1 static const struct intel_device_static_info intel_haswell_gt1_info = { @@ -394,7 +399,7 @@ static const struct intel_device_static_info intel_haswell_gt3_info = { #define BDW_PLATFORM \ GEN8_FEATURES, \ GEN(8), \ - .platform = INTEL_BROADWELL + PLATFORM(INTEL_BROADWELL) static const struct intel_device_static_info intel_broadwell_gt1_info = { BDW_PLATFORM, @@ -422,11 +427,11 @@ static const struct intel_device_static_info intel_broadwell_gt3_info = { static const struct intel_device_static_info intel_cherryview_info = { GEN(8), + PLATFORM(INTEL_CHERRYVIEW), .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_static_info intel_cherryview_info = { #define SKL_PLATFORM \ GEN9_FEATURES, \ GEN(9), \ - .platform = INTEL_SKYLAKE + PLATFORM(INTEL_SKYLAKE) static const struct intel_device_static_info intel_skylake_gt1_info = { SKL_PLATFORM, @@ -522,13 +527,13 @@ static const struct intel_device_static_info intel_skylake_gt4_info = { static const struct intel_device_static_info intel_broxton_info = { GEN9_LP_FEATURES, - .platform = INTEL_BROXTON, + PLATFORM(INTEL_BROXTON), .ddb_size = 512, }; static const struct intel_device_static_info intel_geminilake_info = { GEN9_LP_FEATURES, - .platform = INTEL_GEMINILAKE, + PLATFORM(INTEL_GEMINILAKE), .ddb_size = 1024, GLK_COLORS, }; @@ -536,7 +541,7 @@ static const struct intel_device_static_info intel_geminilake_info = { #define KBL_PLATFORM \ GEN9_FEATURES, \ GEN(9), \ - .platform = INTEL_KABYLAKE + PLATFORM(INTEL_KABYLAKE) static const struct intel_device_static_info intel_kabylake_gt1_info = { KBL_PLATFORM, @@ -557,7 +562,7 @@ static const struct intel_device_static_info intel_kabylake_gt3_info = { #define CFL_PLATFORM \ GEN9_FEATURES, \ GEN(9), \ - .platform = INTEL_COFFEELAKE + PLATFORM(INTEL_COFFEELAKE) static const struct intel_device_static_info intel_coffeelake_gt1_info = { CFL_PLATFORM, @@ -583,8 +588,8 @@ static const struct intel_device_static_info intel_coffeelake_gt3_info = { static const struct intel_device_static_info intel_cannonlake_info = { GEN10_FEATURES, GEN(10), + PLATFORM(INTEL_CANNONLAKE), .is_alpha_support = 1, - .platform = INTEL_CANNONLAKE, .gt = 2, }; @@ -596,7 +601,7 @@ static const struct intel_device_static_info intel_cannonlake_info = { static const struct intel_device_static_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