mirror of https://gitee.com/openkylin/linux.git
drm/i915: Fix PM refcounting w/o DMC firmware
The case where the firmware isn't specified for a platform (although runtime PM works only with DMC on this platform) is the same case where the firmware is specified but can't be loaded for some reason. Hence we need to get a display init power domain ref in the first case too to keep the refcount bookkeeping in balance. Also convert the related log message to be a debug one, since it's a valid scenario for a new platform, where we need to have dev_info->has_csr=1 set, but add support for actually loading the firmware only later. v2: - In addition to the debug log, WARN on non-alpha support platforms, since then the first case isn't valid scenario. (Chris) References: https://bugs.freedesktop.org/show_bug.cgi?id=107382 Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Anusha Srivatsa <anusha.srivatsa@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20180815131038.24446-1-imre.deak@intel.com
This commit is contained in:
parent
a99b32a6ff
commit
ad3c776b17
|
@ -468,12 +468,6 @@ void intel_csr_ucode_init(struct drm_i915_private *dev_priv)
|
||||||
csr->fw_path = I915_CSR_SKL;
|
csr->fw_path = I915_CSR_SKL;
|
||||||
else if (IS_BROXTON(dev_priv))
|
else if (IS_BROXTON(dev_priv))
|
||||||
csr->fw_path = I915_CSR_BXT;
|
csr->fw_path = I915_CSR_BXT;
|
||||||
else {
|
|
||||||
DRM_ERROR("Unexpected: no known CSR firmware for platform\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DRM_DEBUG_KMS("Loading %s\n", csr->fw_path);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Obtain a runtime pm reference, until CSR is loaded,
|
* Obtain a runtime pm reference, until CSR is loaded,
|
||||||
|
@ -481,6 +475,14 @@ void intel_csr_ucode_init(struct drm_i915_private *dev_priv)
|
||||||
*/
|
*/
|
||||||
intel_display_power_get(dev_priv, POWER_DOMAIN_INIT);
|
intel_display_power_get(dev_priv, POWER_DOMAIN_INIT);
|
||||||
|
|
||||||
|
if (csr->fw_path == NULL) {
|
||||||
|
DRM_DEBUG_KMS("No known CSR firmware for platform, disabling runtime PM\n");
|
||||||
|
WARN_ON(!IS_ALPHA_SUPPORT(INTEL_INFO(dev_priv)));
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DRM_DEBUG_KMS("Loading %s\n", csr->fw_path);
|
||||||
schedule_work(&dev_priv->csr.work);
|
schedule_work(&dev_priv->csr.work);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue