This is a note to let you know that I've just added the patch titled drm/radeon: always program the MC on startup to the 3.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: drm-radeon-always-program-the-mc-on-startup.patch and it can be found in the queue-3.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 6fab3febf6d949b0a12b1e4e73db38e4a177a79e Mon Sep 17 00:00:00 2001 From: Alex Deucher <alexander.deucher@xxxxxxx> Date: Sun, 4 Aug 2013 12:13:17 -0400 Subject: drm/radeon: always program the MC on startup From: Alex Deucher <alexander.deucher@xxxxxxx> commit 6fab3febf6d949b0a12b1e4e73db38e4a177a79e upstream. For r6xx+ asics. This mirrors the behavior of pre-r6xx asics. We need to program the MC even if something else in startup() fails. Failure to do so results in an unusable GPU. Based on a fix from: Mark Kettenis <kettenis@xxxxxxxxxxx> Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> [wml: Backported to 3.4: - adjust context - drop changes to cik.c] Signed-off-by: Weng Meiling <wengmeiling.weng@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/radeon/evergreen.c | 3 ++- drivers/gpu/drm/radeon/ni.c | 3 ++- drivers/gpu/drm/radeon/r600.c | 3 ++- drivers/gpu/drm/radeon/rv770.c | 3 ++- drivers/gpu/drm/radeon/si.c | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c @@ -3219,6 +3219,8 @@ static int evergreen_startup(struct rade /* enable pcie gen2 link */ evergreen_pcie_gen2_enable(rdev); + evergreen_mc_program(rdev); + if (ASIC_IS_DCE5(rdev)) { if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw || !rdev->mc_fw) { r = ni_init_microcode(rdev); @@ -3246,7 +3248,6 @@ static int evergreen_startup(struct rade if (r) return r; - evergreen_mc_program(rdev); if (rdev->flags & RADEON_IS_AGP) { evergreen_agp_enable(rdev); } else { --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c @@ -1552,6 +1552,8 @@ static int cayman_startup(struct radeon_ /* enable pcie gen2 link */ evergreen_pcie_gen2_enable(rdev); + evergreen_mc_program(rdev); + if (rdev->flags & RADEON_IS_IGP) { if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { r = ni_init_microcode(rdev); @@ -1580,7 +1582,6 @@ static int cayman_startup(struct radeon_ if (r) return r; - evergreen_mc_program(rdev); r = cayman_pcie_gart_enable(rdev); if (r) return r; --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c @@ -2431,6 +2431,8 @@ int r600_startup(struct radeon_device *r /* enable pcie gen2 link */ r600_pcie_gen2_enable(rdev); + r600_mc_program(rdev); + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { r = r600_init_microcode(rdev); if (r) { @@ -2443,7 +2445,6 @@ int r600_startup(struct radeon_device *r if (r) return r; - r600_mc_program(rdev); if (rdev->flags & RADEON_IS_AGP) { r600_agp_enable(rdev); } else { --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c @@ -1058,6 +1058,8 @@ static int rv770_startup(struct radeon_d /* enable pcie gen2 link */ rv770_pcie_gen2_enable(rdev); + rv770_mc_program(rdev); + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->rlc_fw) { r = r600_init_microcode(rdev); if (r) { @@ -1070,7 +1072,6 @@ static int rv770_startup(struct radeon_d if (r) return r; - rv770_mc_program(rdev); if (rdev->flags & RADEON_IS_AGP) { rv770_agp_enable(rdev); } else { --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c @@ -3834,6 +3834,8 @@ static int si_startup(struct radeon_devi struct radeon_ring *ring; int r; + si_mc_program(rdev); + if (!rdev->me_fw || !rdev->pfp_fw || !rdev->ce_fw || !rdev->rlc_fw || !rdev->mc_fw) { r = si_init_microcode(rdev); @@ -3853,7 +3855,6 @@ static int si_startup(struct radeon_devi if (r) return r; - si_mc_program(rdev); r = si_pcie_gart_enable(rdev); if (r) return r; Patches currently in stable-queue which might be from alexander.deucher@xxxxxxx are queue-3.4/drm-radeon-add-connector-table-for-mac-g4-silver.patch queue-3.4/drm-radeon-fix-atpx-detection-on-non-vga-gpus.patch queue-3.4/drm-radeon-cleanup-properly-if-mmio-mapping-fails.patch queue-3.4/drm-radeon-call-drm_edid_to_eld-when-we-update-the-edid.patch queue-3.4/drm-radeon-fix-amd-afusion-gpu-setup-aka-sumo-v2.patch queue-3.4/drm-radeon-dce32-use-fractional-fb-dividers-for-high-clocks.patch queue-3.4/drm-fix-documentation-for-drm_crtc_set_mode.patch queue-3.4/drm-radeon-fix-panel-scaling-with-edp-and-lvds-bridges.patch queue-3.4/drm-radeon-fix-hdmi-mode-enable-on-rs600-rs690-rs740.patch queue-3.4/drm-radeon-add-connector-table-for-sam440ep-embedded-board.patch queue-3.4/drm-radeon-fix-typo-in-evergreen_mc_resume.patch queue-3.4/drm-radeon-always-program-the-mc-on-startup.patch queue-3.4/drm-radeon-another-card-with-wrong-primary-dac-adj.patch queue-3.4/drm-radeon-use-frac-fb-div-on-rs780-rs880.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html