All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
Cc: ankit.p.navik@intel.com, intel-gfx@lists.freedesktop.org,
	kbuild-all@01.org
Subject: Re: [PATCH v4 2/3] drm/i915: set optimum eu/slice/sub-slice configuration based on load type
Date: Thu, 14 Mar 2019 23:50:43 +0800	[thread overview]
Message-ID: <201903142332.ACKGXryc%lkp@intel.com> (raw)
In-Reply-To: <1552552615-6703-3-git-send-email-ankit.p.navik@intel.com>

Hi Praveen,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20190306]
[cannot apply to v5.0]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ankit-Navik/drm-i915-Context-aware-user-agnostic-EU-Slice-Sub-slice-control-within-kernel/20190314-181342
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'


sparse warnings: (new ones prefixed by >>)

   include/uapi/linux/perf_event.h:147:56: sparse: cast truncates bits from constant value (8000000000000000 becomes 0)
>> drivers/gpu/drm/i915/intel_device_info.c:858:28: sparse: incorrect type in assignment (different modifiers) @@    expected struct i915_sseu_optimum_config *opt_config @@    got structstruct i915_sseu_optimum_config *opt_config @@
   drivers/gpu/drm/i915/intel_device_info.c:858:28:    expected struct i915_sseu_optimum_config *opt_config
   drivers/gpu/drm/i915/intel_device_info.c:858:28:    got struct i915_sseu_optimum_config const *<noident>
   drivers/gpu/drm/i915/intel_device_info.c:869:36: sparse: incorrect type in assignment (different modifiers) @@    expected struct i915_sseu_optimum_config *opt_config @@    got structstruct i915_sseu_optimum_config *opt_config @@
   drivers/gpu/drm/i915/intel_device_info.c:869:36:    expected struct i915_sseu_optimum_config *opt_config
   drivers/gpu/drm/i915/intel_device_info.c:869:36:    got struct i915_sseu_optimum_config const *<noident>
   drivers/gpu/drm/i915/intel_device_info.c:874:36: sparse: incorrect type in assignment (different modifiers) @@    expected struct i915_sseu_optimum_config *opt_config @@    got structstruct i915_sseu_optimum_config *opt_config @@
   drivers/gpu/drm/i915/intel_device_info.c:874:36:    expected struct i915_sseu_optimum_config *opt_config
   drivers/gpu/drm/i915/intel_device_info.c:874:36:    got struct i915_sseu_optimum_config const *<noident>

vim +858 drivers/gpu/drm/i915/intel_device_info.c

   730	
   731	/**
   732	 * intel_device_info_runtime_init - initialize runtime info
   733	 * @dev_priv: the i915 device
   734	 *
   735	 * Determine various intel_device_info fields at runtime.
   736	 *
   737	 * Use it when either:
   738	 *   - it's judged too laborious to fill n static structures with the limit
   739	 *     when a simple if statement does the job,
   740	 *   - run-time checks (eg read fuse/strap registers) are needed.
   741	 *
   742	 * This function needs to be called:
   743	 *   - after the MMIO has been setup as we are reading registers,
   744	 *   - after the PCH has been detected,
   745	 *   - before the first usage of the fields it can tweak.
   746	 */
   747	void intel_device_info_runtime_init(struct drm_i915_private *dev_priv)
   748	{
   749		struct intel_device_info *info = mkwrite_device_info(dev_priv);
   750		struct intel_runtime_info *runtime = RUNTIME_INFO(dev_priv);
   751		enum pipe pipe;
   752		struct i915_sseu_optimum_config *opt_config = NULL;
   753	
   754		if (INTEL_GEN(dev_priv) >= 10) {
   755			for_each_pipe(dev_priv, pipe)
   756				runtime->num_scalers[pipe] = 2;
   757		} else if (IS_GEN(dev_priv, 9)) {
   758			runtime->num_scalers[PIPE_A] = 2;
   759			runtime->num_scalers[PIPE_B] = 2;
   760			runtime->num_scalers[PIPE_C] = 1;
   761		}
   762	
   763		BUILD_BUG_ON(I915_NUM_ENGINES > BITS_PER_TYPE(intel_ring_mask_t));
   764	
   765		if (IS_GEN(dev_priv, 11))
   766			for_each_pipe(dev_priv, pipe)
   767				runtime->num_sprites[pipe] = 6;
   768		else if (IS_GEN(dev_priv, 10) || IS_GEMINILAKE(dev_priv))
   769			for_each_pipe(dev_priv, pipe)
   770				runtime->num_sprites[pipe] = 3;
   771		else if (IS_BROXTON(dev_priv)) {
   772			/*
   773			 * Skylake and Broxton currently don't expose the topmost plane as its
   774			 * use is exclusive with the legacy cursor and we only want to expose
   775			 * one of those, not both. Until we can safely expose the topmost plane
   776			 * as a DRM_PLANE_TYPE_CURSOR with all the features exposed/supported,
   777			 * we don't expose the topmost plane at all to prevent ABI breakage
   778			 * down the line.
   779			 */
   780	
   781			runtime->num_sprites[PIPE_A] = 2;
   782			runtime->num_sprites[PIPE_B] = 2;
   783			runtime->num_sprites[PIPE_C] = 1;
   784		} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
   785			for_each_pipe(dev_priv, pipe)
   786				runtime->num_sprites[pipe] = 2;
   787		} else if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv)) {
   788			for_each_pipe(dev_priv, pipe)
   789				runtime->num_sprites[pipe] = 1;
   790		}
   791	
   792		if (i915_modparams.disable_display) {
   793			DRM_INFO("Display disabled (module parameter)\n");
   794			info->num_pipes = 0;
   795		} else if (HAS_DISPLAY(dev_priv) &&
   796			   (IS_GEN_RANGE(dev_priv, 7, 8)) &&
   797			   HAS_PCH_SPLIT(dev_priv)) {
   798			u32 fuse_strap = I915_READ(FUSE_STRAP);
   799			u32 sfuse_strap = I915_READ(SFUSE_STRAP);
   800	
   801			/*
   802			 * SFUSE_STRAP is supposed to have a bit signalling the display
   803			 * is fused off. Unfortunately it seems that, at least in
   804			 * certain cases, fused off display means that PCH display
   805			 * reads don't land anywhere. In that case, we read 0s.
   806			 *
   807			 * On CPT/PPT, we can detect this case as SFUSE_STRAP_FUSE_LOCK
   808			 * should be set when taking over after the firmware.
   809			 */
   810			if (fuse_strap & ILK_INTERNAL_DISPLAY_DISABLE ||
   811			    sfuse_strap & SFUSE_STRAP_DISPLAY_DISABLED ||
   812			    (HAS_PCH_CPT(dev_priv) &&
   813			     !(sfuse_strap & SFUSE_STRAP_FUSE_LOCK))) {
   814				DRM_INFO("Display fused off, disabling\n");
   815				info->num_pipes = 0;
   816			} else if (fuse_strap & IVB_PIPE_C_DISABLE) {
   817				DRM_INFO("PipeC fused off\n");
   818				info->num_pipes -= 1;
   819			}
   820		} else if (HAS_DISPLAY(dev_priv) && INTEL_GEN(dev_priv) >= 9) {
   821			u32 dfsm = I915_READ(SKL_DFSM);
   822			u8 disabled_mask = 0;
   823			bool invalid;
   824			int num_bits;
   825	
   826			if (dfsm & SKL_DFSM_PIPE_A_DISABLE)
   827				disabled_mask |= BIT(PIPE_A);
   828			if (dfsm & SKL_DFSM_PIPE_B_DISABLE)
   829				disabled_mask |= BIT(PIPE_B);
   830			if (dfsm & SKL_DFSM_PIPE_C_DISABLE)
   831				disabled_mask |= BIT(PIPE_C);
   832	
   833			num_bits = hweight8(disabled_mask);
   834	
   835			switch (disabled_mask) {
   836			case BIT(PIPE_A):
   837			case BIT(PIPE_B):
   838			case BIT(PIPE_A) | BIT(PIPE_B):
   839			case BIT(PIPE_A) | BIT(PIPE_C):
   840				invalid = true;
   841				break;
   842			default:
   843				invalid = false;
   844			}
   845	
   846			if (num_bits > info->num_pipes || invalid)
   847				DRM_ERROR("invalid pipe fuse configuration: 0x%x\n",
   848					  disabled_mask);
   849			else
   850				info->num_pipes -= num_bits;
   851		}
   852	
   853		/* Initialize slice/subslice/EU info */
   854		if (IS_HASWELL(dev_priv))
   855			haswell_sseu_info_init(dev_priv);
   856		else if (IS_CHERRYVIEW(dev_priv)) {
   857			cherryview_sseu_info_init(dev_priv);
 > 858			opt_config = chv_config;
   859			BUILD_BUG_ON(ARRAY_SIZE(chv_config) != LOAD_TYPE_LAST);
   860		}
   861		else if (IS_BROADWELL(dev_priv))
   862			broadwell_sseu_info_init(dev_priv);
   863		else if (IS_GEN(dev_priv, 9)) {
   864			gen9_sseu_info_init(dev_priv);
   865	
   866			switch (info->gt) {
   867			default: /* fall through */
   868			case 2:
   869				opt_config = kbl_gt2_config;
   870				BUILD_BUG_ON(ARRAY_SIZE(kbl_gt2_config)
   871							!= LOAD_TYPE_LAST);
   872			break;
   873			case 3:
   874				opt_config = kbl_gt3_config;
   875				BUILD_BUG_ON(ARRAY_SIZE(kbl_gt3_config)
   876							!= LOAD_TYPE_LAST);
   877			break;
   878			}
   879		}
   880		else if (IS_GEN(dev_priv, 10))
   881			gen10_sseu_info_init(dev_priv);
   882		else if (INTEL_GEN(dev_priv) >= 11)
   883			gen11_sseu_info_init(dev_priv);
   884	
   885		if (IS_GEN(dev_priv, 6) && intel_vtd_active()) {
   886			DRM_INFO("Disabling ppGTT for VT-d support\n");
   887			info->ppgtt = INTEL_PPGTT_NONE;
   888		}
   889	
   890		if (opt_config)
   891			dev_priv->opt_config = opt_config;
   892	
   893		/* Initialize command stream timestamp frequency */
   894		runtime->cs_timestamp_frequency_khz = read_timestamp_frequency(dev_priv);
   895	}
   896	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2019-03-14 15:50 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-14  8:36 [PATCH v4 0/3] drm/i915: Context aware user agnostic EU/Slice/Sub-slice control within kernel Ankit Navik
2019-03-14  8:36 ` [PATCH v4 1/3] drm/i915: Get active pending request for given context Ankit Navik
2019-03-14  8:55   ` Chris Wilson
2019-03-14 10:39   ` Tvrtko Ursulin
2019-03-14  8:36 ` [PATCH v4 2/3] drm/i915: set optimum eu/slice/sub-slice configuration based on load type Ankit Navik
2019-03-14 10:45   ` Tvrtko Ursulin
2019-03-14 10:52   ` kbuild test robot
2019-03-14 11:04   ` kbuild test robot
2019-03-14 15:50   ` kbuild test robot [this message]
2019-03-14  8:36 ` [PATCH v4 3/3] drm/i915: Predictive governor to control eu/slice/subslice Ankit Navik
2019-03-14 10:58   ` Tvrtko Ursulin
2019-03-14  9:35 ` ✗ Fi.CI.BAT: failure for drm/i915: Context aware user agnostic EU/Slice/Sub-slice control within kernel Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201903142332.ACKGXryc%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=ankit.p.navik@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=kbuild-all@01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.