drm/i915/uc: Consider enable_guc modparam during fw selection
We can use value of enable_guc modparam during firmware path selection and start using firmware status to see if GuC/HuC is being used. This is first step to make enable_guc modparam read-only. v2: rebased, don't care about <0 (Chris) v3: oops Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20190731223321.36436-3-michal.wajdeczko@intel.com
This commit is contained in:
parent
57a68c3507
commit
db81bc6eb9
@ -172,6 +172,11 @@ int intel_guc_suspend(struct intel_guc *guc);
|
|||||||
int intel_guc_resume(struct intel_guc *guc);
|
int intel_guc_resume(struct intel_guc *guc);
|
||||||
struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size);
|
struct i915_vma *intel_guc_allocate_vma(struct intel_guc *guc, u32 size);
|
||||||
|
|
||||||
|
static inline bool intel_guc_is_supported(struct intel_guc *guc)
|
||||||
|
{
|
||||||
|
return intel_uc_fw_supported(&guc->fw);
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool intel_guc_is_running(struct intel_guc *guc)
|
static inline bool intel_guc_is_running(struct intel_guc *guc)
|
||||||
{
|
{
|
||||||
return intel_uc_fw_is_running(&guc->fw);
|
return intel_uc_fw_is_running(&guc->fw);
|
||||||
|
@ -55,6 +55,11 @@ static inline int intel_huc_sanitize(struct intel_huc *huc)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool intel_huc_is_supported(struct intel_huc *huc)
|
||||||
|
{
|
||||||
|
return intel_uc_fw_supported(&huc->fw);
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool intel_huc_is_authenticated(struct intel_huc *huc)
|
static inline bool intel_huc_is_authenticated(struct intel_huc *huc)
|
||||||
{
|
{
|
||||||
return intel_uc_fw_is_running(&huc->fw);
|
return intel_uc_fw_is_running(&huc->fw);
|
||||||
|
@ -51,8 +51,7 @@ int intel_uc_runtime_resume(struct intel_uc *uc);
|
|||||||
|
|
||||||
static inline bool intel_uc_supports_guc(struct intel_uc *uc)
|
static inline bool intel_uc_supports_guc(struct intel_uc *uc)
|
||||||
{
|
{
|
||||||
GEM_BUG_ON(i915_modparams.enable_guc < 0);
|
return intel_guc_is_supported(&uc->guc);
|
||||||
return i915_modparams.enable_guc > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool intel_uc_supports_guc_submission(struct intel_uc *uc)
|
static inline bool intel_uc_supports_guc_submission(struct intel_uc *uc)
|
||||||
@ -63,8 +62,7 @@ static inline bool intel_uc_supports_guc_submission(struct intel_uc *uc)
|
|||||||
|
|
||||||
static inline bool intel_uc_supports_huc(struct intel_uc *uc)
|
static inline bool intel_uc_supports_huc(struct intel_uc *uc)
|
||||||
{
|
{
|
||||||
GEM_BUG_ON(i915_modparams.enable_guc < 0);
|
return intel_huc_is_supported(&uc->huc);
|
||||||
return i915_modparams.enable_guc & ENABLE_GUC_LOAD_HUC;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -132,6 +132,25 @@ __uc_fw_auto_select(struct intel_uc_fw *uc_fw, enum intel_platform p, u8 rev)
|
|||||||
uc_fw->path = NULL;
|
uc_fw->path = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We don't want to enable GuC/HuC on pre-Gen11 by default */
|
||||||
|
if (i915_modparams.enable_guc == -1 && p < INTEL_ICELAKE)
|
||||||
|
uc_fw->path = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *__override_guc_firmware_path(void)
|
||||||
|
{
|
||||||
|
if (i915_modparams.enable_guc & (ENABLE_GUC_SUBMISSION |
|
||||||
|
ENABLE_GUC_LOAD_HUC))
|
||||||
|
return i915_modparams.guc_firmware_path;
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *__override_huc_firmware_path(void)
|
||||||
|
{
|
||||||
|
if (i915_modparams.enable_guc & ENABLE_GUC_LOAD_HUC)
|
||||||
|
return i915_modparams.huc_firmware_path;
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
@ -139,10 +158,10 @@ __uc_fw_override(struct intel_uc_fw *uc_fw)
|
|||||||
{
|
{
|
||||||
switch (uc_fw->type) {
|
switch (uc_fw->type) {
|
||||||
case INTEL_UC_FW_TYPE_GUC:
|
case INTEL_UC_FW_TYPE_GUC:
|
||||||
uc_fw->path = i915_modparams.guc_firmware_path;
|
uc_fw->path = __override_guc_firmware_path();
|
||||||
break;
|
break;
|
||||||
case INTEL_UC_FW_TYPE_HUC:
|
case INTEL_UC_FW_TYPE_HUC:
|
||||||
uc_fw->path = i915_modparams.huc_firmware_path;
|
uc_fw->path = __override_huc_firmware_path();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user