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

Commit 0088dbdb authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size



Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 722f2943
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -306,9 +306,7 @@ int rs600_mc_wait_for_idle(struct radeon_device *rdev)


void rs600_gpu_init(struct radeon_device *rdev)
void rs600_gpu_init(struct radeon_device *rdev)
{
{
	/* FIXME: HDP same place on rs600 ? */
	r100_hdp_reset(rdev);
	r100_hdp_reset(rdev);
	/* FIXME: is this correct ? */
	r420_pipes_init(rdev);
	r420_pipes_init(rdev);
	/* Wait for mc idle */
	/* Wait for mc idle */
	if (rs600_mc_wait_for_idle(rdev))
	if (rs600_mc_wait_for_idle(rdev))
@@ -317,7 +315,6 @@ void rs600_gpu_init(struct radeon_device *rdev)


void rs600_vram_info(struct radeon_device *rdev)
void rs600_vram_info(struct radeon_device *rdev)
{
{
	/* FIXME: to do or is these values sane ? */
	rdev->mc.vram_is_ddr = true;
	rdev->mc.vram_is_ddr = true;
	rdev->mc.vram_width = 128;
	rdev->mc.vram_width = 128;


@@ -326,6 +323,12 @@ void rs600_vram_info(struct radeon_device *rdev)


	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);

	if (rdev->mc.mc_vram_size > rdev->mc.aper_size)
		rdev->mc.mc_vram_size = rdev->mc.aper_size;

	if (rdev->mc.real_vram_size > rdev->mc.aper_size)
		rdev->mc.real_vram_size = rdev->mc.aper_size;
}
}


void rs600_bandwidth_update(struct radeon_device *rdev)
void rs600_bandwidth_update(struct radeon_device *rdev)
+8 −1
Original line number Original line Diff line number Diff line
@@ -134,7 +134,7 @@ void rs690_vram_info(struct radeon_device *rdev)
	fixed20_12 a;
	fixed20_12 a;


	rs400_gart_adjust_size(rdev);
	rs400_gart_adjust_size(rdev);
	/* DDR for all card after R300 & IGP */

	rdev->mc.vram_is_ddr = true;
	rdev->mc.vram_is_ddr = true;
	rdev->mc.vram_width = 128;
	rdev->mc.vram_width = 128;


@@ -143,6 +143,13 @@ void rs690_vram_info(struct radeon_device *rdev)


	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
	rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
	rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);

	if (rdev->mc.mc_vram_size > rdev->mc.aper_size)
		rdev->mc.mc_vram_size = rdev->mc.aper_size;

	if (rdev->mc.real_vram_size > rdev->mc.aper_size)
		rdev->mc.real_vram_size = rdev->mc.aper_size;

	rs690_pm_info(rdev);
	rs690_pm_info(rdev);
	/* FIXME: we should enforce default clock in case GPU is not in
	/* FIXME: we should enforce default clock in case GPU is not in
	 * default setup
	 * default setup