Hi Jessica, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v5.15-rc5 next-20211011] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Jessica-Zhang/drm-msm-dpu-Add-CRC-support-for-DPU/20211012-074357 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 64570fbc14f8d7cb3fe3995f20e26bc25ce4b2cc config: arm-qcom_defconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/5260fd396b774196018bdb110b213ce9abde8853 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Jessica-Zhang/drm-msm-dpu-Add-CRC-support-for-DPU/20211012-074357 git checkout 5260fd396b774196018bdb110b213ce9abde8853 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arm If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): >> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c:89:5: warning: no previous prototype for 'dpu_crtc_verify_crc_source' [-Wmissing-prototypes] 89 | int dpu_crtc_verify_crc_source(struct drm_crtc *crtc, const char *src_name, size_t *values_cnt) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c:105:5: warning: no previous prototype for 'dpu_crtc_set_crc_source' [-Wmissing-prototypes] 105 | int dpu_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name) | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c: In function 'dpu_crtc_get_crc': drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c:204:26: warning: variable 'dpu_crtc' set but not used [-Wunused-but-set-variable] 204 | struct dpu_crtc *dpu_crtc; | ^~~~~~~~ vim +/dpu_crtc_verify_crc_source +89 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c 88 > 89 int dpu_crtc_verify_crc_source(struct drm_crtc *crtc, const char *src_name, size_t *values_cnt) 90 { 91 enum dpu_crtc_crc_source source = dpu_crtc_parse_crc_source(src_name); 92 struct dpu_crtc_state *crtc_state = to_dpu_crtc_state(crtc->state); 93 94 if (source < 0) { 95 DRM_DEBUG_DRIVER("Invalid source %s for CRTC%d\n", src_name, crtc->index); 96 return -EINVAL; 97 } 98 99 if (source == DPU_CRTC_CRC_SOURCE_LAYER_MIXER) 100 *values_cnt = crtc_state->num_mixers; 101 102 return 0; 103 } 104 > 105 int dpu_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name) 106 { 107 enum dpu_crtc_crc_source source = dpu_crtc_parse_crc_source(src_name); 108 enum dpu_crtc_crc_source current_source; 109 struct drm_crtc_commit *commit; 110 struct dpu_crtc_state *crtc_state; 111 struct drm_device *drm_dev = crtc->dev; 112 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); 113 struct dpu_crtc_mixer *m; 114 115 bool was_enabled; 116 bool enable = false; 117 int i, ret = 0; 118 119 if (source < 0) { 120 DRM_DEBUG_DRIVER("Invalid CRC source %s for CRTC%d\n", src_name, crtc->index); 121 return -EINVAL; 122 } 123 124 ret = drm_modeset_lock(&crtc->mutex, NULL); 125 126 if (ret) 127 return ret; 128 129 /* Wait for any pending commits to finish */ 130 spin_lock(&crtc->commit_lock); 131 commit = list_first_entry_or_null(&crtc->commit_list, struct drm_crtc_commit, commit_entry); 132 133 if (commit) 134 drm_crtc_commit_get(commit); 135 spin_unlock(&crtc->commit_lock); 136 137 if (commit) { 138 ret = wait_for_completion_interruptible_timeout(&commit->hw_done, 10 * HZ); 139 140 if (ret) 141 goto cleanup; 142 } 143 144 enable = dpu_crtc_is_valid_crc_source(source); 145 crtc_state = to_dpu_crtc_state(crtc->state); 146 147 spin_lock_irq(&drm_dev->event_lock); 148 current_source = dpu_crtc->crc_source; 149 spin_unlock_irq(&drm_dev->event_lock); 150 151 was_enabled = !(current_source == DPU_CRTC_CRC_SOURCE_NONE); 152 153 if (!was_enabled && enable) { 154 ret = drm_crtc_vblank_get(crtc); 155 156 if (ret) 157 goto cleanup; 158 159 } else if (was_enabled && !enable) { 160 drm_crtc_vblank_put(crtc); 161 } 162 163 spin_lock_irq(&drm_dev->event_lock); 164 dpu_crtc->crc_source = source; 165 spin_unlock_irq(&drm_dev->event_lock); 166 167 crtc_state->skip_count = 0; 168 169 for (i = 0; i < crtc_state->num_mixers; ++i) { 170 m = &crtc_state->mixers[i]; 171 172 if (!m->hw_lm || !m->hw_lm->ops.collect_misr || !m->hw_lm->ops.setup_misr) 173 continue; 174 175 /* Calculate MISR over 1 frame */ 176 m->hw_lm->ops.setup_misr(m->hw_lm, true, 1); 177 } 178 179 180 cleanup: 181 if (commit) 182 drm_crtc_commit_put(commit); 183 drm_modeset_unlock(&crtc->mutex); 184 185 return ret; 186 } 187 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip