public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* [agd5f:drm-next 358/374] drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c:713:12: warning: stack frame size (2992) exceeds limit (2048) in 'vcn_v5_0_0_start'
@ 2024-02-13 18:52 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-02-13 18:52 UTC (permalink / raw)
  To: Sonny Jiang; +Cc: llvm, oe-kbuild-all, Alex Deucher, Leo Liu

tree:   https://gitlab.freedesktop.org/agd5f/linux.git drm-next
head:   ce311df91d73eaddc5489d4d63fb96c21e80f7cf
commit: b6d1a06320519ac3bfda6ce81067a1bc409b9cff [358/374] drm/amdgpu: add VCN_5_0_0 IP block support
config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20240214/202402140203.PIO7EJSa-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project c08b90c50bcac9f3f563c79491c8dbcbe7c3b574)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240214/202402140203.PIO7EJSa-lkp@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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402140203.PIO7EJSa-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c:713:12: warning: stack frame size (2992) exceeds limit (2048) in 'vcn_v5_0_0_start' [-Wframe-larger-than]
     713 | static int vcn_v5_0_0_start(struct amdgpu_device *adev)
         |            ^
   1 warning generated.


vim +/vcn_v5_0_0_start +713 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c

   705	
   706	/**
   707	 * vcn_v5_0_0_start - VCN start
   708	 *
   709	 * @adev: amdgpu_device pointer
   710	 *
   711	 * Start VCN block
   712	 */
 > 713	static int vcn_v5_0_0_start(struct amdgpu_device *adev)
   714	{
   715		volatile struct amdgpu_vcn4_fw_shared *fw_shared;
   716		struct amdgpu_ring *ring;
   717		uint32_t tmp;
   718		int i, j, k, r;
   719	
   720		if (adev->pm.dpm_enabled)
   721			amdgpu_dpm_enable_uvd(adev, true);
   722	
   723		for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
   724			fw_shared = adev->vcn.inst[i].fw_shared.cpu_addr;
   725	
   726			if (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG) {
   727				r = vcn_v5_0_0_start_dpg_mode(adev, i, adev->vcn.indirect_sram);
   728				continue;
   729			}
   730	
   731			/* disable VCN power gating */
   732			vcn_v5_0_0_disable_static_power_gating(adev, i);
   733	
   734			/* set VCN status busy */
   735			tmp = RREG32_SOC15(VCN, i, regUVD_STATUS) | UVD_STATUS__UVD_BUSY;
   736			WREG32_SOC15(VCN, i, regUVD_STATUS, tmp);
   737	
   738			/* enable VCPU clock */
   739			WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_VCPU_CNTL),
   740				UVD_VCPU_CNTL__CLK_EN_MASK, ~UVD_VCPU_CNTL__CLK_EN_MASK);
   741	
   742			/* disable master interrupt */
   743			WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_MASTINT_EN), 0,
   744				~UVD_MASTINT_EN__VCPU_EN_MASK);
   745	
   746			/* enable LMI MC and UMC channels */
   747			WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_LMI_CTRL2), 0,
   748				~UVD_LMI_CTRL2__STALL_ARB_UMC_MASK);
   749	
   750			tmp = RREG32_SOC15(VCN, i, regUVD_SOFT_RESET);
   751			tmp &= ~UVD_SOFT_RESET__LMI_SOFT_RESET_MASK;
   752			tmp &= ~UVD_SOFT_RESET__LMI_UMC_SOFT_RESET_MASK;
   753			WREG32_SOC15(VCN, i, regUVD_SOFT_RESET, tmp);
   754	
   755			/* setup regUVD_LMI_CTRL */
   756			tmp = RREG32_SOC15(VCN, i, regUVD_LMI_CTRL);
   757			WREG32_SOC15(VCN, i, regUVD_LMI_CTRL, tmp |
   758				UVD_LMI_CTRL__WRITE_CLEAN_TIMER_EN_MASK |
   759				UVD_LMI_CTRL__MASK_MC_URGENT_MASK |
   760				UVD_LMI_CTRL__DATA_COHERENCY_EN_MASK |
   761				UVD_LMI_CTRL__VCPU_DATA_COHERENCY_EN_MASK);
   762	
   763			vcn_v5_0_0_mc_resume(adev, i);
   764	
   765			/* VCN global tiling registers */
   766			WREG32_SOC15(VCN, i, regUVD_GFX10_ADDR_CONFIG,
   767				adev->gfx.config.gb_addr_config);
   768	
   769			/* unblock VCPU register access */
   770			WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_RB_ARB_CTRL), 0,
   771				~UVD_RB_ARB_CTRL__VCPU_DIS_MASK);
   772	
   773			/* release VCPU reset to boot */
   774			WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_VCPU_CNTL), 0,
   775				~UVD_VCPU_CNTL__BLK_RST_MASK);
   776	
   777			for (j = 0; j < 10; ++j) {
   778				uint32_t status;
   779	
   780				for (k = 0; k < 100; ++k) {
   781					status = RREG32_SOC15(VCN, i, regUVD_STATUS);
   782					if (status & 2)
   783						break;
   784					mdelay(10);
   785					if (amdgpu_emu_mode == 1)
   786						msleep(1);
   787				}
   788	
   789				if (amdgpu_emu_mode == 1) {
   790					r = -1;
   791					if (status & 2) {
   792						r = 0;
   793						break;
   794					}
   795				} else {
   796					r = 0;
   797					if (status & 2)
   798						break;
   799	
   800					dev_err(adev->dev,
   801						"VCN[%d] is not responding, trying to reset the VCPU!!!\n", i);
   802					WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_VCPU_CNTL),
   803								UVD_VCPU_CNTL__BLK_RST_MASK,
   804								~UVD_VCPU_CNTL__BLK_RST_MASK);
   805					mdelay(10);
   806					WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_VCPU_CNTL), 0,
   807								~UVD_VCPU_CNTL__BLK_RST_MASK);
   808	
   809					mdelay(10);
   810					r = -1;
   811				}
   812			}
   813	
   814			if (r) {
   815				dev_err(adev->dev, "VCN[%d] is not responding, giving up!!!\n", i);
   816				return r;
   817			}
   818	
   819			/* enable master interrupt */
   820			WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_MASTINT_EN),
   821					UVD_MASTINT_EN__VCPU_EN_MASK,
   822					~UVD_MASTINT_EN__VCPU_EN_MASK);
   823	
   824			/* clear the busy bit of VCN_STATUS */
   825			WREG32_P(SOC15_REG_OFFSET(VCN, i, regUVD_STATUS), 0,
   826				~(2 << UVD_STATUS__VCPU_REPORT__SHIFT));
   827	
   828			ring = &adev->vcn.inst[i].ring_enc[0];
   829			WREG32_SOC15(VCN, i, regVCN_RB1_DB_CTRL,
   830				ring->doorbell_index << VCN_RB1_DB_CTRL__OFFSET__SHIFT |
   831				VCN_RB1_DB_CTRL__EN_MASK);
   832	
   833			WREG32_SOC15(VCN, i, regUVD_RB_BASE_LO, ring->gpu_addr);
   834			WREG32_SOC15(VCN, i, regUVD_RB_BASE_HI, upper_32_bits(ring->gpu_addr));
   835			WREG32_SOC15(VCN, i, regUVD_RB_SIZE, ring->ring_size / 4);
   836	
   837			tmp = RREG32_SOC15(VCN, i, regVCN_RB_ENABLE);
   838			tmp &= ~(VCN_RB_ENABLE__RB1_EN_MASK);
   839			WREG32_SOC15(VCN, i, regVCN_RB_ENABLE, tmp);
   840			fw_shared->sq.queue_mode |= FW_QUEUE_RING_RESET;
   841			WREG32_SOC15(VCN, i, regUVD_RB_RPTR, 0);
   842			WREG32_SOC15(VCN, i, regUVD_RB_WPTR, 0);
   843	
   844			tmp = RREG32_SOC15(VCN, i, regUVD_RB_RPTR);
   845			WREG32_SOC15(VCN, i, regUVD_RB_WPTR, tmp);
   846			ring->wptr = RREG32_SOC15(VCN, i, regUVD_RB_WPTR);
   847	
   848			tmp = RREG32_SOC15(VCN, i, regVCN_RB_ENABLE);
   849			tmp |= VCN_RB_ENABLE__RB1_EN_MASK;
   850			WREG32_SOC15(VCN, i, regVCN_RB_ENABLE, tmp);
   851			fw_shared->sq.queue_mode &= ~(FW_QUEUE_RING_RESET | FW_QUEUE_DPG_HOLD_OFF);
   852		}
   853	
   854		return 0;
   855	}
   856	

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-02-13 18:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-13 18:52 [agd5f:drm-next 358/374] drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c:713:12: warning: stack frame size (2992) exceeds limit (2048) in 'vcn_v5_0_0_start' kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox