CC: [email protected] BCC: [email protected] CC: [email protected] TO: Thomas Zimmermann <[email protected]> CC: Alex Deucher <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 68453767131a5deec1e8f9ac92a9042f929e585d commit: 43359786a51e7fa7d89a45908de0ecee2d1dafa6 drm/radeon: Move AGP data structures into radeon date: 10 months ago :::::: branch date: 6 hours ago :::::: commit date: 10 months ago config: parisc-randconfig-m031-20220310 (https://download.01.org/0day-ci/archive/20220312/[email protected]/config) compiler: hppa-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/gpu/drm/radeon/radeon_agp.c:338 radeon_agp_init() warn: should 'rdev->agp->agp_info.aper_size << 20' be a 64 bit type? vim +338 drivers/gpu/drm/radeon/radeon_agp.c 771fe6b912fca5 Jerome Glisse 2009-06-05 219 771fe6b912fca5 Jerome Glisse 2009-06-05 220 int radeon_agp_init(struct radeon_device *rdev) 771fe6b912fca5 Jerome Glisse 2009-06-05 221 { a7fb8a23c1afa6 Daniel Vetter 2015-09-09 222 #if IS_ENABLED(CONFIG_AGP) 771fe6b912fca5 Jerome Glisse 2009-06-05 223 struct radeon_agpmode_quirk *p = radeon_agpmode_quirk_list; 43359786a51e7f Thomas Zimmermann 2021-05-07 224 struct radeon_agp_mode mode; 43359786a51e7f Thomas Zimmermann 2021-05-07 225 struct radeon_agp_info info; 771fe6b912fca5 Jerome Glisse 2009-06-05 226 uint32_t agp_status; 771fe6b912fca5 Jerome Glisse 2009-06-05 227 int default_mode; 771fe6b912fca5 Jerome Glisse 2009-06-05 228 bool is_v3; 771fe6b912fca5 Jerome Glisse 2009-06-05 229 int ret; 771fe6b912fca5 Jerome Glisse 2009-06-05 230 771fe6b912fca5 Jerome Glisse 2009-06-05 231 /* Acquire AGP. */ 43359786a51e7f Thomas Zimmermann 2021-05-07 232 ret = radeon_agp_head_acquire(rdev); 771fe6b912fca5 Jerome Glisse 2009-06-05 233 if (ret) { 771fe6b912fca5 Jerome Glisse 2009-06-05 234 DRM_ERROR("Unable to acquire AGP: %d\n", ret); 771fe6b912fca5 Jerome Glisse 2009-06-05 235 return ret; 771fe6b912fca5 Jerome Glisse 2009-06-05 236 } 771fe6b912fca5 Jerome Glisse 2009-06-05 237 43359786a51e7f Thomas Zimmermann 2021-05-07 238 ret = radeon_agp_head_info(rdev, &info); 771fe6b912fca5 Jerome Glisse 2009-06-05 239 if (ret) { 43359786a51e7f Thomas Zimmermann 2021-05-07 240 radeon_agp_head_release(rdev); 771fe6b912fca5 Jerome Glisse 2009-06-05 241 DRM_ERROR("Unable to get AGP info: %d\n", ret); 771fe6b912fca5 Jerome Glisse 2009-06-05 242 return ret; 771fe6b912fca5 Jerome Glisse 2009-06-05 243 } 2dea2e29b9fad4 John Kacur 2010-01-31 244 43359786a51e7f Thomas Zimmermann 2021-05-07 245 if (rdev->agp->agp_info.aper_size < 32) { 43359786a51e7f Thomas Zimmermann 2021-05-07 246 radeon_agp_head_release(rdev); 2dea2e29b9fad4 John Kacur 2010-01-31 247 dev_warn(rdev->dev, "AGP aperture too small (%zuM) " 2dea2e29b9fad4 John Kacur 2010-01-31 248 "need at least 32M, disabling AGP\n", 43359786a51e7f Thomas Zimmermann 2021-05-07 249 rdev->agp->agp_info.aper_size); 2dea2e29b9fad4 John Kacur 2010-01-31 250 return -EINVAL; 2dea2e29b9fad4 John Kacur 2010-01-31 251 } 2dea2e29b9fad4 John Kacur 2010-01-31 252 771fe6b912fca5 Jerome Glisse 2009-06-05 253 mode.mode = info.mode; e57415d85f72e3 Alex Deucher 2010-08-18 254 /* chips with the agp to pcie bridge don't have the AGP_STATUS register e57415d85f72e3 Alex Deucher 2010-08-18 255 * Just use the whatever mode the host sets up. e57415d85f72e3 Alex Deucher 2010-08-18 256 */ e57415d85f72e3 Alex Deucher 2010-08-18 257 if (rdev->family <= CHIP_RV350) 771fe6b912fca5 Jerome Glisse 2009-06-05 258 agp_status = (RREG32(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode.mode; e57415d85f72e3 Alex Deucher 2010-08-18 259 else e57415d85f72e3 Alex Deucher 2010-08-18 260 agp_status = mode.mode; 771fe6b912fca5 Jerome Glisse 2009-06-05 261 is_v3 = !!(agp_status & RADEON_AGPv3_MODE); 771fe6b912fca5 Jerome Glisse 2009-06-05 262 771fe6b912fca5 Jerome Glisse 2009-06-05 263 if (is_v3) { 771fe6b912fca5 Jerome Glisse 2009-06-05 264 default_mode = (agp_status & RADEON_AGPv3_8X_MODE) ? 8 : 4; 771fe6b912fca5 Jerome Glisse 2009-06-05 265 } else { 771fe6b912fca5 Jerome Glisse 2009-06-05 266 if (agp_status & RADEON_AGP_4X_MODE) { 771fe6b912fca5 Jerome Glisse 2009-06-05 267 default_mode = 4; 771fe6b912fca5 Jerome Glisse 2009-06-05 268 } else if (agp_status & RADEON_AGP_2X_MODE) { 771fe6b912fca5 Jerome Glisse 2009-06-05 269 default_mode = 2; 771fe6b912fca5 Jerome Glisse 2009-06-05 270 } else { 771fe6b912fca5 Jerome Glisse 2009-06-05 271 default_mode = 1; 771fe6b912fca5 Jerome Glisse 2009-06-05 272 } 771fe6b912fca5 Jerome Glisse 2009-06-05 273 } 771fe6b912fca5 Jerome Glisse 2009-06-05 274 771fe6b912fca5 Jerome Glisse 2009-06-05 275 /* Apply AGPMode Quirks */ 771fe6b912fca5 Jerome Glisse 2009-06-05 276 while (p && p->chip_device != 0) { 771fe6b912fca5 Jerome Glisse 2009-06-05 277 if (info.id_vendor == p->hostbridge_vendor && 771fe6b912fca5 Jerome Glisse 2009-06-05 278 info.id_device == p->hostbridge_device && 771fe6b912fca5 Jerome Glisse 2009-06-05 279 rdev->pdev->vendor == p->chip_vendor && 771fe6b912fca5 Jerome Glisse 2009-06-05 280 rdev->pdev->device == p->chip_device && 771fe6b912fca5 Jerome Glisse 2009-06-05 281 rdev->pdev->subsystem_vendor == p->subsys_vendor && 771fe6b912fca5 Jerome Glisse 2009-06-05 282 rdev->pdev->subsystem_device == p->subsys_device) { 771fe6b912fca5 Jerome Glisse 2009-06-05 283 default_mode = p->default_mode; 771fe6b912fca5 Jerome Glisse 2009-06-05 284 } 771fe6b912fca5 Jerome Glisse 2009-06-05 285 ++p; 771fe6b912fca5 Jerome Glisse 2009-06-05 286 } 771fe6b912fca5 Jerome Glisse 2009-06-05 287 771fe6b912fca5 Jerome Glisse 2009-06-05 288 if (radeon_agpmode > 0) { 771fe6b912fca5 Jerome Glisse 2009-06-05 289 if ((radeon_agpmode < (is_v3 ? 4 : 1)) || 771fe6b912fca5 Jerome Glisse 2009-06-05 290 (radeon_agpmode > (is_v3 ? 8 : 4)) || 771fe6b912fca5 Jerome Glisse 2009-06-05 291 (radeon_agpmode & (radeon_agpmode - 1))) { 771fe6b912fca5 Jerome Glisse 2009-06-05 292 DRM_ERROR("Illegal AGP Mode: %d (valid %s), leaving at %d\n", 771fe6b912fca5 Jerome Glisse 2009-06-05 293 radeon_agpmode, is_v3 ? "4, 8" : "1, 2, 4", 771fe6b912fca5 Jerome Glisse 2009-06-05 294 default_mode); 771fe6b912fca5 Jerome Glisse 2009-06-05 295 radeon_agpmode = default_mode; 771fe6b912fca5 Jerome Glisse 2009-06-05 296 } else { 771fe6b912fca5 Jerome Glisse 2009-06-05 297 DRM_INFO("AGP mode requested: %d\n", radeon_agpmode); 771fe6b912fca5 Jerome Glisse 2009-06-05 298 } 771fe6b912fca5 Jerome Glisse 2009-06-05 299 } else { 771fe6b912fca5 Jerome Glisse 2009-06-05 300 radeon_agpmode = default_mode; 771fe6b912fca5 Jerome Glisse 2009-06-05 301 } 771fe6b912fca5 Jerome Glisse 2009-06-05 302 771fe6b912fca5 Jerome Glisse 2009-06-05 303 mode.mode &= ~RADEON_AGP_MODE_MASK; 771fe6b912fca5 Jerome Glisse 2009-06-05 304 if (is_v3) { 771fe6b912fca5 Jerome Glisse 2009-06-05 305 switch (radeon_agpmode) { 771fe6b912fca5 Jerome Glisse 2009-06-05 306 case 8: 771fe6b912fca5 Jerome Glisse 2009-06-05 307 mode.mode |= RADEON_AGPv3_8X_MODE; 771fe6b912fca5 Jerome Glisse 2009-06-05 308 break; 771fe6b912fca5 Jerome Glisse 2009-06-05 309 case 4: 771fe6b912fca5 Jerome Glisse 2009-06-05 310 default: 771fe6b912fca5 Jerome Glisse 2009-06-05 311 mode.mode |= RADEON_AGPv3_4X_MODE; 771fe6b912fca5 Jerome Glisse 2009-06-05 312 break; 771fe6b912fca5 Jerome Glisse 2009-06-05 313 } 771fe6b912fca5 Jerome Glisse 2009-06-05 314 } else { 771fe6b912fca5 Jerome Glisse 2009-06-05 315 switch (radeon_agpmode) { 771fe6b912fca5 Jerome Glisse 2009-06-05 316 case 4: 771fe6b912fca5 Jerome Glisse 2009-06-05 317 mode.mode |= RADEON_AGP_4X_MODE; 771fe6b912fca5 Jerome Glisse 2009-06-05 318 break; 771fe6b912fca5 Jerome Glisse 2009-06-05 319 case 2: 771fe6b912fca5 Jerome Glisse 2009-06-05 320 mode.mode |= RADEON_AGP_2X_MODE; 771fe6b912fca5 Jerome Glisse 2009-06-05 321 break; 771fe6b912fca5 Jerome Glisse 2009-06-05 322 case 1: 771fe6b912fca5 Jerome Glisse 2009-06-05 323 default: 771fe6b912fca5 Jerome Glisse 2009-06-05 324 mode.mode |= RADEON_AGP_1X_MODE; 771fe6b912fca5 Jerome Glisse 2009-06-05 325 break; 771fe6b912fca5 Jerome Glisse 2009-06-05 326 } 771fe6b912fca5 Jerome Glisse 2009-06-05 327 } 771fe6b912fca5 Jerome Glisse 2009-06-05 328 771fe6b912fca5 Jerome Glisse 2009-06-05 329 mode.mode &= ~RADEON_AGP_FW_MODE; /* disable fw */ 43359786a51e7f Thomas Zimmermann 2021-05-07 330 ret = radeon_agp_head_enable(rdev, mode); 771fe6b912fca5 Jerome Glisse 2009-06-05 331 if (ret) { 771fe6b912fca5 Jerome Glisse 2009-06-05 332 DRM_ERROR("Unable to enable AGP (mode = 0x%lx)\n", mode.mode); 43359786a51e7f Thomas Zimmermann 2021-05-07 333 radeon_agp_head_release(rdev); 771fe6b912fca5 Jerome Glisse 2009-06-05 334 return ret; 771fe6b912fca5 Jerome Glisse 2009-06-05 335 } 771fe6b912fca5 Jerome Glisse 2009-06-05 336 43359786a51e7f Thomas Zimmermann 2021-05-07 337 rdev->mc.agp_base = rdev->agp->agp_info.aper_base; 43359786a51e7f Thomas Zimmermann 2021-05-07 @338 rdev->mc.gtt_size = rdev->agp->agp_info.aper_size << 20; d594e46ace22af Jerome Glisse 2010-02-17 339 rdev->mc.gtt_start = rdev->mc.agp_base; d594e46ace22af Jerome Glisse 2010-02-17 340 rdev->mc.gtt_end = rdev->mc.gtt_start + rdev->mc.gtt_size - 1; d594e46ace22af Jerome Glisse 2010-02-17 341 dev_info(rdev->dev, "GTT: %lluM 0x%08llX - 0x%08llX\n", d594e46ace22af Jerome Glisse 2010-02-17 342 rdev->mc.gtt_size >> 20, rdev->mc.gtt_start, rdev->mc.gtt_end); 771fe6b912fca5 Jerome Glisse 2009-06-05 343 771fe6b912fca5 Jerome Glisse 2009-06-05 344 /* workaround some hw issues */ 771fe6b912fca5 Jerome Glisse 2009-06-05 345 if (rdev->family < CHIP_R200) { 771fe6b912fca5 Jerome Glisse 2009-06-05 346 WREG32(RADEON_AGP_CNTL, RREG32(RADEON_AGP_CNTL) | 0x000e0000); 771fe6b912fca5 Jerome Glisse 2009-06-05 347 } 771fe6b912fca5 Jerome Glisse 2009-06-05 348 return 0; 771fe6b912fca5 Jerome Glisse 2009-06-05 349 #else 771fe6b912fca5 Jerome Glisse 2009-06-05 350 return 0; 771fe6b912fca5 Jerome Glisse 2009-06-05 351 #endif 771fe6b912fca5 Jerome Glisse 2009-06-05 352 } 771fe6b912fca5 Jerome Glisse 2009-06-05 353 --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
