diff --git a/drivers/gpu/drm/radeon/evergreen_blit_kms.c b/drivers/gpu/drm/radeon/evergreen_blit_kms.c index 6d2c88f..00fafab 100644 --- a/drivers/gpu/drm/radeon/evergreen_blit_kms.c +++ b/drivers/gpu/drm/radeon/evergreen_blit_kms.c @@ -703,8 +703,8 @@ void evergreen_kms_blit_copy(struct radeon_device *rdev, int src_x = src_gpu_addr & 255; int dst_x = dst_gpu_addr & 255; int h = 1; - src_gpu_addr = src_gpu_addr & ~255; - dst_gpu_addr = dst_gpu_addr & ~255; + src_gpu_addr = src_gpu_addr & ~255ull; + dst_gpu_addr = dst_gpu_addr & ~255ull; if (!src_x && !dst_x) { h = (cur_size / max_bytes); @@ -775,8 +775,8 @@ void evergreen_kms_blit_copy(struct radeon_device *rdev, vb += 12; rdev->r600_blit.vb_used += 12 * 4; - src_gpu_addr += cur_size * h; - dst_gpu_addr += cur_size * h; + src_gpu_addr += (u64)(cur_size * h); + dst_gpu_addr += (u64)(cur_size * h); size_bytes -= cur_size * h; } } else { @@ -787,8 +787,8 @@ void evergreen_kms_blit_copy(struct radeon_device *rdev, int src_x = (src_gpu_addr & 255); int dst_x = (dst_gpu_addr & 255); int h = 1; - src_gpu_addr = src_gpu_addr & ~255; - dst_gpu_addr = dst_gpu_addr & ~255; + src_gpu_addr = src_gpu_addr & ~255ull; + dst_gpu_addr = dst_gpu_addr & ~255ull; if (!src_x && !dst_x) { h = (cur_size / max_bytes); @@ -859,8 +859,8 @@ void evergreen_kms_blit_copy(struct radeon_device *rdev, vb += 12; rdev->r600_blit.vb_used += 12 * 4; - src_gpu_addr += cur_size * h; - dst_gpu_addr += cur_size * h; + src_gpu_addr += (u64)(cur_size * h); + dst_gpu_addr += (u64)(cur_size * h); size_bytes -= cur_size * h; } } diff --git a/drivers/gpu/drm/radeon/r600_blit_kms.c b/drivers/gpu/drm/radeon/r600_blit_kms.c index 2a4747d..bba0061 100644 --- a/drivers/gpu/drm/radeon/r600_blit_kms.c +++ b/drivers/gpu/drm/radeon/r600_blit_kms.c @@ -661,8 +661,8 @@ void r600_kms_blit_copy(struct radeon_device *rdev, int src_x = src_gpu_addr & 255; int dst_x = dst_gpu_addr & 255; int h = 1; - src_gpu_addr = src_gpu_addr & ~255; - dst_gpu_addr = dst_gpu_addr & ~255; + src_gpu_addr = src_gpu_addr & ~255ull; + dst_gpu_addr = dst_gpu_addr & ~255ull; if (!src_x && !dst_x) { h = (cur_size / max_bytes); @@ -732,8 +732,8 @@ void r600_kms_blit_copy(struct radeon_device *rdev, vb += 12; rdev->r600_blit.vb_used += 12 * 4; - src_gpu_addr += cur_size * h; - dst_gpu_addr += cur_size * h; + src_gpu_addr += (u64)(cur_size * h); + dst_gpu_addr += (u64)(cur_size * h); size_bytes -= cur_size * h; } } else { @@ -744,8 +744,8 @@ void r600_kms_blit_copy(struct radeon_device *rdev, int src_x = (src_gpu_addr & 255); int dst_x = (dst_gpu_addr & 255); int h = 1; - src_gpu_addr = src_gpu_addr & ~255; - dst_gpu_addr = dst_gpu_addr & ~255; + src_gpu_addr = src_gpu_addr & ~255ull; + dst_gpu_addr = dst_gpu_addr & ~255ull; if (!src_x && !dst_x) { h = (cur_size / max_bytes); @@ -816,8 +816,8 @@ void r600_kms_blit_copy(struct radeon_device *rdev, vb += 12; rdev->r600_blit.vb_used += 12 * 4; - src_gpu_addr += cur_size * h; - dst_gpu_addr += cur_size * h; + src_gpu_addr += (u64)(cur_size * h); + dst_gpu_addr += (u64)(cur_size * h); size_bytes -= cur_size * h; } } diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 6d8c2a1..b384281 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -462,10 +462,10 @@ struct r600_blit { struct mutex mutex; struct radeon_bo *shader_obj; u64 shader_gpu_addr; - u32 vs_offset, ps_offset; - u32 state_offset; + u64 vs_offset, ps_offset; + u64 state_offset; u32 state_len; - u32 vb_used, vb_total; + u64 vb_used, vb_total; struct radeon_ib *vb_ib; };