diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/r600_cs.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/r600_cs.c | 46 | 
1 files changed, 26 insertions, 20 deletions
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c index 7831e0890210..153095fba62f 100644 --- a/drivers/gpu/drm/radeon/r600_cs.c +++ b/drivers/gpu/drm/radeon/r600_cs.c @@ -295,17 +295,18 @@ static inline int r600_cs_track_validate_cb(struct radeon_cs_parser *p, int i)  	}  	if (!IS_ALIGNED(pitch, pitch_align)) { -		dev_warn(p->dev, "%s:%d cb pitch (%d) invalid\n", -			 __func__, __LINE__, pitch); +		dev_warn(p->dev, "%s:%d cb pitch (%d, 0x%x, %d) invalid\n", +			 __func__, __LINE__, pitch, pitch_align, array_mode);  		return -EINVAL;  	}  	if (!IS_ALIGNED(height, height_align)) { -		dev_warn(p->dev, "%s:%d cb height (%d) invalid\n", -			 __func__, __LINE__, height); +		dev_warn(p->dev, "%s:%d cb height (%d, 0x%x, %d) invalid\n", +			 __func__, __LINE__, height, height_align, array_mode);  		return -EINVAL;  	}  	if (!IS_ALIGNED(base_offset, base_align)) { -		dev_warn(p->dev, "%s offset[%d] 0x%llx not aligned\n", __func__, i, base_offset); +		dev_warn(p->dev, "%s offset[%d] 0x%llx 0x%llx, %d not aligned\n", __func__, i, +			 base_offset, base_align, array_mode);  		return -EINVAL;  	} @@ -320,7 +321,10 @@ static inline int r600_cs_track_validate_cb(struct radeon_cs_parser *p, int i)  			 * broken userspace.  			 */  		} else { -			dev_warn(p->dev, "%s offset[%d] %d %d %lu too big\n", __func__, i, track->cb_color_bo_offset[i], tmp, radeon_bo_size(track->cb_color_bo[i])); +			dev_warn(p->dev, "%s offset[%d] %d %d %d %lu too big\n", __func__, i, +				 array_mode, +				 track->cb_color_bo_offset[i], tmp, +				 radeon_bo_size(track->cb_color_bo[i]));  			return -EINVAL;  		}  	} @@ -455,17 +459,18 @@ static int r600_cs_track_check(struct radeon_cs_parser *p)  			}  			if (!IS_ALIGNED(pitch, pitch_align)) { -				dev_warn(p->dev, "%s:%d db pitch (%d) invalid\n", -					 __func__, __LINE__, pitch); +				dev_warn(p->dev, "%s:%d db pitch (%d, 0x%x, %d) invalid\n", +					 __func__, __LINE__, pitch, pitch_align, array_mode);  				return -EINVAL;  			}  			if (!IS_ALIGNED(height, height_align)) { -				dev_warn(p->dev, "%s:%d db height (%d) invalid\n", -					 __func__, __LINE__, height); +				dev_warn(p->dev, "%s:%d db height (%d, 0x%x, %d) invalid\n", +					 __func__, __LINE__, height, height_align, array_mode);  				return -EINVAL;  			}  			if (!IS_ALIGNED(base_offset, base_align)) { -				dev_warn(p->dev, "%s offset[%d] 0x%llx not aligned\n", __func__, i, base_offset); +				dev_warn(p->dev, "%s offset[%d] 0x%llx, 0x%llx, %d not aligned\n", __func__, i, +					 base_offset, base_align, array_mode);  				return -EINVAL;  			} @@ -473,9 +478,10 @@ static int r600_cs_track_check(struct radeon_cs_parser *p)  			nviews = G_028004_SLICE_MAX(track->db_depth_view) + 1;  			tmp = ntiles * bpe * 64 * nviews;  			if ((tmp + track->db_offset) > radeon_bo_size(track->db_bo)) { -				dev_warn(p->dev, "z/stencil buffer too small (0x%08X %d %d %d -> %u have %lu)\n", -						track->db_depth_size, ntiles, nviews, bpe, tmp + track->db_offset, -						radeon_bo_size(track->db_bo)); +				dev_warn(p->dev, "z/stencil buffer (%d) too small (0x%08X %d %d %d -> %u have %lu)\n", +					 array_mode, +					 track->db_depth_size, ntiles, nviews, bpe, tmp + track->db_offset, +					 radeon_bo_size(track->db_bo));  				return -EINVAL;  			}  		} @@ -1227,18 +1233,18 @@ static inline int r600_check_texture_resource(struct radeon_cs_parser *p,  u32 i  	/* XXX check height as well... */  	if (!IS_ALIGNED(pitch, pitch_align)) { -		dev_warn(p->dev, "%s:%d tex pitch (%d) invalid\n", -			 __func__, __LINE__, pitch); +		dev_warn(p->dev, "%s:%d tex pitch (%d, 0x%x, %d) invalid\n", +			 __func__, __LINE__, pitch, pitch_align, G_038000_TILE_MODE(word0));  		return -EINVAL;  	}  	if (!IS_ALIGNED(base_offset, base_align)) { -		dev_warn(p->dev, "%s:%d tex base offset (0x%llx) invalid\n", -			 __func__, __LINE__, base_offset); +		dev_warn(p->dev, "%s:%d tex base offset (0x%llx, 0x%llx, %d) invalid\n", +			 __func__, __LINE__, base_offset, base_align, G_038000_TILE_MODE(word0));  		return -EINVAL;  	}  	if (!IS_ALIGNED(mip_offset, base_align)) { -		dev_warn(p->dev, "%s:%d tex mip offset (0x%llx) invalid\n", -			 __func__, __LINE__, mip_offset); +		dev_warn(p->dev, "%s:%d tex mip offset (0x%llx, 0x%llx, %d) invalid\n", +			 __func__, __LINE__, mip_offset, base_align, G_038000_TILE_MODE(word0));  		return -EINVAL;  	}  | 
