|
@@ -498,6 +498,10 @@ static int i915_gem_object_info(struct seq_file *m, void* data)
|
|
|
|
|
|
seq_putc(m, '\n');
|
|
seq_putc(m, '\n');
|
|
print_batch_pool_stats(m, dev_priv);
|
|
print_batch_pool_stats(m, dev_priv);
|
|
|
|
+
|
|
|
|
+ mutex_unlock(&dev->struct_mutex);
|
|
|
|
+
|
|
|
|
+ mutex_lock(&dev->filelist_mutex);
|
|
list_for_each_entry_reverse(file, &dev->filelist, lhead) {
|
|
list_for_each_entry_reverse(file, &dev->filelist, lhead) {
|
|
struct file_stats stats;
|
|
struct file_stats stats;
|
|
struct task_struct *task;
|
|
struct task_struct *task;
|
|
@@ -518,8 +522,7 @@ static int i915_gem_object_info(struct seq_file *m, void* data)
|
|
print_file_stats(m, task ? task->comm : "<unknown>", stats);
|
|
print_file_stats(m, task ? task->comm : "<unknown>", stats);
|
|
rcu_read_unlock();
|
|
rcu_read_unlock();
|
|
}
|
|
}
|
|
-
|
|
|
|
- mutex_unlock(&dev->struct_mutex);
|
|
|
|
|
|
+ mutex_unlock(&dev->filelist_mutex);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -2325,6 +2328,7 @@ static int i915_ppgtt_info(struct seq_file *m, void *data)
|
|
else if (INTEL_INFO(dev)->gen >= 6)
|
|
else if (INTEL_INFO(dev)->gen >= 6)
|
|
gen6_ppgtt_info(m, dev);
|
|
gen6_ppgtt_info(m, dev);
|
|
|
|
|
|
|
|
+ mutex_lock(&dev->filelist_mutex);
|
|
list_for_each_entry_reverse(file, &dev->filelist, lhead) {
|
|
list_for_each_entry_reverse(file, &dev->filelist, lhead) {
|
|
struct drm_i915_file_private *file_priv = file->driver_priv;
|
|
struct drm_i915_file_private *file_priv = file->driver_priv;
|
|
struct task_struct *task;
|
|
struct task_struct *task;
|
|
@@ -2339,6 +2343,7 @@ static int i915_ppgtt_info(struct seq_file *m, void *data)
|
|
idr_for_each(&file_priv->context_idr, per_file_ctx,
|
|
idr_for_each(&file_priv->context_idr, per_file_ctx,
|
|
(void *)(unsigned long)m);
|
|
(void *)(unsigned long)m);
|
|
}
|
|
}
|
|
|
|
+ mutex_unlock(&dev->filelist_mutex);
|
|
|
|
|
|
out_put:
|
|
out_put:
|
|
intel_runtime_pm_put(dev_priv);
|
|
intel_runtime_pm_put(dev_priv);
|
|
@@ -2374,6 +2379,8 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
|
|
intel_gpu_freq(dev_priv, dev_priv->rps.min_freq_softlimit),
|
|
intel_gpu_freq(dev_priv, dev_priv->rps.min_freq_softlimit),
|
|
intel_gpu_freq(dev_priv, dev_priv->rps.max_freq_softlimit),
|
|
intel_gpu_freq(dev_priv, dev_priv->rps.max_freq_softlimit),
|
|
intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
|
|
intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
|
|
|
|
+
|
|
|
|
+ mutex_lock(&dev->filelist_mutex);
|
|
spin_lock(&dev_priv->rps.client_lock);
|
|
spin_lock(&dev_priv->rps.client_lock);
|
|
list_for_each_entry_reverse(file, &dev->filelist, lhead) {
|
|
list_for_each_entry_reverse(file, &dev->filelist, lhead) {
|
|
struct drm_i915_file_private *file_priv = file->driver_priv;
|
|
struct drm_i915_file_private *file_priv = file->driver_priv;
|
|
@@ -2396,6 +2403,7 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
|
|
list_empty(&dev_priv->rps.mmioflips.link) ? "" : ", active");
|
|
list_empty(&dev_priv->rps.mmioflips.link) ? "" : ", active");
|
|
seq_printf(m, "Kernel boosts: %d\n", dev_priv->rps.boosts);
|
|
seq_printf(m, "Kernel boosts: %d\n", dev_priv->rps.boosts);
|
|
spin_unlock(&dev_priv->rps.client_lock);
|
|
spin_unlock(&dev_priv->rps.client_lock);
|
|
|
|
+ mutex_unlock(&dev->filelist_mutex);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|