forked from luck/tmp_suning_uos_patched
drm/radeon/kms: move blit initialization after we disabled VGA
VGA might be overwritting VRAM and corrupt our blit shader leading to corruption, it likely won't happen if you load fbcon right after radeon. Thanks to Shawn Starr and Andre Maasikas for tracking down this issue. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
17aafccab4
commit
c38c7b64a2
@ -1861,6 +1861,12 @@ int r600_startup(struct radeon_device *rdev)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
r600_gpu_init(rdev);
|
r600_gpu_init(rdev);
|
||||||
|
r = r600_blit_init(rdev);
|
||||||
|
if (r) {
|
||||||
|
r600_blit_fini(rdev);
|
||||||
|
rdev->asic->copy = NULL;
|
||||||
|
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
||||||
|
}
|
||||||
/* pin copy shader into vram */
|
/* pin copy shader into vram */
|
||||||
if (rdev->r600_blit.shader_obj) {
|
if (rdev->r600_blit.shader_obj) {
|
||||||
r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
|
r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
|
||||||
@ -2045,12 +2051,6 @@ int r600_init(struct radeon_device *rdev)
|
|||||||
r = r600_pcie_gart_init(rdev);
|
r = r600_pcie_gart_init(rdev);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
r = r600_blit_init(rdev);
|
|
||||||
if (r) {
|
|
||||||
r600_blit_fini(rdev);
|
|
||||||
rdev->asic->copy = NULL;
|
|
||||||
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
|
||||||
}
|
|
||||||
|
|
||||||
rdev->accel_working = true;
|
rdev->accel_working = true;
|
||||||
r = r600_startup(rdev);
|
r = r600_startup(rdev);
|
||||||
|
@ -887,6 +887,12 @@ static int rv770_startup(struct radeon_device *rdev)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
rv770_gpu_init(rdev);
|
rv770_gpu_init(rdev);
|
||||||
|
r = r600_blit_init(rdev);
|
||||||
|
if (r) {
|
||||||
|
r600_blit_fini(rdev);
|
||||||
|
rdev->asic->copy = NULL;
|
||||||
|
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
||||||
|
}
|
||||||
/* pin copy shader into vram */
|
/* pin copy shader into vram */
|
||||||
if (rdev->r600_blit.shader_obj) {
|
if (rdev->r600_blit.shader_obj) {
|
||||||
r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
|
r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
|
||||||
@ -1055,12 +1061,6 @@ int rv770_init(struct radeon_device *rdev)
|
|||||||
r = r600_pcie_gart_init(rdev);
|
r = r600_pcie_gart_init(rdev);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
r = r600_blit_init(rdev);
|
|
||||||
if (r) {
|
|
||||||
r600_blit_fini(rdev);
|
|
||||||
rdev->asic->copy = NULL;
|
|
||||||
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
|
||||||
}
|
|
||||||
|
|
||||||
rdev->accel_working = true;
|
rdev->accel_working = true;
|
||||||
r = rv770_startup(rdev);
|
r = rv770_startup(rdev);
|
||||||
|
Loading…
Reference in New Issue
Block a user