mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-07 06:14:24 +08:00
drm/i915/guc: Don't open log relay if GuC is not running
As we plan to continue driver load after GuC initialization failure, we can't assume that GuC log data will be available just because GuC was initially enabled. We must check that GuC is still running instead. 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/20190818095204.31568-2-michal.wajdeczko@intel.com
This commit is contained in:
parent
0075a20a6d
commit
1ce5ba970c
@ -372,6 +372,7 @@ static int guc_log_relay_create(struct intel_guc_log *log)
|
||||
int ret;
|
||||
|
||||
lockdep_assert_held(&log->relay.lock);
|
||||
GEM_BUG_ON(!log->vma);
|
||||
|
||||
/* Keep the size of sub buffers same as shared log buffer */
|
||||
subbuf_size = log->vma->size;
|
||||
@ -554,6 +555,9 @@ int intel_guc_log_relay_open(struct intel_guc_log *log)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!log->vma)
|
||||
return -ENODEV;
|
||||
|
||||
mutex_lock(&log->relay.lock);
|
||||
|
||||
if (intel_guc_log_relay_enabled(log)) {
|
||||
|
@ -2028,14 +2028,16 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_guc_log_level_fops,
|
||||
|
||||
static int i915_guc_log_relay_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = inode->i_private;
|
||||
struct drm_i915_private *i915 = inode->i_private;
|
||||
struct intel_guc *guc = &i915->gt.uc.guc;
|
||||
struct intel_guc_log *log = &guc->log;
|
||||
|
||||
if (!USES_GUC(dev_priv))
|
||||
if (!intel_guc_is_running(guc))
|
||||
return -ENODEV;
|
||||
|
||||
file->private_data = &dev_priv->gt.uc.guc.log;
|
||||
file->private_data = log;
|
||||
|
||||
return intel_guc_log_relay_open(&dev_priv->gt.uc.guc.log);
|
||||
return intel_guc_log_relay_open(log);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
@ -2047,16 +2049,15 @@ i915_guc_log_relay_write(struct file *filp,
|
||||
struct intel_guc_log *log = filp->private_data;
|
||||
|
||||
intel_guc_log_relay_flush(log);
|
||||
|
||||
return cnt;
|
||||
}
|
||||
|
||||
static int i915_guc_log_relay_release(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = inode->i_private;
|
||||
|
||||
intel_guc_log_relay_close(&dev_priv->gt.uc.guc.log);
|
||||
struct drm_i915_private *i915 = inode->i_private;
|
||||
struct intel_guc *guc = &i915->gt.uc.guc;
|
||||
|
||||
intel_guc_log_relay_close(&guc->log);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user