[PATCH] drm/radeon/kms: bail on BTC parts if MC ucode is missing

Jean Delvare khali at linux-fr.org
Fri Dec 9 11:52:35 PST 2011


On Fri,  9 Dec 2011 11:31:54 -0500, alexdeucher at gmail.com wrote:
> From: Alex Deucher <alexander.deucher at amd.com>
> 
> We already do this for cayman, need to also do it for
> BTC parts.  The default memory and voltage setup is not
> adequate for advanced operation.  Continuing will
> result in an unusable display.
> 
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> Cc: stable at kernel.org
> Cc: Jean Delvare <khali at linux-fr.org>

Thanks Alex. I tested this fix and it works to some degree, but it
doesn't solve all the issues.

What works:
* No garbage on the screen.
* X falls back to the vesa driver.

What doesn't work:
* No console messages displayed.
* Trying to switch to a text console (e.g. Ctrl+Alt+F2) results in a
  permanent black screen, I couldn't return to X after that.

So there must be some more integration work needed, probably not in the
radeon driver but rather in the drm_fb layer. But anyway, the situation
is definitely better with this patch than without, so it should be
applied and go to stable trees too:

Tested-by: Jean Delvare <khali at linux-fr.org>

> ---
>  drivers/gpu/drm/radeon/evergreen.c |   12 ++++++++++++
>  1 files changed, 12 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
> index 3e8054c..93c0348 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -3468,6 +3468,18 @@ int evergreen_init(struct radeon_device *rdev)
>  		evergreen_pcie_gart_fini(rdev);
>  		rdev->accel_working = false;
>  	}
> +
> +	/* Don't start up if the MC ucode is missing on BTC parts.
> +	 * The default clocks and voltages before the MC ucode
> +	 * is loaded are not suffient for advanced operations.
> +	 */
> +	if (ASIC_IS_DCE5(rdev)) {
> +		if (!rdev->mc_fw && !(rdev->flags & RADEON_IS_IGP)) {
> +			DRM_ERROR("radeon: MC ucode required for NI+.\n");
> +			return -EINVAL;
> +		}
> +	}
> +
>  	return 0;
>  }
>  


-- 
Jean Delvare


More information about the dri-devel mailing list