lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <201603192322.nZw9Brk2%fengguang.wu@intel.com>
Date:	Sat, 19 Mar 2016 23:25:26 +0800
From:	kbuild test robot <fengguang.wu@...el.com>
To:	Alex Deucher <alexander.deucher@....com>
Cc:	kbuild-all@...org, linux-kernel@...r.kernel.org,
	Christian König <christian.koenig@....com>
Subject: drivers/gpu/drm/radeon/vce_v1_0.c:181:25: sparse: cast to restricted
 __le32

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   6b5f04b6cf8ebab9a65d9c0026c650bb2538fd0f
commit: cc78eb22885bba64445cde438ba098de0104920f drm/radeon: properly byte swap vce firmware setup
date:   8 weeks ago
reproduce:
        # apt-get install sparse
        git checkout cc78eb22885bba64445cde438ba098de0104920f
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> drivers/gpu/drm/radeon/vce_v1_0.c:181:25: sparse: cast to restricted __le32
   drivers/gpu/drm/radeon/vce_v1_0.c:182:21: sparse: cast to restricted __le32
   drivers/gpu/drm/radeon/vce_v1_0.c:186:18: sparse: cast to restricted __le32
   drivers/gpu/drm/radeon/vce_v1_0.c:194:19: sparse: cast to restricted __le32
>> drivers/gpu/drm/radeon/vce_v1_0.c:194:17: sparse: incorrect type in assignment (different base types)
   drivers/gpu/drm/radeon/vce_v1_0.c:194:17:    expected unsigned int [unsigned] [usertype] <noident>
   drivers/gpu/drm/radeon/vce_v1_0.c:194:17:    got restricted __le32 [usertype] <noident>
   drivers/gpu/drm/radeon/vce_v1_0.c:199:17: sparse: cast to restricted __le32
   drivers/gpu/drm/radeon/vce_v1_0.c:205:31: sparse: cast to restricted __le32

vim +181 drivers/gpu/drm/radeon/vce_v1_0.c

    96		if (ring->idx == TN_RING_TYPE_VCE1_INDEX)
    97			WREG32(VCE_RB_WPTR, ring->wptr);
    98		else
    99			WREG32(VCE_RB_WPTR2, ring->wptr);
   100	}
   101	
 > 102	void vce_v1_0_enable_mgcg(struct radeon_device *rdev, bool enable)
   103	{
   104		u32 tmp;
   105	
   106		if (enable && (rdev->cg_flags & RADEON_CG_SUPPORT_VCE_MGCG)) {
   107			tmp = RREG32(VCE_CLOCK_GATING_A);
   108			tmp |= CGC_DYN_CLOCK_MODE;
   109			WREG32(VCE_CLOCK_GATING_A, tmp);
   110	
   111			tmp = RREG32(VCE_UENC_CLOCK_GATING);
   112			tmp &= ~0x1ff000;
   113			tmp |= 0xff800000;
   114			WREG32(VCE_UENC_CLOCK_GATING, tmp);
   115	
   116			tmp = RREG32(VCE_UENC_REG_CLOCK_GATING);
   117			tmp &= ~0x3ff;
   118			WREG32(VCE_UENC_REG_CLOCK_GATING, tmp);
   119		} else {
   120			tmp = RREG32(VCE_CLOCK_GATING_A);
   121			tmp &= ~CGC_DYN_CLOCK_MODE;
   122			WREG32(VCE_CLOCK_GATING_A, tmp);
   123	
   124			tmp = RREG32(VCE_UENC_CLOCK_GATING);
   125			tmp |= 0x1ff000;
   126			tmp &= ~0xff800000;
   127			WREG32(VCE_UENC_CLOCK_GATING, tmp);
   128	
   129			tmp = RREG32(VCE_UENC_REG_CLOCK_GATING);
   130			tmp |= 0x3ff;
   131			WREG32(VCE_UENC_REG_CLOCK_GATING, tmp);
   132		}
   133	}
   134	
   135	static void vce_v1_0_init_cg(struct radeon_device *rdev)
   136	{
   137		u32 tmp;
   138	
   139		tmp = RREG32(VCE_CLOCK_GATING_A);
   140		tmp |= CGC_DYN_CLOCK_MODE;
   141		WREG32(VCE_CLOCK_GATING_A, tmp);
   142	
   143		tmp = RREG32(VCE_CLOCK_GATING_B);
   144		tmp |= 0x1e;
   145		tmp &= ~0xe100e1;
   146		WREG32(VCE_CLOCK_GATING_B, tmp);
   147	
   148		tmp = RREG32(VCE_UENC_CLOCK_GATING);
   149		tmp &= ~0xff9ff000;
   150		WREG32(VCE_UENC_CLOCK_GATING, tmp);
   151	
   152		tmp = RREG32(VCE_UENC_REG_CLOCK_GATING);
   153		tmp &= ~0x3ff;
   154		WREG32(VCE_UENC_REG_CLOCK_GATING, tmp);
   155	}
   156	
   157	int vce_v1_0_load_fw(struct radeon_device *rdev, uint32_t *data)
   158	{
   159		struct vce_v1_0_fw_signature *sign = (void*)rdev->vce_fw->data;
   160		uint32_t chip_id;
   161		int i;
   162	
   163		switch (rdev->family) {
   164		case CHIP_TAHITI:
   165			chip_id = 0x01000014;
   166			break;
   167		case CHIP_VERDE:
   168			chip_id = 0x01000015;
   169			break;
   170		case CHIP_PITCAIRN:
   171		case CHIP_OLAND:
   172			chip_id = 0x01000016;
   173			break;
   174		case CHIP_ARUBA:
   175			chip_id = 0x01000017;
   176			break;
   177		default:
   178			return -EINVAL;
   179		}
   180	
 > 181		for (i = 0; i < le32_to_cpu(sign->num); ++i) {
   182			if (le32_to_cpu(sign->val[i].chip_id) == chip_id)
   183				break;
   184		}
   185	
   186		if (i == le32_to_cpu(sign->num))
   187			return -EINVAL;
   188	
   189		data += (256 - 64) / 4;
   190		data[0] = sign->val[i].nonce[0];
   191		data[1] = sign->val[i].nonce[1];
   192		data[2] = sign->val[i].nonce[2];
   193		data[3] = sign->val[i].nonce[3];
 > 194		data[4] = cpu_to_le32(le32_to_cpu(sign->len) + 64);
   195	
   196		memset(&data[5], 0, 44);
   197		memcpy(&data[16], &sign[1], rdev->vce_fw->size - sizeof(*sign));

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ