David,
As you know, Debian and Ubuntu (and others?) opted to use 2.6.32 as the basis for a stable release but to take DRM from 2.6.33. Now that the stable 2.6.33 series is over, we need some other means to communicate the most important bug fixes for DRM that should go into these distributions. Do you have any suggestions for how we should to this? Could you maintain a drm-2.6.33 branch?
Ben.
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@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@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@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@gmail.com Date: Wed Aug 4 11:40:00 2010 -0400
drm/radeon: add new pci ids
commit 4c70b2eae371ebe83019ac47de6088b78124ab36 Author: Alex Deucher alexdeucher@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@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@gmail.com Cc: stable@kernel.org Signed-off-by: Dave Airlie airlied@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.
On 08/08/2010 07:25 AM, Ben Hutchings wrote:
David,
As you know, Debian and Ubuntu (and others?) opted to use 2.6.32 as the basis for a stable release but to take DRM from 2.6.33. Now that the stable 2.6.33 series is over, we need some other means to communicate the most important bug fixes for DRM that should go into these distributions. Do you have any suggestions for how we should to this? Could you maintain a drm-2.6.33 branch?
Ben.
Hi Ben,
actually I am already maintaining a branch which combines the 2.6.32.y tree with a 2.6.33 base of drm which I now moved forward to have .34 patches of drm included. I intended to go ahead like Greg does for .27 and get as much of the later stable patches back into that tree. If I miss something, please let me know.
-Stefan
http://git.kernel.org/?p=linux/kernel/git/smb/linux-2.6.32.y-drm33.z.git;a=s...
dri-devel@lists.freedesktop.org