Hi Kuogee, kernel test robot noticed the following build warnings: [auto build test WARNING on drm-misc/drm-misc-next] [also build test WARNING 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: arm64-defconfig (https://download.01.org/0day-ci/archive/20231130/202311302230.t6X5rroJ-lkp@xxxxxxxxx/config) compiler: aarch64-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231130/202311302230.t6X5rroJ-lkp@xxxxxxxxx/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 <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202311302230.t6X5rroJ-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c: In function '_dpu_rm_reserve_dsc': >> drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c:537:38: warning: assignment to 'uint32_t' {aka 'unsigned int'} from 'void *' makes integer from pointer without a cast [-Wint-conversion] 537 | pp_to_enc_id[pp_idx] = NULL; | ^ 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