DRM stable updates beyond 2.6.33.6

Ben Hutchings ben at decadent.org.uk
Sat Aug 7 22:39:36 PDT 2010


In the short term: I found that the DRM fixes in 2.6.34.3-rc1 all seem
to be applicable to Debian.  We have DRM from 2.6.33 plus Dave's
backport of Radeon Evergreen support; full gory details at:

    git://git.debian.org/kernel/linux-2.6.git squeeze

Please advise if any of these are not applicable.

commit a1efd14a99483a4fb9308902397ed86b69454c99
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jul 12 19:35:38 2010 +0100

    drm/i915: Check overlay stride errata for i830 and i845

commit 812d046915f48236657f02c06d7dc47140e9ceda
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Mon Jul 26 18:51:53 2010 -0400

    drm/radeon/kms/r7xx: add workaround for hw issue with HDP flush

commit 2e98f10a7a87ebae4dcc3949028a32008b46ceef
Author: Dave Airlie <airlied at redhat.com>
Date:   Mon Feb 15 15:54:45 2010 +1000

    drm/radeon/kms: flush HDP cache on GART table updates.

This is not in 2.6.34.3-rc1 but is necessary for the previous patch.

commit 1297c05a8dfb568c689f057d51a65eebe5ddc86f
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Wed Aug 4 11:40:00 2010 -0400

    drm/radeon: add new pci ids

commit 4c70b2eae371ebe83019ac47de6088b78124ab36
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Mon Aug 2 19:39:15 2010 -0400

    drm/radeon/kms/igp: sideport is AMD only

This required some massaging; here's the backported version:

From: Alex Deucher <alexdeucher at gmail.com>
Date: Mon, 2 Aug 2010 19:39:15 -0400
Subject: [PATCH] drm/radeon/kms/igp: sideport is AMD only

commit 4c70b2eae371ebe83019ac47de6088b78124ab36 upstream.

Intel variants don't support it.

Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
Cc: stable at kernel.org
Signed-off-by: Dave Airlie <airlied at redhat.com>
[bwh: Backport to 2.6.33]
---
 drivers/gpu/drm/radeon/radeon_atombios.c |   15 ++++++---------
 drivers/gpu/drm/radeon/radeon_combios.c  |    4 ++++
 drivers/gpu/drm/radeon/rs600.c           |    1 -
 drivers/gpu/drm/radeon/rs690.c           |    2 +-
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
index d3d6d86..44f00b6 100644
--- a/drivers/gpu/drm/radeon/radeon_atombios.c
+++ b/drivers/gpu/drm/radeon/radeon_atombios.c
@@ -1002,6 +1002,10 @@ bool radeon_atombios_sideport_present(struct radeon_device *rdev)
 	u8 frev, crev;
 	u16 data_offset;
 
+	/* sideport is AMD only */
+	if (rdev->family == CHIP_RS600)
+		return false;
+
 	atom_parse_data_header(mode_info->atom_context, index, NULL, &frev,
 			       &crev, &data_offset);
 
@@ -1011,15 +1015,8 @@ bool radeon_atombios_sideport_present(struct radeon_device *rdev)
 	if (igp_info) {
 		switch (crev) {
 		case 1:
-			/* AMD IGPS */
-			if ((rdev->family == CHIP_RS690) ||
-			    (rdev->family == CHIP_RS740)) {
-				if (igp_info->info.ulBootUpMemoryClock)
-					return true;
-			} else {
-				if (igp_info->info.ucMemoryType & 0xf0)
-					return true;
-			}
+			if (igp_info->info.ulBootUpMemoryClock)
+				return true;
 			break;
 		case 2:
 			if (igp_info->info_2.ucMemoryType & 0x0f)
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
index f611123..f357585 100644
--- a/drivers/gpu/drm/radeon/radeon_combios.c
+++ b/drivers/gpu/drm/radeon/radeon_combios.c
@@ -601,6 +601,10 @@ bool radeon_combios_sideport_present(struct radeon_device *rdev)
 	struct drm_device *dev = rdev->ddev;
 	u16 igp_info;
 
+	/* sideport is AMD only */
+	if (rdev->family == CHIP_RS400)
+		return false;
+
 	igp_info = combios_get_table_offset(dev, COMBIOS_INTEGRATED_SYSTEM_INFO_TABLE);
 
 	if (igp_info) {
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
index a27c09f..d9a0187 100644
--- a/drivers/gpu/drm/radeon/rs600.c
+++ b/drivers/gpu/drm/radeon/rs600.c
@@ -56,7 +56,6 @@ int rs600_mc_init(struct radeon_device *rdev)
 	rdev->mc.vram_location = G_000004_MC_FB_START(tmp) << 16;
 	rdev->mc.gtt_location = 0xffffffffUL;
 	r = radeon_mc_setup(rdev);
-	rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
 	if (r)
 		return r;
 	return 0;
diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c
index 06e2771..eb4816f 100644
--- a/drivers/gpu/drm/radeon/rs690.c
+++ b/drivers/gpu/drm/radeon/rs690.c
@@ -150,6 +150,7 @@ void rs690_vram_info(struct radeon_device *rdev)
 	if (rdev->mc.real_vram_size > rdev->mc.aper_size)
 		rdev->mc.real_vram_size = rdev->mc.aper_size;
 
+	rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
 	rs690_pm_info(rdev);
 	/* FIXME: we should enforce default clock in case GPU is not in
 	 * default setup
@@ -172,7 +173,6 @@ static int rs690_mc_init(struct radeon_device *rdev)
 	rdev->mc.vram_location = G_000100_MC_FB_START(tmp) << 16;
 	rdev->mc.gtt_location = 0xFFFFFFFFUL;
 	r = radeon_mc_setup(rdev);
-	rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
 	if (r)
 		return r;
 	return 0;
--

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 828 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20100808/ed98cc1a/attachment.pgp>


More information about the dri-devel mailing list