All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 1091/3131] drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:830:43: sparse: sparse: invalid assignment: |=
@ 2026-09-02 19:27 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-02 19:27 UTC (permalink / raw)
  To: Bokun Zhang; +Cc: oe-kbuild-all, Alex Deucher

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   32b6ef9a5d0eca44f9cd91f52f4faa89f145a0de
commit: 98ba50b2ef1397635ff03091b396b93d0850d50a [1091/3131] drm/amdgpu: Add VCN v5.0.2 SRIOV code path
config: um-randconfig-r134-20260902 (https://download.01.org/0day-ci/archive/20260903/202609030309.Brgg9wSf-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260903/202609030309.Brgg9wSf-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/202609030309.Brgg9wSf-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:830:43: sparse: sparse: invalid assignment: |=
   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:830:43: sparse:    left side has type unsigned int
   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:830:43: sparse:    right side has type restricted __le32
   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:90:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] present_flag_0 @@     got restricted __le32 [usertype] @@
   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:90:35: sparse:     expected unsigned int [usertype] present_flag_0
   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:90:35: sparse:     got restricted __le32 [usertype]
   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:358:16: sparse: sparse: cast to restricted __le32
   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:423:16: sparse: sparse: cast to restricted __le32

vim +830 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c

   707	
   708	
   709	/**
   710	 * vcn_v5_0_2_start_sriov - VCN start under SRIOV env
   711	 */
   712	
   713	static int vcn_v5_0_2_start_sriov(struct amdgpu_device *adev)
   714	{
   715		int i, vcn_inst;
   716		struct amdgpu_ring *ring_enc;
   717		uint64_t cache_addr;
   718		uint64_t rb_enc_addr;
   719		uint64_t ctx_addr;
   720		uint32_t param, resp, expected;
   721		uint32_t offset, cache_size;
   722		uint32_t tmp, timeout;
   723	
   724		struct amdgpu_mm_table *table = &adev->virt.mm_table;
   725		uint32_t *table_loc;
   726		uint32_t table_size;
   727		uint32_t size, size_dw;
   728		uint32_t init_status;
   729	
   730		struct mmsch_v5_0_cmd_direct_write
   731			direct_wt = { {0} };
   732		struct mmsch_v5_0_cmd_direct_read_modify_write
   733			direct_rd_mod_wt = { {0} };
   734		struct mmsch_v5_0_cmd_end end = { {0} };
   735		struct mmsch_v5_0_init_header header;
   736	
   737		struct amdgpu_vcn5_fw_shared *fw_shared;
   738		struct amdgpu_fw_shared_rb_setup *rb_setup;
   739	
   740		direct_wt.cmd_header.command_type =
   741			MMSCH_COMMAND__DIRECT_REG_WRITE;
   742		direct_rd_mod_wt.cmd_header.command_type =
   743			MMSCH_COMMAND__DIRECT_REG_READ_MODIFY_WRITE;
   744		end.cmd_header.command_type = MMSCH_COMMAND__END;
   745	
   746		for (i = 0; i < adev->vcn.num_vcn_inst; i++) {
   747			vcn_inst = GET_INST(VCN, i);
   748	
   749			vcn_v5_0_2_fw_shared_init(adev, vcn_inst);
   750	
   751			memset(&header, 0, sizeof(struct mmsch_v5_0_init_header));
   752			header.version = MMSCH_VERSION;
   753			header.total_size = sizeof(struct mmsch_v5_0_init_header) >> 2;
   754	
   755			table_loc = (uint32_t *)table->cpu_addr;
   756			table_loc += header.total_size;
   757	
   758			table_size = 0;
   759	
   760			MMSCH_V5_0_INSERT_DIRECT_RD_MOD_WT(SOC15_REG_OFFSET(VCN, 0, regUVD_STATUS),
   761				~UVD_STATUS__UVD_BUSY, UVD_STATUS__UVD_BUSY);
   762	
   763			cache_size = AMDGPU_GPU_PAGE_ALIGN(adev->vcn.inst[i].fw->size + 4);
   764	
   765			if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
   766				MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   767					regUVD_LMI_VCPU_CACHE_64BIT_BAR_LOW),
   768					adev->firmware.ucode[AMDGPU_UCODE_ID_VCN + i].tmr_mc_addr_lo);
   769	
   770				MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   771					regUVD_LMI_VCPU_CACHE_64BIT_BAR_HIGH),
   772					adev->firmware.ucode[AMDGPU_UCODE_ID_VCN + i].tmr_mc_addr_hi);
   773	
   774				offset = 0;
   775				MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   776					regUVD_VCPU_CACHE_OFFSET0), 0);
   777			} else {
   778				MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   779					regUVD_LMI_VCPU_CACHE_64BIT_BAR_LOW),
   780					lower_32_bits(adev->vcn.inst[i].gpu_addr));
   781				MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   782					regUVD_LMI_VCPU_CACHE_64BIT_BAR_HIGH),
   783					upper_32_bits(adev->vcn.inst[i].gpu_addr));
   784			offset = cache_size;
   785				MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   786					regUVD_VCPU_CACHE_OFFSET0),
   787					AMDGPU_UVD_FIRMWARE_OFFSET >> 3);
   788			}
   789	
   790			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   791				regUVD_VCPU_CACHE_SIZE0),
   792				cache_size);
   793	
   794			cache_addr = adev->vcn.inst[vcn_inst].gpu_addr + offset;
   795			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   796				regUVD_LMI_VCPU_CACHE1_64BIT_BAR_LOW), lower_32_bits(cache_addr));
   797			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   798				regUVD_LMI_VCPU_CACHE1_64BIT_BAR_HIGH), upper_32_bits(cache_addr));
   799			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   800				regUVD_VCPU_CACHE_OFFSET1), 0);
   801			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   802				regUVD_VCPU_CACHE_SIZE1), AMDGPU_VCN_STACK_SIZE);
   803	
   804			cache_addr = adev->vcn.inst[vcn_inst].gpu_addr + offset +
   805				AMDGPU_VCN_STACK_SIZE;
   806	
   807			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   808				regUVD_LMI_VCPU_CACHE2_64BIT_BAR_LOW), lower_32_bits(cache_addr));
   809	
   810			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   811			regUVD_LMI_VCPU_CACHE2_64BIT_BAR_HIGH), upper_32_bits(cache_addr));
   812	
   813			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   814				regUVD_VCPU_CACHE_OFFSET2), 0);
   815	
   816			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   817				regUVD_VCPU_CACHE_SIZE2), AMDGPU_VCN_CONTEXT_SIZE);
   818	
   819			fw_shared = adev->vcn.inst[vcn_inst].fw_shared.cpu_addr;
   820			rb_setup = &fw_shared->rb_setup;
   821	
   822			ring_enc = &adev->vcn.inst[vcn_inst].ring_enc[0];
   823			ring_enc->wptr = 0;
   824			rb_enc_addr = ring_enc->gpu_addr;
   825	
   826			rb_setup->is_rb_enabled_flags |= RB_ENABLED;
   827			rb_setup->rb_addr_lo = lower_32_bits(rb_enc_addr);
   828			rb_setup->rb_addr_hi = upper_32_bits(rb_enc_addr);
   829			rb_setup->rb_size = ring_enc->ring_size / 4;
 > 830			fw_shared->present_flag_0 |= cpu_to_le32(AMDGPU_VCN_VF_RB_SETUP_FLAG);
   831	
   832			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   833				regUVD_LMI_VCPU_NC0_64BIT_BAR_LOW),
   834				lower_32_bits(adev->vcn.inst[vcn_inst].fw_shared.gpu_addr));
   835			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   836				regUVD_LMI_VCPU_NC0_64BIT_BAR_HIGH),
   837				upper_32_bits(adev->vcn.inst[vcn_inst].fw_shared.gpu_addr));
   838			MMSCH_V5_0_INSERT_DIRECT_WT(SOC15_REG_OFFSET(VCN, 0,
   839				regUVD_VCPU_NONCACHE_SIZE0),
   840				AMDGPU_GPU_PAGE_ALIGN(sizeof(struct amdgpu_vcn4_fw_shared)));
   841			MMSCH_V5_0_INSERT_END();
   842	
   843			header.vcn0.init_status = 0;
   844			header.vcn0.table_offset = header.total_size;
   845			header.vcn0.table_size = table_size;
   846			header.total_size += table_size;
   847	
   848			/* Send init table to mmsch */
   849			size = sizeof(struct mmsch_v5_0_init_header);
   850			table_loc = (uint32_t *)table->cpu_addr;
   851			memcpy((void *)table_loc, &header, size);
   852	
   853			ctx_addr = table->gpu_addr;
   854			WREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_CTX_ADDR_LO, lower_32_bits(ctx_addr));
   855			WREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_CTX_ADDR_HI, upper_32_bits(ctx_addr));
   856	
   857			tmp = RREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_VMID);
   858			tmp &= ~MMSCH_VF_VMID__VF_CTX_VMID_MASK;
   859			tmp |= (0 << MMSCH_VF_VMID__VF_CTX_VMID__SHIFT);
   860			WREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_VMID, tmp);
   861	
   862			size = header.total_size;
   863			WREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_CTX_SIZE, size);
   864	
   865			WREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_MAILBOX_RESP, 0);
   866	
   867			param = 0x00000001;
   868			WREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_MAILBOX_HOST, param);
   869			tmp = 0;
   870			timeout = amdgpu_emu_mode ? 1000000 : 1000;
   871			resp = 0;
   872			expected = MMSCH_VF_MAILBOX_RESP__OK;
   873			while (resp != expected) {
   874				resp = RREG32_SOC15(VCN, vcn_inst, regMMSCH_VF_MAILBOX_RESP);
   875				if (resp != 0)
   876					break;
   877	
   878				udelay(10);
   879				tmp = tmp + 10;
   880				if (tmp >= timeout) {
   881					DRM_ERROR("failed to init MMSCH. TIME-OUT after %d usec"\
   882						" waiting for regMMSCH_VF_MAILBOX_RESP "\
   883						"(expected=0x%08x, readback=0x%08x)\n",
   884						tmp, expected, resp);
   885					return -EBUSY;
   886				}
   887			}
   888	
   889			init_status = ((struct mmsch_v5_0_init_header *)(table_loc))->vcn0.init_status;
   890			if (resp != expected && resp != MMSCH_VF_MAILBOX_RESP__INCOMPLETE
   891						&& init_status != MMSCH_VF_ENGINE_STATUS__PASS) {
   892				DRM_ERROR("MMSCH init status is incorrect! readback=0x%08x, header init "\
   893					"status for VCN%x: 0x%x\n", resp, vcn_inst, init_status);
   894			}
   895		}
   896	
   897		return 0;
   898	}
   899	

--
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:[~2026-09-02 19:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-02 19:27 [linux-next:master 1091/3131] drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c:830:43: sparse: sparse: invalid assignment: |= kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.