diff options
author | Ben Widawsky <benjamin.widawsky@intel.com> | 2013-11-03 00:07:30 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-11-08 12:09:50 -0500 |
commit | 77df677291ae1c155c29ff82be633cdd0df3f5ca (patch) | |
tree | d4b6d318dd15e0fd9eae937f8a6d6a5dfd485515 /drivers/gpu/drm/i915/i915_debugfs.c | |
parent | b42218c19f3c57d2272241e3b4944a6af0d5f14a (diff) |
drm/i915/bdw: ppgtt info in debugfs
It's not so much that the information is terribly useful, but rather
that the gen6/7 information is completely useless.
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 49 |
1 files changed, 42 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 047077e400c2..8abb08c61a02 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -1646,18 +1646,37 @@ static int i915_swizzle_info(struct seq_file *m, void *data) | |||
1646 | return 0; | 1646 | return 0; |
1647 | } | 1647 | } |
1648 | 1648 | ||
1649 | static int i915_ppgtt_info(struct seq_file *m, void *data) | 1649 | static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev) |
1650 | { | 1650 | { |
1651 | struct drm_info_node *node = (struct drm_info_node *) m->private; | ||
1652 | struct drm_device *dev = node->minor->dev; | ||
1653 | struct drm_i915_private *dev_priv = dev->dev_private; | 1651 | struct drm_i915_private *dev_priv = dev->dev_private; |
1654 | struct intel_ring_buffer *ring; | 1652 | struct intel_ring_buffer *ring; |
1655 | int i, ret; | 1653 | struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; |
1654 | int unused, i; | ||
1656 | 1655 | ||
1656 | if (!ppgtt) | ||
1657 | return; | ||
1658 | |||
1659 | seq_printf(m, "Page directories: %d\n", ppgtt->num_pd_pages); | ||
1660 | seq_printf(m, "Page tables: %d\n", ppgtt->num_pt_pages); | ||
1661 | for_each_ring(ring, dev_priv, unused) { | ||
1662 | seq_printf(m, "%s\n", ring->name); | ||
1663 | for (i = 0; i < 4; i++) { | ||
1664 | u32 offset = 0x270 + i * 8; | ||
1665 | u64 pdp = I915_READ(ring->mmio_base + offset + 4); | ||
1666 | pdp <<= 32; | ||
1667 | pdp |= I915_READ(ring->mmio_base + offset); | ||
1668 | for (i = 0; i < 4; i++) | ||
1669 | seq_printf(m, "\tPDP%d 0x%016llx\n", i, pdp); | ||
1670 | } | ||
1671 | } | ||
1672 | } | ||
1673 | |||
1674 | static void gen6_ppgtt_info(struct seq_file *m, struct drm_device *dev) | ||
1675 | { | ||
1676 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1677 | struct intel_ring_buffer *ring; | ||
1678 | int i; | ||
1657 | 1679 | ||
1658 | ret = mutex_lock_interruptible(&dev->struct_mutex); | ||
1659 | if (ret) | ||
1660 | return ret; | ||
1661 | if (INTEL_INFO(dev)->gen == 6) | 1680 | if (INTEL_INFO(dev)->gen == 6) |
1662 | seq_printf(m, "GFX_MODE: 0x%08x\n", I915_READ(GFX_MODE)); | 1681 | seq_printf(m, "GFX_MODE: 0x%08x\n", I915_READ(GFX_MODE)); |
1663 | 1682 | ||
@@ -1676,6 +1695,22 @@ static int i915_ppgtt_info(struct seq_file *m, void *data) | |||
1676 | seq_printf(m, "pd gtt offset: 0x%08x\n", ppgtt->pd_offset); | 1695 | seq_printf(m, "pd gtt offset: 0x%08x\n", ppgtt->pd_offset); |
1677 | } | 1696 | } |
1678 | seq_printf(m, "ECOCHK: 0x%08x\n", I915_READ(GAM_ECOCHK)); | 1697 | seq_printf(m, "ECOCHK: 0x%08x\n", I915_READ(GAM_ECOCHK)); |
1698 | } | ||
1699 | |||
1700 | static int i915_ppgtt_info(struct seq_file *m, void *data) | ||
1701 | { | ||
1702 | struct drm_info_node *node = (struct drm_info_node *) m->private; | ||
1703 | struct drm_device *dev = node->minor->dev; | ||
1704 | |||
1705 | int ret = mutex_lock_interruptible(&dev->struct_mutex); | ||
1706 | if (ret) | ||
1707 | return ret; | ||
1708 | |||
1709 | if (INTEL_INFO(dev)->gen >= 8) | ||
1710 | gen8_ppgtt_info(m, dev); | ||
1711 | else if (INTEL_INFO(dev)->gen >= 6) | ||
1712 | gen6_ppgtt_info(m, dev); | ||
1713 | |||
1679 | mutex_unlock(&dev->struct_mutex); | 1714 | mutex_unlock(&dev->struct_mutex); |
1680 | 1715 | ||
1681 | return 0; | 1716 | return 0; |