Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c38c7b64 authored by Jerome Glisse's avatar Jerome Glisse Committed by Dave Airlie
Browse files

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: default avatarJerome Glisse <jglisse@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 17aafcca
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1861,6 +1861,12 @@ int r600_startup(struct radeon_device *rdev)
			return r;
	}
	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 */
	if (rdev->r600_blit.shader_obj) {
		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);
	if (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;
	r = r600_startup(rdev);
+6 −6
Original line number Diff line number Diff line
@@ -887,6 +887,12 @@ static int rv770_startup(struct radeon_device *rdev)
			return r;
	}
	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 */
	if (rdev->r600_blit.shader_obj) {
		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);
	if (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;
	r = rv770_startup(rdev);