[Intel-gfx] [PATCH 3/7] drm/i915/skl: Refuse to load outdated dmc firmware
Chris Wilson
chris at chris-wilson.co.uk
Wed Oct 21 08:46:10 PDT 2015
On Wed, Oct 21, 2015 at 06:41:48PM +0300, Mika Kuoppala wrote:
> There is known issue on GT interrupt delivery with DC6 and
> firmwares <1.21. There is a suspicion that this causes
> spurious gpu hangs on driver init and with some workloads,
> as upgrading the firmware to 1.21 makes these problems
> disappear.
>
> As of now the current version included in distribution
> firmware packages is very like to be 1.19. Play it safe and
> refuse to load a firmware version that may affect gpu
> side stability.
>
> With < 1.23 there is a palette and dmc ram corruption issue
> so blacklist anything below that.
>
> v2: Refuse to load fw instead of notifying the user
> v3: Rebase on header version changes
> v4: Refuse to load anything less than 1.23
>
> Cc: Animesh Manna <animesh.manna at intel.com>
> Cc: Jani Nikula <jani.nikula at linux.intel.com>
> Cc: Dave Gordon <david.s.gordon at intel.com>
> Cc: Arun Siluvery <arun.siluvery at linux.intel.com>
> Cc: Imre Deak <imre.deak at intel.com>
> Cc: Patrik Jakobsson <patrik.jakobsson at linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi at gmail.com>
> References: https://01.org/linuxgraphics/downloads/skldmcver121
> References: https://01.org/linuxgraphics/downloads/skylake-dmc-1.23
> Testcase: igt/gem_exec_nop
> Signed-off-by: Mika Kuoppala <mika.kuoppala at intel.com>
> ---
> drivers/gpu/drm/i915/intel_csr.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
> index cabcc51..85261d4 100644
> --- a/drivers/gpu/drm/i915/intel_csr.c
> +++ b/drivers/gpu/drm/i915/intel_csr.c
> @@ -47,6 +47,9 @@
> MODULE_FIRMWARE(I915_CSR_SKL);
> MODULE_FIRMWARE(I915_CSR_BXT);
>
> +#define SKL_REQUIRED_FW_MAJOR 1
> +#define SKL_REQUIRED_FW_MINOR 23
> +
> /*
> * SKL CSR registers for DC5 and DC6
> */
> @@ -401,6 +404,14 @@ static void finish_csr_load(const struct firmware *fw, void *context)
> dmc_payload = csr->dmc_payload;
> memcpy(dmc_payload, &fw->data[readcount], nbytes);
>
> + if (IS_SKYLAKE(dev) &&
> + (CSR_VERSION_MAJOR(csr->version) < SKL_REQUIRED_FW_MAJOR ||
> + CSR_VERSION_MINOR(csr->version) < SKL_REQUIRED_FW_MINOR)) {
> + DRM_INFO("Outdated dmc firmware found, please upgrade to %u.%u or newer\n",
> + SKL_REQUIRED_FW_MAJOR, SKL_REQUIRED_FW_MINOR);
Please include the filename that should be updated. The first think the
user will do is copy-and-paste it into google, so we need to provide
enough information for the search results to return the right package.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list