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
next prev 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.