mirror of https://gitee.com/openkylin/linux.git
drm/i915/guc: Use dedicated flag to track submission mode
Instead of relying on enable_guc modparam to represent actual GuC submission mode, use dedicated flag and look at modparam only to check if submission was explicitly disabled by the user. v2: rebased, simplified condition (Chris) 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-4-michal.wajdeczko@intel.com
This commit is contained in:
parent
db81bc6eb9
commit
724df646c8
|
@ -82,6 +82,7 @@ void intel_guc_init_early(struct intel_guc *guc)
|
|||
intel_guc_fw_init_early(guc);
|
||||
intel_guc_ct_init_early(&guc->ct);
|
||||
intel_guc_log_init_early(&guc->log);
|
||||
intel_guc_submission_init_early(guc);
|
||||
|
||||
mutex_init(&guc->send_mutex);
|
||||
spin_lock_init(&guc->irq_lock);
|
||||
|
|
|
@ -61,6 +61,8 @@ struct intel_guc {
|
|||
void (*disable)(struct intel_guc *guc);
|
||||
} interrupts;
|
||||
|
||||
bool submission_supported;
|
||||
|
||||
struct i915_vma *ads_vma;
|
||||
struct __guc_ads_blob *ads_blob;
|
||||
|
||||
|
@ -190,6 +192,11 @@ static inline int intel_guc_sanitize(struct intel_guc *guc)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline bool intel_guc_is_submission_supported(struct intel_guc *guc)
|
||||
{
|
||||
return guc->submission_supported;
|
||||
}
|
||||
|
||||
static inline void intel_guc_enable_msg(struct intel_guc *guc, u32 mask)
|
||||
{
|
||||
spin_lock_irq(&guc->irq_lock);
|
||||
|
|
|
@ -1163,6 +1163,22 @@ void intel_guc_submission_disable(struct intel_guc *guc)
|
|||
guc_clients_disable(guc);
|
||||
}
|
||||
|
||||
static bool __guc_submission_support(struct intel_guc *guc)
|
||||
{
|
||||
/* XXX: GuC submission is unavailable for now */
|
||||
return false;
|
||||
|
||||
if (!intel_guc_is_supported(guc))
|
||||
return false;
|
||||
|
||||
return i915_modparams.enable_guc & ENABLE_GUC_SUBMISSION;
|
||||
}
|
||||
|
||||
void intel_guc_submission_init_early(struct intel_guc *guc)
|
||||
{
|
||||
guc->submission_supported = __guc_submission_support(guc);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
|
||||
#include "selftest_guc.c"
|
||||
#endif
|
||||
|
|
|
@ -77,6 +77,7 @@ struct intel_guc_client {
|
|||
I915_SELFTEST_DECLARE(bool use_nop_wqi);
|
||||
};
|
||||
|
||||
void intel_guc_submission_init_early(struct intel_guc *guc);
|
||||
int intel_guc_submission_init(struct intel_guc *guc);
|
||||
int intel_guc_submission_enable(struct intel_guc *guc);
|
||||
void intel_guc_submission_disable(struct intel_guc *guc);
|
||||
|
|
|
@ -56,8 +56,7 @@ static inline bool intel_uc_supports_guc(struct intel_uc *uc)
|
|||
|
||||
static inline bool intel_uc_supports_guc_submission(struct intel_uc *uc)
|
||||
{
|
||||
GEM_BUG_ON(i915_modparams.enable_guc < 0);
|
||||
return i915_modparams.enable_guc & ENABLE_GUC_SUBMISSION;
|
||||
return intel_guc_is_submission_supported(&uc->guc);
|
||||
}
|
||||
|
||||
static inline bool intel_uc_supports_huc(struct intel_uc *uc)
|
||||
|
|
Loading…
Reference in New Issue