tree:
https://github.com/0day-ci/linux/commits/UPDATE-20200404-070422/Stanislav...
head: ef47f2e70c518108df01b5d25f5818f685753cde
commit: 225e996a7dcd143d64831d5d08bdc7832666189e [6/10] drm/i915: Add proper SAGV support
for TGL+
config: i386-debian-10.3 (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce:
git checkout 225e996a7dcd143d64831d5d08bdc7832666189e
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/intel_pm.c: In function 'intel_compute_sagv_mask':
> drivers/gpu/drm/i915/intel_pm.c:3869:18: error: implicit
declaration of function 'intel_atomic_get_bw_old_state'; did you mean
'intel_atomic_get_bw_state'? [-Werror=implicit-function-declaration]
old_bw_state = intel_atomic_get_bw_old_state(state);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
intel_atomic_get_bw_state
drivers/gpu/drm/i915/intel_pm.c:3869:16: warning: assignment makes pointer from integer
without a cast [-Wint-conversion]
old_bw_state = intel_atomic_get_bw_old_state(state);
^
cc1: some warnings being treated as errors
vim +3869 drivers/gpu/drm/i915/intel_pm.c
3838
3839 static int intel_compute_sagv_mask(struct intel_atomic_state *state)
3840 {
3841 int ret;
3842 struct drm_device *dev = state->base.dev;
3843 struct drm_i915_private *dev_priv = to_i915(dev);
3844 struct intel_crtc *crtc;
3845 struct intel_crtc_state *new_crtc_state;
3846 struct intel_bw_state *new_bw_state = NULL;
3847 struct intel_bw_state *old_bw_state = NULL;
3848 int i;
3849 bool can_sagv;
3850
3851 /*
3852 * If SAGV is not supported we just can't do anything
3853 * not even set or reject SAGV points - just bail out.
3854 * Thus avoid needless calculations.
3855 */
3856 if (!intel_has_sagv(dev_priv))
3857 return 0;
3858
3859 for_each_new_intel_crtc_in_state(state, crtc,
3860 new_crtc_state, i) {
3861 bool pipe_sagv_enable;
3862
3863 new_bw_state = intel_atomic_get_bw_state(state);
3864 if (IS_ERR(new_bw_state)) {
3865 WARN(1, "Could not get bw_state\n");
3866 return PTR_ERR(new_bw_state);
3867 }
3868
3869 old_bw_state = intel_atomic_get_bw_old_state(state);
3870
3871 if (!new_crtc_state->hw.active)
3872 continue;
3873
3874 if (INTEL_GEN(dev_priv) >= 12) {
3875 pipe_sagv_enable = tgl_can_enable_sagv_on_pipe(new_crtc_state);
3876 } else if (INTEL_GEN(dev_priv) >= 11) {
3877 pipe_sagv_enable = icl_can_enable_sagv_on_pipe(new_crtc_state);
3878 } else {
3879 pipe_sagv_enable = skl_can_enable_sagv_on_pipe(new_crtc_state);
3880 }
3881
3882 if (pipe_sagv_enable)
3883 new_bw_state->pipe_sagv_reject &= ~BIT(crtc->pipe);
3884 else
3885 new_bw_state->pipe_sagv_reject |= BIT(crtc->pipe);
3886 }
3887
3888 if (!new_bw_state || !old_bw_state)
3889 return 0;
3890
3891 can_sagv = new_bw_state->pipe_sagv_reject == 0;
3892
3893 for_each_new_intel_crtc_in_state(state, crtc,
3894 new_crtc_state, i) {
3895 struct skl_pipe_wm *pipe_wm = &new_crtc_state->wm.skl.optimal;
3896
3897 /*
3898 * Due to drm limitation at commit state, when
3899 * changes are written the whole atomic state is
3900 * zeroed away => which prevents from using it,
3901 * so just sticking it into pipe wm state for
3902 * keeping it simple - anyway this is related to wm.
3903 * Proper way in ideal universe would be of course not
3904 * to lose parent atomic state object from child crtc_state,
3905 * and stick to OOP programming principles, which had been
3906 * scientifically proven to work.
3907 */
3908 pipe_wm->can_sagv = can_sagv;
3909 }
3910
3911 /*
3912 * For SAGV we need to account all the pipes,
3913 * not only the ones which are in state currently.
3914 * Grab all locks if we detect that we are actually
3915 * going to do something.
3916 */
3917 if (new_bw_state->pipe_sagv_reject != old_bw_state->pipe_sagv_reject) {
3918 DRM_DEBUG_KMS("State %p: old sagv mask 0x%x, new sagv mask 0x%x\n",
3919 state,
3920 old_bw_state->pipe_sagv_reject,
3921 new_bw_state->pipe_sagv_reject);
3922
3923 ret = intel_atomic_serialize_global_state(&new_bw_state->base);
3924 if (ret) {
3925 DRM_DEBUG_KMS("Could not serialize global state\n");
3926 return ret;
3927 }
3928 }
3929
3930 return 0;
3931 }
3932
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org