[radeon-alex:drm-next-4.16-wip 105/117] drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:119:21: sparse: cast removes address space of expression

kbuild test robot fengguang.wu at intel.com
Sat Dec 16 01:23:50 UTC 2017


tree:   git://people.freedesktop.org/~agd5f/linux.git drm-next-4.16-wip
head:   8f003334f9f06d5a4c03c3d966ba258d770b97f4
commit: b8e7f06f8cc17c9f978987c9b98886f6e338a506 [105/117] drm/amdgpu: move debugfs functions to their own file
reproduce:
        # apt-get install sparse
        git checkout b8e7f06f8cc17c9f978987c9b98886f6e338a506
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)


vim +119 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c

    66	
    67	static ssize_t amdgpu_debugfs_regs_read(struct file *f, char __user *buf,
    68						size_t size, loff_t *pos)
    69	{
    70		struct amdgpu_device *adev = file_inode(f)->i_private;
    71		ssize_t result = 0;
    72		int r;
    73		bool pm_pg_lock, use_bank;
    74		unsigned instance_bank, sh_bank, se_bank;
    75	
    76		if (size & 0x3 || *pos & 0x3)
    77			return -EINVAL;
    78	
    79		/* are we reading registers for which a PG lock is necessary? */
    80		pm_pg_lock = (*pos >> 23) & 1;
    81	
    82		if (*pos & (1ULL << 62)) {
    83			se_bank = (*pos & GENMASK_ULL(33, 24)) >> 24;
    84			sh_bank = (*pos & GENMASK_ULL(43, 34)) >> 34;
    85			instance_bank = (*pos & GENMASK_ULL(53, 44)) >> 44;
    86	
    87			if (se_bank == 0x3FF)
    88				se_bank = 0xFFFFFFFF;
    89			if (sh_bank == 0x3FF)
    90				sh_bank = 0xFFFFFFFF;
    91			if (instance_bank == 0x3FF)
    92				instance_bank = 0xFFFFFFFF;
    93			use_bank = 1;
    94		} else {
    95			use_bank = 0;
    96		}
    97	
    98		*pos &= (1UL << 22) - 1;
    99	
   100		if (use_bank) {
   101			if ((sh_bank != 0xFFFFFFFF && sh_bank >= adev->gfx.config.max_sh_per_se) ||
   102			    (se_bank != 0xFFFFFFFF && se_bank >= adev->gfx.config.max_shader_engines))
   103				return -EINVAL;
   104			mutex_lock(&adev->grbm_idx_mutex);
   105			amdgpu_gfx_select_se_sh(adev, se_bank,
   106						sh_bank, instance_bank);
   107		}
   108	
   109		if (pm_pg_lock)
   110			mutex_lock(&adev->pm.mutex);
   111	
   112		while (size) {
   113			uint32_t value;
   114	
   115			if (*pos > adev->rmmio_size)
   116				goto end;
   117	
   118			value = RREG32(*pos >> 2);
 > 119			r = put_user(value, (uint32_t *)buf);
   120			if (r) {
   121				result = r;
   122				goto end;
   123			}
   124	
   125			result += 4;
   126			buf += 4;
   127			*pos += 4;
   128			size -= 4;
   129		}
   130	
   131	end:
   132		if (use_bank) {
   133			amdgpu_gfx_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
   134			mutex_unlock(&adev->grbm_idx_mutex);
   135		}
   136	
   137		if (pm_pg_lock)
   138			mutex_unlock(&adev->pm.mutex);
   139	
   140		return result;
   141	}
   142	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation


More information about the dri-devel mailing list