[PATCH v5 07/10] drm/vc4: Leverage the load tracker on the BCM2711

kernel test robot lkp at intel.com
Mon Jun 28 17:01:01 UTC 2021


Hi Maxime,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[cannot apply to drm-tip/drm-tip anholt/for-next v5.13 next-20210628]
[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/Maxime-Ripard/drm-vc4-hdmi-Support-the-4k-60Hz-modes/20210628-204514
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-a016-20210628 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/1a67588c095aa22f70656da4b59474fdc8419e58
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Maxime-Ripard/drm-vc4-hdmi-Support-the-4k-60Hz-modes/20210628-204514
        git checkout 1a67588c095aa22f70656da4b59474fdc8419e58
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/vc4/vc4_plane.c: In function 'vc4_plane_calc_load':
>> drivers/gpu/drm/vc4/vc4_plane.c:532:18: warning: variable 'vc4' set but not used [-Wunused-but-set-variable]
     532 |  struct vc4_dev *vc4;
         |                  ^~~


vim +/vc4 +532 drivers/gpu/drm/vc4/vc4_plane.c

5c6799942003df Eric Anholt     2015-12-28  524  
4686da83154d87 Boris Brezillon 2019-02-20  525  static void vc4_plane_calc_load(struct drm_plane_state *state)
4686da83154d87 Boris Brezillon 2019-02-20  526  {
4686da83154d87 Boris Brezillon 2019-02-20  527  	unsigned int hvs_load_shift, vrefresh, i;
4686da83154d87 Boris Brezillon 2019-02-20  528  	struct drm_framebuffer *fb = state->fb;
4686da83154d87 Boris Brezillon 2019-02-20  529  	struct vc4_plane_state *vc4_state;
4686da83154d87 Boris Brezillon 2019-02-20  530  	struct drm_crtc_state *crtc_state;
4686da83154d87 Boris Brezillon 2019-02-20  531  	unsigned int vscale_factor;
f437bc1ec731d3 Maxime Ripard   2020-09-03 @532  	struct vc4_dev *vc4;
f437bc1ec731d3 Maxime Ripard   2020-09-03  533  
f437bc1ec731d3 Maxime Ripard   2020-09-03  534  	vc4 = to_vc4_dev(state->plane->dev);
4686da83154d87 Boris Brezillon 2019-02-20  535  	vc4_state = to_vc4_plane_state(state);
4686da83154d87 Boris Brezillon 2019-02-20  536  	crtc_state = drm_atomic_get_existing_crtc_state(state->state,
4686da83154d87 Boris Brezillon 2019-02-20  537  							state->crtc);
4686da83154d87 Boris Brezillon 2019-02-20  538  	vrefresh = drm_mode_vrefresh(&crtc_state->adjusted_mode);
4686da83154d87 Boris Brezillon 2019-02-20  539  
4686da83154d87 Boris Brezillon 2019-02-20  540  	/* The HVS is able to process 2 pixels/cycle when scaling the source,
4686da83154d87 Boris Brezillon 2019-02-20  541  	 * 4 pixels/cycle otherwise.
4686da83154d87 Boris Brezillon 2019-02-20  542  	 * Alpha blending step seems to be pipelined and it's always operating
4686da83154d87 Boris Brezillon 2019-02-20  543  	 * at 4 pixels/cycle, so the limiting aspect here seems to be the
4686da83154d87 Boris Brezillon 2019-02-20  544  	 * scaler block.
4686da83154d87 Boris Brezillon 2019-02-20  545  	 * HVS load is expressed in clk-cycles/sec (AKA Hz).
4686da83154d87 Boris Brezillon 2019-02-20  546  	 */
4686da83154d87 Boris Brezillon 2019-02-20  547  	if (vc4_state->x_scaling[0] != VC4_SCALING_NONE ||
4686da83154d87 Boris Brezillon 2019-02-20  548  	    vc4_state->x_scaling[1] != VC4_SCALING_NONE ||
4686da83154d87 Boris Brezillon 2019-02-20  549  	    vc4_state->y_scaling[0] != VC4_SCALING_NONE ||
4686da83154d87 Boris Brezillon 2019-02-20  550  	    vc4_state->y_scaling[1] != VC4_SCALING_NONE)
4686da83154d87 Boris Brezillon 2019-02-20  551  		hvs_load_shift = 1;
4686da83154d87 Boris Brezillon 2019-02-20  552  	else
4686da83154d87 Boris Brezillon 2019-02-20  553  		hvs_load_shift = 2;
4686da83154d87 Boris Brezillon 2019-02-20  554  
4686da83154d87 Boris Brezillon 2019-02-20  555  	vc4_state->membus_load = 0;
4686da83154d87 Boris Brezillon 2019-02-20  556  	vc4_state->hvs_load = 0;
4686da83154d87 Boris Brezillon 2019-02-20  557  	for (i = 0; i < fb->format->num_planes; i++) {
4686da83154d87 Boris Brezillon 2019-02-20  558  		/* Even if the bandwidth/plane required for a single frame is
4686da83154d87 Boris Brezillon 2019-02-20  559  		 *
4686da83154d87 Boris Brezillon 2019-02-20  560  		 * vc4_state->src_w[i] * vc4_state->src_h[i] * cpp * vrefresh
4686da83154d87 Boris Brezillon 2019-02-20  561  		 *
4686da83154d87 Boris Brezillon 2019-02-20  562  		 * when downscaling, we have to read more pixels per line in
4686da83154d87 Boris Brezillon 2019-02-20  563  		 * the time frame reserved for a single line, so the bandwidth
4686da83154d87 Boris Brezillon 2019-02-20  564  		 * demand can be punctually higher. To account for that, we
4686da83154d87 Boris Brezillon 2019-02-20  565  		 * calculate the down-scaling factor and multiply the plane
4686da83154d87 Boris Brezillon 2019-02-20  566  		 * load by this number. We're likely over-estimating the read
4686da83154d87 Boris Brezillon 2019-02-20  567  		 * demand, but that's better than under-estimating it.
4686da83154d87 Boris Brezillon 2019-02-20  568  		 */
4686da83154d87 Boris Brezillon 2019-02-20  569  		vscale_factor = DIV_ROUND_UP(vc4_state->src_h[i],
4686da83154d87 Boris Brezillon 2019-02-20  570  					     vc4_state->crtc_h);
4686da83154d87 Boris Brezillon 2019-02-20  571  		vc4_state->membus_load += vc4_state->src_w[i] *
4686da83154d87 Boris Brezillon 2019-02-20  572  					  vc4_state->src_h[i] * vscale_factor *
4686da83154d87 Boris Brezillon 2019-02-20  573  					  fb->format->cpp[i];
4686da83154d87 Boris Brezillon 2019-02-20  574  		vc4_state->hvs_load += vc4_state->crtc_h * vc4_state->crtc_w;
4686da83154d87 Boris Brezillon 2019-02-20  575  	}
4686da83154d87 Boris Brezillon 2019-02-20  576  
4686da83154d87 Boris Brezillon 2019-02-20  577  	vc4_state->hvs_load *= vrefresh;
4686da83154d87 Boris Brezillon 2019-02-20  578  	vc4_state->hvs_load >>= hvs_load_shift;
4686da83154d87 Boris Brezillon 2019-02-20  579  	vc4_state->membus_load *= vrefresh;
4686da83154d87 Boris Brezillon 2019-02-20  580  }
4686da83154d87 Boris Brezillon 2019-02-20  581  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 52202 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210629/2af62e1b/attachment-0001.gz>


More information about the dri-devel mailing list