Merge tag 'drm-intel-next-2015-10-10' of git://anongit.freedesktop.org/drm-intel into drm-next
- dmc fixes from Animesh (not yet all) for deeper sleep states - piles of prep patches from Ville to make mmio functions type-safe - more fbc work from Paulo all over - w/a shuffling from Arun Siluvery - first part of atomic watermark updates from Matt and Ville (later parts had to be dropped again unfortunately) - lots of patches to prepare bxt dsi support ( Shashank Sharma) - userptr fixes from Chris - audio rate interface between i915/snd_hda plus kerneldoc (Libin Yang) - shrinker improvements and fixes (Chris Wilson) - lots and lots of small patches all over * tag 'drm-intel-next-2015-10-10' of git://anongit.freedesktop.org/drm-intel: (134 commits) drm/i915: Update DRIVER_DATE to 20151010 drm/i915: Partial revert of atomic watermark series drm/i915: Early exit from semaphore_waits_for for execlist mode. drm/i915: Remove wrong warning from i915_gem_context_clean drm/i915: Determine the stolen memory base address on gen2 drm/i915: fix FBC buffer size checks drm/i915: fix CFB size calculation drm/i915: remove pre-atomic check from SKL update_primary_plane drm/i915: don't allocate fbcon from stolen memory if it's too big Revert "drm/i915: Call encoder hotplug for init and resume cases" Revert "drm/i915: Add hot_plug hook for hdmi encoder" drm/i915: use error path drm/i915/irq: Fix misspelled word register in kernel-doc drm/i915/irq: Fix kernel-doc warnings drm/i915: Hook up ring workaround writes at context creation time on Gen6-7. drm/i915: Don't warn if the workaround list is empty. drm/i915: Resurrect golden context on gen6/7 drm/i915/chv: remove pre-production hardware workarounds drm/i915/snb: remove pre-production hardware workaround drm/i915/bxt: Set time interval unit to 0.833us ...
This commit is contained in:
@@ -253,7 +253,11 @@ static int obj_rank_by_stolen(void *priv,
|
||||
struct drm_i915_gem_object *b =
|
||||
container_of(B, struct drm_i915_gem_object, obj_exec_link);
|
||||
|
||||
return a->stolen->start - b->stolen->start;
|
||||
if (a->stolen->start < b->stolen->start)
|
||||
return -1;
|
||||
if (a->stolen->start > b->stolen->start)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int i915_gem_stolen_list_info(struct seq_file *m, void *data)
|
||||
@@ -1308,6 +1312,10 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
|
||||
seq_puts(m, "no P-state info available\n");
|
||||
}
|
||||
|
||||
seq_printf(m, "Current CD clock frequency: %d kHz\n", dev_priv->cdclk_freq);
|
||||
seq_printf(m, "Max CD clock frequency: %d kHz\n", dev_priv->max_cdclk_freq);
|
||||
seq_printf(m, "Max pixel clock frequency: %d kHz\n", dev_priv->max_dotclk_freq);
|
||||
|
||||
out:
|
||||
intel_runtime_pm_put(dev_priv);
|
||||
return ret;
|
||||
@@ -2230,10 +2238,9 @@ static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev)
|
||||
for_each_ring(ring, dev_priv, unused) {
|
||||
seq_printf(m, "%s\n", ring->name);
|
||||
for (i = 0; i < 4; i++) {
|
||||
u32 offset = 0x270 + i * 8;
|
||||
u64 pdp = I915_READ(ring->mmio_base + offset + 4);
|
||||
u64 pdp = I915_READ(GEN8_RING_PDP_UDW(ring, i));
|
||||
pdp <<= 32;
|
||||
pdp |= I915_READ(ring->mmio_base + offset);
|
||||
pdp |= I915_READ(GEN8_RING_PDP_LDW(ring, i));
|
||||
seq_printf(m, "\tPDP%d 0x%016llx\n", i, pdp);
|
||||
}
|
||||
}
|
||||
@@ -2290,18 +2297,21 @@ static int i915_ppgtt_info(struct seq_file *m, void *data)
|
||||
struct task_struct *task;
|
||||
|
||||
task = get_pid_task(file->pid, PIDTYPE_PID);
|
||||
if (!task)
|
||||
return -ESRCH;
|
||||
if (!task) {
|
||||
ret = -ESRCH;
|
||||
goto out_put;
|
||||
}
|
||||
seq_printf(m, "\nproc: %s\n", task->comm);
|
||||
put_task_struct(task);
|
||||
idr_for_each(&file_priv->context_idr, per_file_ctx,
|
||||
(void *)(unsigned long)m);
|
||||
}
|
||||
|
||||
out_put:
|
||||
intel_runtime_pm_put(dev_priv);
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int count_irq_waiters(struct drm_i915_private *i915)
|
||||
@@ -2909,7 +2919,7 @@ static bool cursor_active(struct drm_device *dev, int pipe)
|
||||
u32 state;
|
||||
|
||||
if (IS_845G(dev) || IS_I865G(dev))
|
||||
state = I915_READ(_CURACNTR) & CURSOR_ENABLE;
|
||||
state = I915_READ(CURCNTR(PIPE_A)) & CURSOR_ENABLE;
|
||||
else
|
||||
state = I915_READ(CURCNTR(pipe)) & CURSOR_MODE;
|
||||
|
||||
@@ -3147,7 +3157,7 @@ static int i915_ddb_info(struct seq_file *m, void *unused)
|
||||
skl_ddb_entry_size(entry));
|
||||
}
|
||||
|
||||
entry = &ddb->cursor[pipe];
|
||||
entry = &ddb->plane[pipe][PLANE_CURSOR];
|
||||
seq_printf(m, " %-13s%8u%8u%8u\n", "Cursor", entry->start,
|
||||
entry->end, skl_ddb_entry_size(entry));
|
||||
}
|
||||
@@ -5040,13 +5050,38 @@ static void gen9_sseu_device_status(struct drm_device *dev,
|
||||
}
|
||||
}
|
||||
|
||||
static void broadwell_sseu_device_status(struct drm_device *dev,
|
||||
struct sseu_dev_status *stat)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
int s;
|
||||
u32 slice_info = I915_READ(GEN8_GT_SLICE_INFO);
|
||||
|
||||
stat->slice_total = hweight32(slice_info & GEN8_LSLICESTAT_MASK);
|
||||
|
||||
if (stat->slice_total) {
|
||||
stat->subslice_per_slice = INTEL_INFO(dev)->subslice_per_slice;
|
||||
stat->subslice_total = stat->slice_total *
|
||||
stat->subslice_per_slice;
|
||||
stat->eu_per_subslice = INTEL_INFO(dev)->eu_per_subslice;
|
||||
stat->eu_total = stat->eu_per_subslice * stat->subslice_total;
|
||||
|
||||
/* subtract fused off EU(s) from enabled slice(s) */
|
||||
for (s = 0; s < stat->slice_total; s++) {
|
||||
u8 subslice_7eu = INTEL_INFO(dev)->subslice_7eu[s];
|
||||
|
||||
stat->eu_total -= hweight8(subslice_7eu);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int i915_sseu_status(struct seq_file *m, void *unused)
|
||||
{
|
||||
struct drm_info_node *node = (struct drm_info_node *) m->private;
|
||||
struct drm_device *dev = node->minor->dev;
|
||||
struct sseu_dev_status stat;
|
||||
|
||||
if ((INTEL_INFO(dev)->gen < 8) || IS_BROADWELL(dev))
|
||||
if (INTEL_INFO(dev)->gen < 8)
|
||||
return -ENODEV;
|
||||
|
||||
seq_puts(m, "SSEU Device Info\n");
|
||||
@@ -5071,6 +5106,8 @@ static int i915_sseu_status(struct seq_file *m, void *unused)
|
||||
memset(&stat, 0, sizeof(stat));
|
||||
if (IS_CHERRYVIEW(dev)) {
|
||||
cherryview_sseu_device_status(dev, &stat);
|
||||
} else if (IS_BROADWELL(dev)) {
|
||||
broadwell_sseu_device_status(dev, &stat);
|
||||
} else if (INTEL_INFO(dev)->gen >= 9) {
|
||||
gen9_sseu_device_status(dev, &stat);
|
||||
}
|
||||
|
Reference in New Issue
Block a user