Hi Kuogee,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm/drm-next drm-exynos/exynos-drm-next 
drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip 
linus/master v6.7-rc3 next-20231130]
[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#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Kuogee-Hsieh/drm-msm-dpu-improve-DSC-allocation/20231130-064646
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    
https://lore.kernel.org/r/1701289898-12235-1-git-send-email-quic_khsieh%40quicinc.com
patch subject: [PATCH v1] drm/msm/dpu: improve DSC allocation
config: powerpc-allmodconfig 
(https://download.01.org/0day-ci/archive/20231130/202311302309.nprfdawm-...@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 
4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20231130/202311302309.nprfdawm-...@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202311302309.nprfdawm-...@intel.com/

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c:537:24: error: incompatible pointer 
>> to integer conversion assigning to 'uint32_t' (aka 'unsigned int') from 
>> 'void *' [-Wint-conversion]
     537 |                 pp_to_enc_id[pp_idx] = NULL;
         |                                      ^ ~~~~
   1 error generated.


vim +537 drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c

   463  
   464  static int _dpu_rm_reserve_dsc(struct dpu_rm *rm,
   465                                 struct dpu_global_state *global_state,
   466                                 struct drm_encoder *enc,
   467                                 const struct msm_display_topology *top)
   468  {
   469          int num_dsc = 0;
   470          int i, pp_idx;
   471          bool pair = false;
   472          int dsc_idx[DSC_MAX - DSC_0];
   473          uint32_t pp_to_enc_id[PINGPONG_MAX - PINGPONG_0];
   474          int pp_max = PINGPONG_MAX - PINGPONG_0;
   475  
   476          if (!top->num_dsc || !top->num_intf)
   477                  return 0;
   478  
   479          /*
   480           * Truth:
   481           * 1) every layer mixer only connects to one pingpong
   482           * 2) no pingpong split -- two layer mixers shared one pingpong
   483           * 3) each DSC engine contains two dsc encoders
   484           *    -- index(0,1), index (2,3),... etc
   485           * 4) dsc pair can only happens with same DSC engine except 4 
dsc
   486           *    merge mode application (8k) which need two DSC engines
   487           * 5) odd pingpong connect to odd dsc
   488           * 6) even pingpong connect even dsc
   489           */
   490  
   491          /* num_dsc should be either 1, 2 or 4 */
   492          if (top->num_dsc > top->num_intf)       /* merge mode */
   493                  pair = true;
   494  
   495          /* fill working copy with pingpong list */
   496          memcpy(pp_to_enc_id, global_state->pingpong_to_enc_id, 
sizeof(pp_to_enc_id));
   497  
   498          for (i = 0; i < ARRAY_SIZE(rm->dsc_blks); i++) {
   499                  if (!rm->dsc_blks[i])   /* end of dsc list */
   500                          break;
   501  
   502                  if (global_state->dsc_to_enc_id[i]) {   /* used */
   503                          /* consective dsc index to be paired */
   504                          if (pair && num_dsc) {  /* already start 
pairing, re start */
   505                                  num_dsc = 0;
   506                                  /* fill working copy with pingpong list 
*/
   507                                  memcpy(pp_to_enc_id, 
global_state->pingpong_to_enc_id,
   508                                                                  
sizeof(pp_to_enc_id));
   509                          }
   510                          continue;
   511                  }
   512  
   513                  /* odd index can not become start of pairing */
   514                  if (pair && (i & 0x01) && !num_dsc)
   515                          continue;
   516  
   517                  /*
   518                   * find the pingpong index which had been reserved
   519                   * previously at layer mixer allocation
   520                   */
   521                  for (pp_idx = 0; pp_idx < pp_max; pp_idx++) {
   522                          if (pp_to_enc_id[pp_idx] == enc->base.id)
   523                                  break;
   524                  }
   525  
   526                  /*
   527                   * dsc even index must map to pingpong even index
   528                   * dsc odd index must map to pingpong odd index
   529                   */
   530                  if ((i & 0x01) != (pp_idx & 0x01))
   531                          continue;
   532  
   533                  /*
   534                   * delete pp_idx so that it can not be found at next 
search
   535                   * in the case of pairing
   536                   */
 > 537                  pp_to_enc_id[pp_idx] = NULL;
   538  
   539                  dsc_idx[num_dsc++] = i;
   540                  if (num_dsc >= top->num_dsc)
   541                          break;
   542          }
   543  
   544          if (num_dsc < top->num_dsc) {
   545                  DPU_ERROR("DSC allocation failed num_dsc=%d 
required=%d\n",
   546                                                  num_dsc, top->num_dsc );
   547                  return -ENAVAIL;
   548          }
   549  
   550          /* reserve dsc */
   551          for (i = 0; i < top->num_dsc; i++) {
   552                  int j;
   553  
   554                  j = dsc_idx[i];
   555                  global_state->dsc_to_enc_id[j] = enc->base.id;
   556          }
   557  
   558          return 0;
   559  }
   560  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to