aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_debugfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c400
1 files changed, 188 insertions, 212 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 5b7526697838..844fea795bae 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -265,7 +265,7 @@ static int i915_gem_stolen_list_info(struct seq_file *m, void *data)
265{ 265{
266 struct drm_info_node *node = m->private; 266 struct drm_info_node *node = m->private;
267 struct drm_device *dev = node->minor->dev; 267 struct drm_device *dev = node->minor->dev;
268 struct drm_i915_private *dev_priv = dev->dev_private; 268 struct drm_i915_private *dev_priv = to_i915(dev);
269 struct drm_i915_gem_object *obj; 269 struct drm_i915_gem_object *obj;
270 u64 total_obj_size, total_gtt_size; 270 u64 total_obj_size, total_gtt_size;
271 LIST_HEAD(stolen); 271 LIST_HEAD(stolen);
@@ -440,15 +440,15 @@ static void print_context_stats(struct seq_file *m,
440 440
441 memset(&stats, 0, sizeof(stats)); 441 memset(&stats, 0, sizeof(stats));
442 442
443 mutex_lock(&dev_priv->dev->struct_mutex); 443 mutex_lock(&dev_priv->drm.struct_mutex);
444 if (dev_priv->kernel_context) 444 if (dev_priv->kernel_context)
445 per_file_ctx_stats(0, dev_priv->kernel_context, &stats); 445 per_file_ctx_stats(0, dev_priv->kernel_context, &stats);
446 446
447 list_for_each_entry(file, &dev_priv->dev->filelist, lhead) { 447 list_for_each_entry(file, &dev_priv->drm.filelist, lhead) {
448 struct drm_i915_file_private *fpriv = file->driver_priv; 448 struct drm_i915_file_private *fpriv = file->driver_priv;
449 idr_for_each(&fpriv->context_idr, per_file_ctx_stats, &stats); 449 idr_for_each(&fpriv->context_idr, per_file_ctx_stats, &stats);
450 } 450 }
451 mutex_unlock(&dev_priv->dev->struct_mutex); 451 mutex_unlock(&dev_priv->drm.struct_mutex);
452 452
453 print_file_stats(m, "[k]contexts", stats); 453 print_file_stats(m, "[k]contexts", stats);
454} 454}
@@ -591,7 +591,7 @@ static int i915_gem_gtt_info(struct seq_file *m, void *data)
591 struct drm_info_node *node = m->private; 591 struct drm_info_node *node = m->private;
592 struct drm_device *dev = node->minor->dev; 592 struct drm_device *dev = node->minor->dev;
593 uintptr_t list = (uintptr_t) node->info_ent->data; 593 uintptr_t list = (uintptr_t) node->info_ent->data;
594 struct drm_i915_private *dev_priv = dev->dev_private; 594 struct drm_i915_private *dev_priv = to_i915(dev);
595 struct drm_i915_gem_object *obj; 595 struct drm_i915_gem_object *obj;
596 u64 total_obj_size, total_gtt_size; 596 u64 total_obj_size, total_gtt_size;
597 int count, ret; 597 int count, ret;
@@ -625,7 +625,7 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
625{ 625{
626 struct drm_info_node *node = m->private; 626 struct drm_info_node *node = m->private;
627 struct drm_device *dev = node->minor->dev; 627 struct drm_device *dev = node->minor->dev;
628 struct drm_i915_private *dev_priv = dev->dev_private; 628 struct drm_i915_private *dev_priv = to_i915(dev);
629 struct intel_crtc *crtc; 629 struct intel_crtc *crtc;
630 int ret; 630 int ret;
631 631
@@ -662,8 +662,8 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
662 engine->name, 662 engine->name,
663 i915_gem_request_get_seqno(work->flip_queued_req), 663 i915_gem_request_get_seqno(work->flip_queued_req),
664 dev_priv->next_seqno, 664 dev_priv->next_seqno,
665 engine->get_seqno(engine), 665 intel_engine_get_seqno(engine),
666 i915_gem_request_completed(work->flip_queued_req, true)); 666 i915_gem_request_completed(work->flip_queued_req));
667 } else 667 } else
668 seq_printf(m, "Flip not associated with any ring\n"); 668 seq_printf(m, "Flip not associated with any ring\n");
669 seq_printf(m, "Flip queued on frame %d, (was ready on frame %d), now %d\n", 669 seq_printf(m, "Flip queued on frame %d, (was ready on frame %d), now %d\n",
@@ -695,7 +695,7 @@ static int i915_gem_batch_pool_info(struct seq_file *m, void *data)
695{ 695{
696 struct drm_info_node *node = m->private; 696 struct drm_info_node *node = m->private;
697 struct drm_device *dev = node->minor->dev; 697 struct drm_device *dev = node->minor->dev;
698 struct drm_i915_private *dev_priv = dev->dev_private; 698 struct drm_i915_private *dev_priv = to_i915(dev);
699 struct drm_i915_gem_object *obj; 699 struct drm_i915_gem_object *obj;
700 struct intel_engine_cs *engine; 700 struct intel_engine_cs *engine;
701 int total = 0; 701 int total = 0;
@@ -740,7 +740,7 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
740{ 740{
741 struct drm_info_node *node = m->private; 741 struct drm_info_node *node = m->private;
742 struct drm_device *dev = node->minor->dev; 742 struct drm_device *dev = node->minor->dev;
743 struct drm_i915_private *dev_priv = dev->dev_private; 743 struct drm_i915_private *dev_priv = to_i915(dev);
744 struct intel_engine_cs *engine; 744 struct intel_engine_cs *engine;
745 struct drm_i915_gem_request *req; 745 struct drm_i915_gem_request *req;
746 int ret, any; 746 int ret, any;
@@ -788,17 +788,29 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
788static void i915_ring_seqno_info(struct seq_file *m, 788static void i915_ring_seqno_info(struct seq_file *m,
789 struct intel_engine_cs *engine) 789 struct intel_engine_cs *engine)
790{ 790{
791 struct intel_breadcrumbs *b = &engine->breadcrumbs;
792 struct rb_node *rb;
793
791 seq_printf(m, "Current sequence (%s): %x\n", 794 seq_printf(m, "Current sequence (%s): %x\n",
792 engine->name, engine->get_seqno(engine)); 795 engine->name, intel_engine_get_seqno(engine));
793 seq_printf(m, "Current user interrupts (%s): %x\n", 796 seq_printf(m, "Current user interrupts (%s): %lx\n",
794 engine->name, READ_ONCE(engine->user_interrupts)); 797 engine->name, READ_ONCE(engine->breadcrumbs.irq_wakeups));
798
799 spin_lock(&b->lock);
800 for (rb = rb_first(&b->waiters); rb; rb = rb_next(rb)) {
801 struct intel_wait *w = container_of(rb, typeof(*w), node);
802
803 seq_printf(m, "Waiting (%s): %s [%d] on %x\n",
804 engine->name, w->tsk->comm, w->tsk->pid, w->seqno);
805 }
806 spin_unlock(&b->lock);
795} 807}
796 808
797static int i915_gem_seqno_info(struct seq_file *m, void *data) 809static int i915_gem_seqno_info(struct seq_file *m, void *data)
798{ 810{
799 struct drm_info_node *node = m->private; 811 struct drm_info_node *node = m->private;
800 struct drm_device *dev = node->minor->dev; 812 struct drm_device *dev = node->minor->dev;
801 struct drm_i915_private *dev_priv = dev->dev_private; 813 struct drm_i915_private *dev_priv = to_i915(dev);
802 struct intel_engine_cs *engine; 814 struct intel_engine_cs *engine;
803 int ret; 815 int ret;
804 816
@@ -821,7 +833,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
821{ 833{
822 struct drm_info_node *node = m->private; 834 struct drm_info_node *node = m->private;
823 struct drm_device *dev = node->minor->dev; 835 struct drm_device *dev = node->minor->dev;
824 struct drm_i915_private *dev_priv = dev->dev_private; 836 struct drm_i915_private *dev_priv = to_i915(dev);
825 struct intel_engine_cs *engine; 837 struct intel_engine_cs *engine;
826 int ret, i, pipe; 838 int ret, i, pipe;
827 839
@@ -1012,7 +1024,7 @@ static int i915_gem_fence_regs_info(struct seq_file *m, void *data)
1012{ 1024{
1013 struct drm_info_node *node = m->private; 1025 struct drm_info_node *node = m->private;
1014 struct drm_device *dev = node->minor->dev; 1026 struct drm_device *dev = node->minor->dev;
1015 struct drm_i915_private *dev_priv = dev->dev_private; 1027 struct drm_i915_private *dev_priv = to_i915(dev);
1016 int i, ret; 1028 int i, ret;
1017 1029
1018 ret = mutex_lock_interruptible(&dev->struct_mutex); 1030 ret = mutex_lock_interruptible(&dev->struct_mutex);
@@ -1040,7 +1052,7 @@ static int i915_hws_info(struct seq_file *m, void *data)
1040{ 1052{
1041 struct drm_info_node *node = m->private; 1053 struct drm_info_node *node = m->private;
1042 struct drm_device *dev = node->minor->dev; 1054 struct drm_device *dev = node->minor->dev;
1043 struct drm_i915_private *dev_priv = dev->dev_private; 1055 struct drm_i915_private *dev_priv = to_i915(dev);
1044 struct intel_engine_cs *engine; 1056 struct intel_engine_cs *engine;
1045 const u32 *hws; 1057 const u32 *hws;
1046 int i; 1058 int i;
@@ -1151,7 +1163,7 @@ static int
1151i915_next_seqno_get(void *data, u64 *val) 1163i915_next_seqno_get(void *data, u64 *val)
1152{ 1164{
1153 struct drm_device *dev = data; 1165 struct drm_device *dev = data;
1154 struct drm_i915_private *dev_priv = dev->dev_private; 1166 struct drm_i915_private *dev_priv = to_i915(dev);
1155 int ret; 1167 int ret;
1156 1168
1157 ret = mutex_lock_interruptible(&dev->struct_mutex); 1169 ret = mutex_lock_interruptible(&dev->struct_mutex);
@@ -1188,7 +1200,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
1188{ 1200{
1189 struct drm_info_node *node = m->private; 1201 struct drm_info_node *node = m->private;
1190 struct drm_device *dev = node->minor->dev; 1202 struct drm_device *dev = node->minor->dev;
1191 struct drm_i915_private *dev_priv = dev->dev_private; 1203 struct drm_i915_private *dev_priv = to_i915(dev);
1192 int ret = 0; 1204 int ret = 0;
1193 1205
1194 intel_runtime_pm_get(dev_priv); 1206 intel_runtime_pm_get(dev_priv);
@@ -1391,7 +1403,7 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
1391{ 1403{
1392 struct drm_info_node *node = m->private; 1404 struct drm_info_node *node = m->private;
1393 struct drm_device *dev = node->minor->dev; 1405 struct drm_device *dev = node->minor->dev;
1394 struct drm_i915_private *dev_priv = dev->dev_private; 1406 struct drm_i915_private *dev_priv = to_i915(dev);
1395 struct intel_engine_cs *engine; 1407 struct intel_engine_cs *engine;
1396 u64 acthd[I915_NUM_ENGINES]; 1408 u64 acthd[I915_NUM_ENGINES];
1397 u32 seqno[I915_NUM_ENGINES]; 1409 u32 seqno[I915_NUM_ENGINES];
@@ -1408,7 +1420,7 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
1408 1420
1409 for_each_engine_id(engine, dev_priv, id) { 1421 for_each_engine_id(engine, dev_priv, id) {
1410 acthd[id] = intel_ring_get_active_head(engine); 1422 acthd[id] = intel_ring_get_active_head(engine);
1411 seqno[id] = engine->get_seqno(engine); 1423 seqno[id] = intel_engine_get_seqno(engine);
1412 } 1424 }
1413 1425
1414 i915_get_extra_instdone(dev_priv, instdone); 1426 i915_get_extra_instdone(dev_priv, instdone);
@@ -1428,9 +1440,11 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
1428 engine->hangcheck.seqno, 1440 engine->hangcheck.seqno,
1429 seqno[id], 1441 seqno[id],
1430 engine->last_submitted_seqno); 1442 engine->last_submitted_seqno);
1431 seq_printf(m, "\tuser interrupts = %x [current %x]\n", 1443 seq_printf(m, "\twaiters? %d\n",
1444 intel_engine_has_waiter(engine));
1445 seq_printf(m, "\tuser interrupts = %lx [current %lx]\n",
1432 engine->hangcheck.user_interrupts, 1446 engine->hangcheck.user_interrupts,
1433 READ_ONCE(engine->user_interrupts)); 1447 READ_ONCE(engine->breadcrumbs.irq_wakeups));
1434 seq_printf(m, "\tACTHD = 0x%08llx [current 0x%08llx]\n", 1448 seq_printf(m, "\tACTHD = 0x%08llx [current 0x%08llx]\n",
1435 (long long)engine->hangcheck.acthd, 1449 (long long)engine->hangcheck.acthd,
1436 (long long)acthd[id]); 1450 (long long)acthd[id]);
@@ -1460,7 +1474,7 @@ static int ironlake_drpc_info(struct seq_file *m)
1460{ 1474{
1461 struct drm_info_node *node = m->private; 1475 struct drm_info_node *node = m->private;
1462 struct drm_device *dev = node->minor->dev; 1476 struct drm_device *dev = node->minor->dev;
1463 struct drm_i915_private *dev_priv = dev->dev_private; 1477 struct drm_i915_private *dev_priv = to_i915(dev);
1464 u32 rgvmodectl, rstdbyctl; 1478 u32 rgvmodectl, rstdbyctl;
1465 u16 crstandvid; 1479 u16 crstandvid;
1466 int ret; 1480 int ret;
@@ -1528,7 +1542,7 @@ static int i915_forcewake_domains(struct seq_file *m, void *data)
1528{ 1542{
1529 struct drm_info_node *node = m->private; 1543 struct drm_info_node *node = m->private;
1530 struct drm_device *dev = node->minor->dev; 1544 struct drm_device *dev = node->minor->dev;
1531 struct drm_i915_private *dev_priv = dev->dev_private; 1545 struct drm_i915_private *dev_priv = to_i915(dev);
1532 struct intel_uncore_forcewake_domain *fw_domain; 1546 struct intel_uncore_forcewake_domain *fw_domain;
1533 1547
1534 spin_lock_irq(&dev_priv->uncore.lock); 1548 spin_lock_irq(&dev_priv->uncore.lock);
@@ -1546,7 +1560,7 @@ static int vlv_drpc_info(struct seq_file *m)
1546{ 1560{
1547 struct drm_info_node *node = m->private; 1561 struct drm_info_node *node = m->private;
1548 struct drm_device *dev = node->minor->dev; 1562 struct drm_device *dev = node->minor->dev;
1549 struct drm_i915_private *dev_priv = dev->dev_private; 1563 struct drm_i915_private *dev_priv = to_i915(dev);
1550 u32 rpmodectl1, rcctl1, pw_status; 1564 u32 rpmodectl1, rcctl1, pw_status;
1551 1565
1552 intel_runtime_pm_get(dev_priv); 1566 intel_runtime_pm_get(dev_priv);
@@ -1586,7 +1600,7 @@ static int gen6_drpc_info(struct seq_file *m)
1586{ 1600{
1587 struct drm_info_node *node = m->private; 1601 struct drm_info_node *node = m->private;
1588 struct drm_device *dev = node->minor->dev; 1602 struct drm_device *dev = node->minor->dev;
1589 struct drm_i915_private *dev_priv = dev->dev_private; 1603 struct drm_i915_private *dev_priv = to_i915(dev);
1590 u32 rpmodectl1, gt_core_status, rcctl1, rc6vids = 0; 1604 u32 rpmodectl1, gt_core_status, rcctl1, rc6vids = 0;
1591 unsigned forcewake_count; 1605 unsigned forcewake_count;
1592 int count = 0, ret; 1606 int count = 0, ret;
@@ -1698,7 +1712,7 @@ static int i915_frontbuffer_tracking(struct seq_file *m, void *unused)
1698{ 1712{
1699 struct drm_info_node *node = m->private; 1713 struct drm_info_node *node = m->private;
1700 struct drm_device *dev = node->minor->dev; 1714 struct drm_device *dev = node->minor->dev;
1701 struct drm_i915_private *dev_priv = dev->dev_private; 1715 struct drm_i915_private *dev_priv = to_i915(dev);
1702 1716
1703 seq_printf(m, "FB tracking busy bits: 0x%08x\n", 1717 seq_printf(m, "FB tracking busy bits: 0x%08x\n",
1704 dev_priv->fb_tracking.busy_bits); 1718 dev_priv->fb_tracking.busy_bits);
@@ -1713,7 +1727,7 @@ static int i915_fbc_status(struct seq_file *m, void *unused)
1713{ 1727{
1714 struct drm_info_node *node = m->private; 1728 struct drm_info_node *node = m->private;
1715 struct drm_device *dev = node->minor->dev; 1729 struct drm_device *dev = node->minor->dev;
1716 struct drm_i915_private *dev_priv = dev->dev_private; 1730 struct drm_i915_private *dev_priv = to_i915(dev);
1717 1731
1718 if (!HAS_FBC(dev)) { 1732 if (!HAS_FBC(dev)) {
1719 seq_puts(m, "FBC unsupported on this chipset\n"); 1733 seq_puts(m, "FBC unsupported on this chipset\n");
@@ -1743,7 +1757,7 @@ static int i915_fbc_status(struct seq_file *m, void *unused)
1743static int i915_fbc_fc_get(void *data, u64 *val) 1757static int i915_fbc_fc_get(void *data, u64 *val)
1744{ 1758{
1745 struct drm_device *dev = data; 1759 struct drm_device *dev = data;
1746 struct drm_i915_private *dev_priv = dev->dev_private; 1760 struct drm_i915_private *dev_priv = to_i915(dev);
1747 1761
1748 if (INTEL_INFO(dev)->gen < 7 || !HAS_FBC(dev)) 1762 if (INTEL_INFO(dev)->gen < 7 || !HAS_FBC(dev))
1749 return -ENODEV; 1763 return -ENODEV;
@@ -1756,7 +1770,7 @@ static int i915_fbc_fc_get(void *data, u64 *val)
1756static int i915_fbc_fc_set(void *data, u64 val) 1770static int i915_fbc_fc_set(void *data, u64 val)
1757{ 1771{
1758 struct drm_device *dev = data; 1772 struct drm_device *dev = data;
1759 struct drm_i915_private *dev_priv = dev->dev_private; 1773 struct drm_i915_private *dev_priv = to_i915(dev);
1760 u32 reg; 1774 u32 reg;
1761 1775
1762 if (INTEL_INFO(dev)->gen < 7 || !HAS_FBC(dev)) 1776 if (INTEL_INFO(dev)->gen < 7 || !HAS_FBC(dev))
@@ -1783,7 +1797,7 @@ static int i915_ips_status(struct seq_file *m, void *unused)
1783{ 1797{
1784 struct drm_info_node *node = m->private; 1798 struct drm_info_node *node = m->private;
1785 struct drm_device *dev = node->minor->dev; 1799 struct drm_device *dev = node->minor->dev;
1786 struct drm_i915_private *dev_priv = dev->dev_private; 1800 struct drm_i915_private *dev_priv = to_i915(dev);
1787 1801
1788 if (!HAS_IPS(dev)) { 1802 if (!HAS_IPS(dev)) {
1789 seq_puts(m, "not supported\n"); 1803 seq_puts(m, "not supported\n");
@@ -1813,7 +1827,7 @@ static int i915_sr_status(struct seq_file *m, void *unused)
1813{ 1827{
1814 struct drm_info_node *node = m->private; 1828 struct drm_info_node *node = m->private;
1815 struct drm_device *dev = node->minor->dev; 1829 struct drm_device *dev = node->minor->dev;
1816 struct drm_i915_private *dev_priv = dev->dev_private; 1830 struct drm_i915_private *dev_priv = to_i915(dev);
1817 bool sr_enabled = false; 1831 bool sr_enabled = false;
1818 1832
1819 intel_runtime_pm_get(dev_priv); 1833 intel_runtime_pm_get(dev_priv);
@@ -1842,7 +1856,7 @@ static int i915_emon_status(struct seq_file *m, void *unused)
1842{ 1856{
1843 struct drm_info_node *node = m->private; 1857 struct drm_info_node *node = m->private;
1844 struct drm_device *dev = node->minor->dev; 1858 struct drm_device *dev = node->minor->dev;
1845 struct drm_i915_private *dev_priv = dev->dev_private; 1859 struct drm_i915_private *dev_priv = to_i915(dev);
1846 unsigned long temp, chipset, gfx; 1860 unsigned long temp, chipset, gfx;
1847 int ret; 1861 int ret;
1848 1862
@@ -1870,7 +1884,7 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused)
1870{ 1884{
1871 struct drm_info_node *node = m->private; 1885 struct drm_info_node *node = m->private;
1872 struct drm_device *dev = node->minor->dev; 1886 struct drm_device *dev = node->minor->dev;
1873 struct drm_i915_private *dev_priv = dev->dev_private; 1887 struct drm_i915_private *dev_priv = to_i915(dev);
1874 int ret = 0; 1888 int ret = 0;
1875 int gpu_freq, ia_freq; 1889 int gpu_freq, ia_freq;
1876 unsigned int max_gpu_freq, min_gpu_freq; 1890 unsigned int max_gpu_freq, min_gpu_freq;
@@ -1925,7 +1939,7 @@ static int i915_opregion(struct seq_file *m, void *unused)
1925{ 1939{
1926 struct drm_info_node *node = m->private; 1940 struct drm_info_node *node = m->private;
1927 struct drm_device *dev = node->minor->dev; 1941 struct drm_device *dev = node->minor->dev;
1928 struct drm_i915_private *dev_priv = dev->dev_private; 1942 struct drm_i915_private *dev_priv = to_i915(dev);
1929 struct intel_opregion *opregion = &dev_priv->opregion; 1943 struct intel_opregion *opregion = &dev_priv->opregion;
1930 int ret; 1944 int ret;
1931 1945
@@ -1946,7 +1960,7 @@ static int i915_vbt(struct seq_file *m, void *unused)
1946{ 1960{
1947 struct drm_info_node *node = m->private; 1961 struct drm_info_node *node = m->private;
1948 struct drm_device *dev = node->minor->dev; 1962 struct drm_device *dev = node->minor->dev;
1949 struct drm_i915_private *dev_priv = dev->dev_private; 1963 struct drm_i915_private *dev_priv = to_i915(dev);
1950 struct intel_opregion *opregion = &dev_priv->opregion; 1964 struct intel_opregion *opregion = &dev_priv->opregion;
1951 1965
1952 if (opregion->vbt) 1966 if (opregion->vbt)
@@ -1968,19 +1982,19 @@ static int i915_gem_framebuffer_info(struct seq_file *m, void *data)
1968 return ret; 1982 return ret;
1969 1983
1970#ifdef CONFIG_DRM_FBDEV_EMULATION 1984#ifdef CONFIG_DRM_FBDEV_EMULATION
1971 if (to_i915(dev)->fbdev) { 1985 if (to_i915(dev)->fbdev) {
1972 fbdev_fb = to_intel_framebuffer(to_i915(dev)->fbdev->helper.fb); 1986 fbdev_fb = to_intel_framebuffer(to_i915(dev)->fbdev->helper.fb);
1973 1987
1974 seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, modifier 0x%llx, refcount %d, obj ", 1988 seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, modifier 0x%llx, refcount %d, obj ",
1975 fbdev_fb->base.width, 1989 fbdev_fb->base.width,
1976 fbdev_fb->base.height, 1990 fbdev_fb->base.height,
1977 fbdev_fb->base.depth, 1991 fbdev_fb->base.depth,
1978 fbdev_fb->base.bits_per_pixel, 1992 fbdev_fb->base.bits_per_pixel,
1979 fbdev_fb->base.modifier[0], 1993 fbdev_fb->base.modifier[0],
1980 drm_framebuffer_read_refcount(&fbdev_fb->base)); 1994 drm_framebuffer_read_refcount(&fbdev_fb->base));
1981 describe_obj(m, fbdev_fb->obj); 1995 describe_obj(m, fbdev_fb->obj);
1982 seq_putc(m, '\n'); 1996 seq_putc(m, '\n');
1983 } 1997 }
1984#endif 1998#endif
1985 1999
1986 mutex_lock(&dev->mode_config.fb_lock); 2000 mutex_lock(&dev->mode_config.fb_lock);
@@ -2017,7 +2031,7 @@ static int i915_context_status(struct seq_file *m, void *unused)
2017{ 2031{
2018 struct drm_info_node *node = m->private; 2032 struct drm_info_node *node = m->private;
2019 struct drm_device *dev = node->minor->dev; 2033 struct drm_device *dev = node->minor->dev;
2020 struct drm_i915_private *dev_priv = dev->dev_private; 2034 struct drm_i915_private *dev_priv = to_i915(dev);
2021 struct intel_engine_cs *engine; 2035 struct intel_engine_cs *engine;
2022 struct i915_gem_context *ctx; 2036 struct i915_gem_context *ctx;
2023 int ret; 2037 int ret;
@@ -2114,7 +2128,7 @@ static int i915_dump_lrc(struct seq_file *m, void *unused)
2114{ 2128{
2115 struct drm_info_node *node = (struct drm_info_node *) m->private; 2129 struct drm_info_node *node = (struct drm_info_node *) m->private;
2116 struct drm_device *dev = node->minor->dev; 2130 struct drm_device *dev = node->minor->dev;
2117 struct drm_i915_private *dev_priv = dev->dev_private; 2131 struct drm_i915_private *dev_priv = to_i915(dev);
2118 struct intel_engine_cs *engine; 2132 struct intel_engine_cs *engine;
2119 struct i915_gem_context *ctx; 2133 struct i915_gem_context *ctx;
2120 int ret; 2134 int ret;
@@ -2141,7 +2155,7 @@ static int i915_execlists(struct seq_file *m, void *data)
2141{ 2155{
2142 struct drm_info_node *node = (struct drm_info_node *)m->private; 2156 struct drm_info_node *node = (struct drm_info_node *)m->private;
2143 struct drm_device *dev = node->minor->dev; 2157 struct drm_device *dev = node->minor->dev;
2144 struct drm_i915_private *dev_priv = dev->dev_private; 2158 struct drm_i915_private *dev_priv = to_i915(dev);
2145 struct intel_engine_cs *engine; 2159 struct intel_engine_cs *engine;
2146 u32 status_pointer; 2160 u32 status_pointer;
2147 u8 read_pointer; 2161 u8 read_pointer;
@@ -2244,7 +2258,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data)
2244{ 2258{
2245 struct drm_info_node *node = m->private; 2259 struct drm_info_node *node = m->private;
2246 struct drm_device *dev = node->minor->dev; 2260 struct drm_device *dev = node->minor->dev;
2247 struct drm_i915_private *dev_priv = dev->dev_private; 2261 struct drm_i915_private *dev_priv = to_i915(dev);
2248 int ret; 2262 int ret;
2249 2263
2250 ret = mutex_lock_interruptible(&dev->struct_mutex); 2264 ret = mutex_lock_interruptible(&dev->struct_mutex);
@@ -2317,7 +2331,7 @@ static int per_file_ctx(int id, void *ptr, void *data)
2317 2331
2318static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev) 2332static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev)
2319{ 2333{
2320 struct drm_i915_private *dev_priv = dev->dev_private; 2334 struct drm_i915_private *dev_priv = to_i915(dev);
2321 struct intel_engine_cs *engine; 2335 struct intel_engine_cs *engine;
2322 struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; 2336 struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
2323 int i; 2337 int i;
@@ -2338,7 +2352,7 @@ static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev)
2338 2352
2339static void gen6_ppgtt_info(struct seq_file *m, struct drm_device *dev) 2353static void gen6_ppgtt_info(struct seq_file *m, struct drm_device *dev)
2340{ 2354{
2341 struct drm_i915_private *dev_priv = dev->dev_private; 2355 struct drm_i915_private *dev_priv = to_i915(dev);
2342 struct intel_engine_cs *engine; 2356 struct intel_engine_cs *engine;
2343 2357
2344 if (IS_GEN6(dev_priv)) 2358 if (IS_GEN6(dev_priv))
@@ -2372,7 +2386,7 @@ static int i915_ppgtt_info(struct seq_file *m, void *data)
2372{ 2386{
2373 struct drm_info_node *node = m->private; 2387 struct drm_info_node *node = m->private;
2374 struct drm_device *dev = node->minor->dev; 2388 struct drm_device *dev = node->minor->dev;
2375 struct drm_i915_private *dev_priv = dev->dev_private; 2389 struct drm_i915_private *dev_priv = to_i915(dev);
2376 struct drm_file *file; 2390 struct drm_file *file;
2377 2391
2378 int ret = mutex_lock_interruptible(&dev->struct_mutex); 2392 int ret = mutex_lock_interruptible(&dev->struct_mutex);
@@ -2415,7 +2429,7 @@ static int count_irq_waiters(struct drm_i915_private *i915)
2415 int count = 0; 2429 int count = 0;
2416 2430
2417 for_each_engine(engine, i915) 2431 for_each_engine(engine, i915)
2418 count += engine->irq_refcount; 2432 count += intel_engine_has_waiter(engine);
2419 2433
2420 return count; 2434 return count;
2421} 2435}
@@ -2424,11 +2438,12 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
2424{ 2438{
2425 struct drm_info_node *node = m->private; 2439 struct drm_info_node *node = m->private;
2426 struct drm_device *dev = node->minor->dev; 2440 struct drm_device *dev = node->minor->dev;
2427 struct drm_i915_private *dev_priv = dev->dev_private; 2441 struct drm_i915_private *dev_priv = to_i915(dev);
2428 struct drm_file *file; 2442 struct drm_file *file;
2429 2443
2430 seq_printf(m, "RPS enabled? %d\n", dev_priv->rps.enabled); 2444 seq_printf(m, "RPS enabled? %d\n", dev_priv->rps.enabled);
2431 seq_printf(m, "GPU busy? %d\n", dev_priv->mm.busy); 2445 seq_printf(m, "GPU busy? %s [%x]\n",
2446 yesno(dev_priv->gt.awake), dev_priv->gt.active_engines);
2432 seq_printf(m, "CPU waiting? %d\n", count_irq_waiters(dev_priv)); 2447 seq_printf(m, "CPU waiting? %d\n", count_irq_waiters(dev_priv));
2433 seq_printf(m, "Frequency requested %d; min hard:%d, soft:%d; max soft:%d, hard:%d\n", 2448 seq_printf(m, "Frequency requested %d; min hard:%d, soft:%d; max soft:%d, hard:%d\n",
2434 intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq), 2449 intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq),
@@ -2469,7 +2484,7 @@ static int i915_llc(struct seq_file *m, void *data)
2469{ 2484{
2470 struct drm_info_node *node = m->private; 2485 struct drm_info_node *node = m->private;
2471 struct drm_device *dev = node->minor->dev; 2486 struct drm_device *dev = node->minor->dev;
2472 struct drm_i915_private *dev_priv = dev->dev_private; 2487 struct drm_i915_private *dev_priv = to_i915(dev);
2473 const bool edram = INTEL_GEN(dev_priv) > 8; 2488 const bool edram = INTEL_GEN(dev_priv) > 8;
2474 2489
2475 seq_printf(m, "LLC: %s\n", yesno(HAS_LLC(dev))); 2490 seq_printf(m, "LLC: %s\n", yesno(HAS_LLC(dev)));
@@ -2482,7 +2497,7 @@ static int i915_llc(struct seq_file *m, void *data)
2482static int i915_guc_load_status_info(struct seq_file *m, void *data) 2497static int i915_guc_load_status_info(struct seq_file *m, void *data)
2483{ 2498{
2484 struct drm_info_node *node = m->private; 2499 struct drm_info_node *node = m->private;
2485 struct drm_i915_private *dev_priv = node->minor->dev->dev_private; 2500 struct drm_i915_private *dev_priv = to_i915(node->minor->dev);
2486 struct intel_guc_fw *guc_fw = &dev_priv->guc.guc_fw; 2501 struct intel_guc_fw *guc_fw = &dev_priv->guc.guc_fw;
2487 u32 tmp, i; 2502 u32 tmp, i;
2488 2503
@@ -2544,9 +2559,9 @@ static void i915_guc_client_info(struct seq_file *m,
2544 2559
2545 for_each_engine(engine, dev_priv) { 2560 for_each_engine(engine, dev_priv) {
2546 seq_printf(m, "\tSubmissions: %llu %s\n", 2561 seq_printf(m, "\tSubmissions: %llu %s\n",
2547 client->submissions[engine->guc_id], 2562 client->submissions[engine->id],
2548 engine->name); 2563 engine->name);
2549 tot += client->submissions[engine->guc_id]; 2564 tot += client->submissions[engine->id];
2550 } 2565 }
2551 seq_printf(m, "\tTotal: %llu\n", tot); 2566 seq_printf(m, "\tTotal: %llu\n", tot);
2552} 2567}
@@ -2555,7 +2570,7 @@ static int i915_guc_info(struct seq_file *m, void *data)
2555{ 2570{
2556 struct drm_info_node *node = m->private; 2571 struct drm_info_node *node = m->private;
2557 struct drm_device *dev = node->minor->dev; 2572 struct drm_device *dev = node->minor->dev;
2558 struct drm_i915_private *dev_priv = dev->dev_private; 2573 struct drm_i915_private *dev_priv = to_i915(dev);
2559 struct intel_guc guc; 2574 struct intel_guc guc;
2560 struct i915_guc_client client = {}; 2575 struct i915_guc_client client = {};
2561 struct intel_engine_cs *engine; 2576 struct intel_engine_cs *engine;
@@ -2587,9 +2602,9 @@ static int i915_guc_info(struct seq_file *m, void *data)
2587 seq_printf(m, "\nGuC submissions:\n"); 2602 seq_printf(m, "\nGuC submissions:\n");
2588 for_each_engine(engine, dev_priv) { 2603 for_each_engine(engine, dev_priv) {
2589 seq_printf(m, "\t%-24s: %10llu, last seqno 0x%08x\n", 2604 seq_printf(m, "\t%-24s: %10llu, last seqno 0x%08x\n",
2590 engine->name, guc.submissions[engine->guc_id], 2605 engine->name, guc.submissions[engine->id],
2591 guc.last_seqno[engine->guc_id]); 2606 guc.last_seqno[engine->id]);
2592 total += guc.submissions[engine->guc_id]; 2607 total += guc.submissions[engine->id];
2593 } 2608 }
2594 seq_printf(m, "\t%s: %llu\n", "Total", total); 2609 seq_printf(m, "\t%s: %llu\n", "Total", total);
2595 2610
@@ -2605,7 +2620,7 @@ static int i915_guc_log_dump(struct seq_file *m, void *data)
2605{ 2620{
2606 struct drm_info_node *node = m->private; 2621 struct drm_info_node *node = m->private;
2607 struct drm_device *dev = node->minor->dev; 2622 struct drm_device *dev = node->minor->dev;
2608 struct drm_i915_private *dev_priv = dev->dev_private; 2623 struct drm_i915_private *dev_priv = to_i915(dev);
2609 struct drm_i915_gem_object *log_obj = dev_priv->guc.log_obj; 2624 struct drm_i915_gem_object *log_obj = dev_priv->guc.log_obj;
2610 u32 *log; 2625 u32 *log;
2611 int i = 0, pg; 2626 int i = 0, pg;
@@ -2633,7 +2648,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)
2633{ 2648{
2634 struct drm_info_node *node = m->private; 2649 struct drm_info_node *node = m->private;
2635 struct drm_device *dev = node->minor->dev; 2650 struct drm_device *dev = node->minor->dev;
2636 struct drm_i915_private *dev_priv = dev->dev_private; 2651 struct drm_i915_private *dev_priv = to_i915(dev);
2637 u32 psrperf = 0; 2652 u32 psrperf = 0;
2638 u32 stat[3]; 2653 u32 stat[3];
2639 enum pipe pipe; 2654 enum pipe pipe;
@@ -2701,7 +2716,6 @@ static int i915_sink_crc(struct seq_file *m, void *data)
2701{ 2716{
2702 struct drm_info_node *node = m->private; 2717 struct drm_info_node *node = m->private;
2703 struct drm_device *dev = node->minor->dev; 2718 struct drm_device *dev = node->minor->dev;
2704 struct intel_encoder *encoder;
2705 struct intel_connector *connector; 2719 struct intel_connector *connector;
2706 struct intel_dp *intel_dp = NULL; 2720 struct intel_dp *intel_dp = NULL;
2707 int ret; 2721 int ret;
@@ -2709,18 +2723,19 @@ static int i915_sink_crc(struct seq_file *m, void *data)
2709 2723
2710 drm_modeset_lock_all(dev); 2724 drm_modeset_lock_all(dev);
2711 for_each_intel_connector(dev, connector) { 2725 for_each_intel_connector(dev, connector) {
2726 struct drm_crtc *crtc;
2712 2727
2713 if (connector->base.dpms != DRM_MODE_DPMS_ON) 2728 if (!connector->base.state->best_encoder)
2714 continue; 2729 continue;
2715 2730
2716 if (!connector->base.encoder) 2731 crtc = connector->base.state->crtc;
2732 if (!crtc->state->active)
2717 continue; 2733 continue;
2718 2734
2719 encoder = to_intel_encoder(connector->base.encoder); 2735 if (connector->base.connector_type != DRM_MODE_CONNECTOR_eDP)
2720 if (encoder->type != INTEL_OUTPUT_EDP)
2721 continue; 2736 continue;
2722 2737
2723 intel_dp = enc_to_intel_dp(&encoder->base); 2738 intel_dp = enc_to_intel_dp(connector->base.state->best_encoder);
2724 2739
2725 ret = intel_dp_sink_crc(intel_dp, crc); 2740 ret = intel_dp_sink_crc(intel_dp, crc);
2726 if (ret) 2741 if (ret)
@@ -2741,7 +2756,7 @@ static int i915_energy_uJ(struct seq_file *m, void *data)
2741{ 2756{
2742 struct drm_info_node *node = m->private; 2757 struct drm_info_node *node = m->private;
2743 struct drm_device *dev = node->minor->dev; 2758 struct drm_device *dev = node->minor->dev;
2744 struct drm_i915_private *dev_priv = dev->dev_private; 2759 struct drm_i915_private *dev_priv = to_i915(dev);
2745 u64 power; 2760 u64 power;
2746 u32 units; 2761 u32 units;
2747 2762
@@ -2767,12 +2782,12 @@ static int i915_runtime_pm_status(struct seq_file *m, void *unused)
2767{ 2782{
2768 struct drm_info_node *node = m->private; 2783 struct drm_info_node *node = m->private;
2769 struct drm_device *dev = node->minor->dev; 2784 struct drm_device *dev = node->minor->dev;
2770 struct drm_i915_private *dev_priv = dev->dev_private; 2785 struct drm_i915_private *dev_priv = to_i915(dev);
2771 2786
2772 if (!HAS_RUNTIME_PM(dev_priv)) 2787 if (!HAS_RUNTIME_PM(dev_priv))
2773 seq_puts(m, "Runtime power management not supported\n"); 2788 seq_puts(m, "Runtime power management not supported\n");
2774 2789
2775 seq_printf(m, "GPU idle: %s\n", yesno(!dev_priv->mm.busy)); 2790 seq_printf(m, "GPU idle: %s\n", yesno(!dev_priv->gt.awake));
2776 seq_printf(m, "IRQs disabled: %s\n", 2791 seq_printf(m, "IRQs disabled: %s\n",
2777 yesno(!intel_irqs_enabled(dev_priv))); 2792 yesno(!intel_irqs_enabled(dev_priv)));
2778#ifdef CONFIG_PM 2793#ifdef CONFIG_PM
@@ -2782,8 +2797,8 @@ static int i915_runtime_pm_status(struct seq_file *m, void *unused)
2782 seq_printf(m, "Device Power Management (CONFIG_PM) disabled\n"); 2797 seq_printf(m, "Device Power Management (CONFIG_PM) disabled\n");
2783#endif 2798#endif
2784 seq_printf(m, "PCI device power state: %s [%d]\n", 2799 seq_printf(m, "PCI device power state: %s [%d]\n",
2785 pci_power_name(dev_priv->dev->pdev->current_state), 2800 pci_power_name(dev_priv->drm.pdev->current_state),
2786 dev_priv->dev->pdev->current_state); 2801 dev_priv->drm.pdev->current_state);
2787 2802
2788 return 0; 2803 return 0;
2789} 2804}
@@ -2792,7 +2807,7 @@ static int i915_power_domain_info(struct seq_file *m, void *unused)
2792{ 2807{
2793 struct drm_info_node *node = m->private; 2808 struct drm_info_node *node = m->private;
2794 struct drm_device *dev = node->minor->dev; 2809 struct drm_device *dev = node->minor->dev;
2795 struct drm_i915_private *dev_priv = dev->dev_private; 2810 struct drm_i915_private *dev_priv = to_i915(dev);
2796 struct i915_power_domains *power_domains = &dev_priv->power_domains; 2811 struct i915_power_domains *power_domains = &dev_priv->power_domains;
2797 int i; 2812 int i;
2798 2813
@@ -2827,7 +2842,7 @@ static int i915_dmc_info(struct seq_file *m, void *unused)
2827{ 2842{
2828 struct drm_info_node *node = m->private; 2843 struct drm_info_node *node = m->private;
2829 struct drm_device *dev = node->minor->dev; 2844 struct drm_device *dev = node->minor->dev;
2830 struct drm_i915_private *dev_priv = dev->dev_private; 2845 struct drm_i915_private *dev_priv = to_i915(dev);
2831 struct intel_csr *csr; 2846 struct intel_csr *csr;
2832 2847
2833 if (!HAS_CSR(dev)) { 2848 if (!HAS_CSR(dev)) {
@@ -2950,7 +2965,7 @@ static void intel_dp_info(struct seq_file *m,
2950 2965
2951 seq_printf(m, "\tDPCD rev: %x\n", intel_dp->dpcd[DP_DPCD_REV]); 2966 seq_printf(m, "\tDPCD rev: %x\n", intel_dp->dpcd[DP_DPCD_REV]);
2952 seq_printf(m, "\taudio support: %s\n", yesno(intel_dp->has_audio)); 2967 seq_printf(m, "\taudio support: %s\n", yesno(intel_dp->has_audio));
2953 if (intel_encoder->type == INTEL_OUTPUT_EDP) 2968 if (intel_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)
2954 intel_panel_info(m, &intel_connector->panel); 2969 intel_panel_info(m, &intel_connector->panel);
2955} 2970}
2956 2971
@@ -2989,14 +3004,26 @@ static void intel_connector_info(struct seq_file *m,
2989 seq_printf(m, "\tCEA rev: %d\n", 3004 seq_printf(m, "\tCEA rev: %d\n",
2990 connector->display_info.cea_rev); 3005 connector->display_info.cea_rev);
2991 } 3006 }
2992 if (intel_encoder) { 3007
2993 if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || 3008 if (!intel_encoder || intel_encoder->type == INTEL_OUTPUT_DP_MST)
2994 intel_encoder->type == INTEL_OUTPUT_EDP) 3009 return;
2995 intel_dp_info(m, intel_connector); 3010
2996 else if (intel_encoder->type == INTEL_OUTPUT_HDMI) 3011 switch (connector->connector_type) {
2997 intel_hdmi_info(m, intel_connector); 3012 case DRM_MODE_CONNECTOR_DisplayPort:
2998 else if (intel_encoder->type == INTEL_OUTPUT_LVDS) 3013 case DRM_MODE_CONNECTOR_eDP:
3014 intel_dp_info(m, intel_connector);
3015 break;
3016 case DRM_MODE_CONNECTOR_LVDS:
3017 if (intel_encoder->type == INTEL_OUTPUT_LVDS)
2999 intel_lvds_info(m, intel_connector); 3018 intel_lvds_info(m, intel_connector);
3019 break;
3020 case DRM_MODE_CONNECTOR_HDMIA:
3021 if (intel_encoder->type == INTEL_OUTPUT_HDMI ||
3022 intel_encoder->type == INTEL_OUTPUT_UNKNOWN)
3023 intel_hdmi_info(m, intel_connector);
3024 break;
3025 default:
3026 break;
3000 } 3027 }
3001 3028
3002 seq_printf(m, "\tmodes:\n"); 3029 seq_printf(m, "\tmodes:\n");
@@ -3006,7 +3033,7 @@ static void intel_connector_info(struct seq_file *m,
3006 3033
3007static bool cursor_active(struct drm_device *dev, int pipe) 3034static bool cursor_active(struct drm_device *dev, int pipe)
3008{ 3035{
3009 struct drm_i915_private *dev_priv = dev->dev_private; 3036 struct drm_i915_private *dev_priv = to_i915(dev);
3010 u32 state; 3037 u32 state;
3011 3038
3012 if (IS_845G(dev) || IS_I865G(dev)) 3039 if (IS_845G(dev) || IS_I865G(dev))
@@ -3019,7 +3046,7 @@ static bool cursor_active(struct drm_device *dev, int pipe)
3019 3046
3020static bool cursor_position(struct drm_device *dev, int pipe, int *x, int *y) 3047static bool cursor_position(struct drm_device *dev, int pipe, int *x, int *y)
3021{ 3048{
3022 struct drm_i915_private *dev_priv = dev->dev_private; 3049 struct drm_i915_private *dev_priv = to_i915(dev);
3023 u32 pos; 3050 u32 pos;
3024 3051
3025 pos = I915_READ(CURPOS(pipe)); 3052 pos = I915_READ(CURPOS(pipe));
@@ -3140,7 +3167,7 @@ static int i915_display_info(struct seq_file *m, void *unused)
3140{ 3167{
3141 struct drm_info_node *node = m->private; 3168 struct drm_info_node *node = m->private;
3142 struct drm_device *dev = node->minor->dev; 3169 struct drm_device *dev = node->minor->dev;
3143 struct drm_i915_private *dev_priv = dev->dev_private; 3170 struct drm_i915_private *dev_priv = to_i915(dev);
3144 struct intel_crtc *crtc; 3171 struct intel_crtc *crtc;
3145 struct drm_connector *connector; 3172 struct drm_connector *connector;
3146 3173
@@ -3195,7 +3222,7 @@ static int i915_semaphore_status(struct seq_file *m, void *unused)
3195{ 3222{
3196 struct drm_info_node *node = (struct drm_info_node *) m->private; 3223 struct drm_info_node *node = (struct drm_info_node *) m->private;
3197 struct drm_device *dev = node->minor->dev; 3224 struct drm_device *dev = node->minor->dev;
3198 struct drm_i915_private *dev_priv = dev->dev_private; 3225 struct drm_i915_private *dev_priv = to_i915(dev);
3199 struct intel_engine_cs *engine; 3226 struct intel_engine_cs *engine;
3200 int num_rings = hweight32(INTEL_INFO(dev)->ring_mask); 3227 int num_rings = hweight32(INTEL_INFO(dev)->ring_mask);
3201 enum intel_engine_id id; 3228 enum intel_engine_id id;
@@ -3268,7 +3295,7 @@ static int i915_shared_dplls_info(struct seq_file *m, void *unused)
3268{ 3295{
3269 struct drm_info_node *node = (struct drm_info_node *) m->private; 3296 struct drm_info_node *node = (struct drm_info_node *) m->private;
3270 struct drm_device *dev = node->minor->dev; 3297 struct drm_device *dev = node->minor->dev;
3271 struct drm_i915_private *dev_priv = dev->dev_private; 3298 struct drm_i915_private *dev_priv = to_i915(dev);
3272 int i; 3299 int i;
3273 3300
3274 drm_modeset_lock_all(dev); 3301 drm_modeset_lock_all(dev);
@@ -3298,7 +3325,7 @@ static int i915_wa_registers(struct seq_file *m, void *unused)
3298 struct intel_engine_cs *engine; 3325 struct intel_engine_cs *engine;
3299 struct drm_info_node *node = (struct drm_info_node *) m->private; 3326 struct drm_info_node *node = (struct drm_info_node *) m->private;
3300 struct drm_device *dev = node->minor->dev; 3327 struct drm_device *dev = node->minor->dev;
3301 struct drm_i915_private *dev_priv = dev->dev_private; 3328 struct drm_i915_private *dev_priv = to_i915(dev);
3302 struct i915_workarounds *workarounds = &dev_priv->workarounds; 3329 struct i915_workarounds *workarounds = &dev_priv->workarounds;
3303 enum intel_engine_id id; 3330 enum intel_engine_id id;
3304 3331
@@ -3336,7 +3363,7 @@ static int i915_ddb_info(struct seq_file *m, void *unused)
3336{ 3363{
3337 struct drm_info_node *node = m->private; 3364 struct drm_info_node *node = m->private;
3338 struct drm_device *dev = node->minor->dev; 3365 struct drm_device *dev = node->minor->dev;
3339 struct drm_i915_private *dev_priv = dev->dev_private; 3366 struct drm_i915_private *dev_priv = to_i915(dev);
3340 struct skl_ddb_allocation *ddb; 3367 struct skl_ddb_allocation *ddb;
3341 struct skl_ddb_entry *entry; 3368 struct skl_ddb_entry *entry;
3342 enum pipe pipe; 3369 enum pipe pipe;
@@ -3374,31 +3401,16 @@ static int i915_ddb_info(struct seq_file *m, void *unused)
3374static void drrs_status_per_crtc(struct seq_file *m, 3401static void drrs_status_per_crtc(struct seq_file *m,
3375 struct drm_device *dev, struct intel_crtc *intel_crtc) 3402 struct drm_device *dev, struct intel_crtc *intel_crtc)
3376{ 3403{
3377 struct intel_encoder *intel_encoder; 3404 struct drm_i915_private *dev_priv = to_i915(dev);
3378 struct drm_i915_private *dev_priv = dev->dev_private;
3379 struct i915_drrs *drrs = &dev_priv->drrs; 3405 struct i915_drrs *drrs = &dev_priv->drrs;
3380 int vrefresh = 0; 3406 int vrefresh = 0;
3407 struct drm_connector *connector;
3381 3408
3382 for_each_encoder_on_crtc(dev, &intel_crtc->base, intel_encoder) { 3409 drm_for_each_connector(connector, dev) {
3383 /* Encoder connected on this CRTC */ 3410 if (connector->state->crtc != &intel_crtc->base)
3384 switch (intel_encoder->type) { 3411 continue;
3385 case INTEL_OUTPUT_EDP: 3412
3386 seq_puts(m, "eDP:\n"); 3413 seq_printf(m, "%s:\n", connector->name);
3387 break;
3388 case INTEL_OUTPUT_DSI:
3389 seq_puts(m, "DSI:\n");
3390 break;
3391 case INTEL_OUTPUT_HDMI:
3392 seq_puts(m, "HDMI:\n");
3393 break;
3394 case INTEL_OUTPUT_DISPLAYPORT:
3395 seq_puts(m, "DP:\n");
3396 break;
3397 default:
3398 seq_printf(m, "Other encoder (id=%d).\n",
3399 intel_encoder->type);
3400 return;
3401 }
3402 } 3414 }
3403 3415
3404 if (dev_priv->vbt.drrs_type == STATIC_DRRS_SUPPORT) 3416 if (dev_priv->vbt.drrs_type == STATIC_DRRS_SUPPORT)
@@ -3461,18 +3473,16 @@ static int i915_drrs_status(struct seq_file *m, void *unused)
3461 struct intel_crtc *intel_crtc; 3473 struct intel_crtc *intel_crtc;
3462 int active_crtc_cnt = 0; 3474 int active_crtc_cnt = 0;
3463 3475
3476 drm_modeset_lock_all(dev);
3464 for_each_intel_crtc(dev, intel_crtc) { 3477 for_each_intel_crtc(dev, intel_crtc) {
3465 drm_modeset_lock(&intel_crtc->base.mutex, NULL);
3466
3467 if (intel_crtc->base.state->active) { 3478 if (intel_crtc->base.state->active) {
3468 active_crtc_cnt++; 3479 active_crtc_cnt++;
3469 seq_printf(m, "\nCRTC %d: ", active_crtc_cnt); 3480 seq_printf(m, "\nCRTC %d: ", active_crtc_cnt);
3470 3481
3471 drrs_status_per_crtc(m, dev, intel_crtc); 3482 drrs_status_per_crtc(m, dev, intel_crtc);
3472 } 3483 }
3473
3474 drm_modeset_unlock(&intel_crtc->base.mutex);
3475 } 3484 }
3485 drm_modeset_unlock_all(dev);
3476 3486
3477 if (!active_crtc_cnt) 3487 if (!active_crtc_cnt)
3478 seq_puts(m, "No active crtc found\n"); 3488 seq_puts(m, "No active crtc found\n");
@@ -3490,17 +3500,23 @@ static int i915_dp_mst_info(struct seq_file *m, void *unused)
3490{ 3500{
3491 struct drm_info_node *node = (struct drm_info_node *) m->private; 3501 struct drm_info_node *node = (struct drm_info_node *) m->private;
3492 struct drm_device *dev = node->minor->dev; 3502 struct drm_device *dev = node->minor->dev;
3493 struct drm_encoder *encoder;
3494 struct intel_encoder *intel_encoder; 3503 struct intel_encoder *intel_encoder;
3495 struct intel_digital_port *intel_dig_port; 3504 struct intel_digital_port *intel_dig_port;
3505 struct drm_connector *connector;
3506
3496 drm_modeset_lock_all(dev); 3507 drm_modeset_lock_all(dev);
3497 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { 3508 drm_for_each_connector(connector, dev) {
3498 intel_encoder = to_intel_encoder(encoder); 3509 if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort)
3499 if (intel_encoder->type != INTEL_OUTPUT_DISPLAYPORT) 3510 continue;
3511
3512 intel_encoder = intel_attached_encoder(connector);
3513 if (!intel_encoder || intel_encoder->type == INTEL_OUTPUT_DP_MST)
3500 continue; 3514 continue;
3501 intel_dig_port = enc_to_dig_port(encoder); 3515
3516 intel_dig_port = enc_to_dig_port(&intel_encoder->base);
3502 if (!intel_dig_port->dp.can_mst) 3517 if (!intel_dig_port->dp.can_mst)
3503 continue; 3518 continue;
3519
3504 seq_printf(m, "MST Source Port %c\n", 3520 seq_printf(m, "MST Source Port %c\n",
3505 port_name(intel_dig_port->port)); 3521 port_name(intel_dig_port->port));
3506 drm_dp_mst_dump_topology(m, &intel_dig_port->dp.mst_mgr); 3522 drm_dp_mst_dump_topology(m, &intel_dig_port->dp.mst_mgr);
@@ -3512,7 +3528,7 @@ static int i915_dp_mst_info(struct seq_file *m, void *unused)
3512static int i915_pipe_crc_open(struct inode *inode, struct file *filep) 3528static int i915_pipe_crc_open(struct inode *inode, struct file *filep)
3513{ 3529{
3514 struct pipe_crc_info *info = inode->i_private; 3530 struct pipe_crc_info *info = inode->i_private;
3515 struct drm_i915_private *dev_priv = info->dev->dev_private; 3531 struct drm_i915_private *dev_priv = to_i915(info->dev);
3516 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe]; 3532 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe];
3517 3533
3518 if (info->pipe >= INTEL_INFO(info->dev)->num_pipes) 3534 if (info->pipe >= INTEL_INFO(info->dev)->num_pipes)
@@ -3536,7 +3552,7 @@ static int i915_pipe_crc_open(struct inode *inode, struct file *filep)
3536static int i915_pipe_crc_release(struct inode *inode, struct file *filep) 3552static int i915_pipe_crc_release(struct inode *inode, struct file *filep)
3537{ 3553{
3538 struct pipe_crc_info *info = inode->i_private; 3554 struct pipe_crc_info *info = inode->i_private;
3539 struct drm_i915_private *dev_priv = info->dev->dev_private; 3555 struct drm_i915_private *dev_priv = to_i915(info->dev);
3540 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe]; 3556 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe];
3541 3557
3542 spin_lock_irq(&pipe_crc->lock); 3558 spin_lock_irq(&pipe_crc->lock);
@@ -3564,7 +3580,7 @@ i915_pipe_crc_read(struct file *filep, char __user *user_buf, size_t count,
3564{ 3580{
3565 struct pipe_crc_info *info = filep->private_data; 3581 struct pipe_crc_info *info = filep->private_data;
3566 struct drm_device *dev = info->dev; 3582 struct drm_device *dev = info->dev;
3567 struct drm_i915_private *dev_priv = dev->dev_private; 3583 struct drm_i915_private *dev_priv = to_i915(dev);
3568 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe]; 3584 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe];
3569 char buf[PIPE_CRC_BUFFER_LEN]; 3585 char buf[PIPE_CRC_BUFFER_LEN];
3570 int n_entries; 3586 int n_entries;
@@ -3697,7 +3713,7 @@ static const char *pipe_crc_source_name(enum intel_pipe_crc_source source)
3697static int display_crc_ctl_show(struct seq_file *m, void *data) 3713static int display_crc_ctl_show(struct seq_file *m, void *data)
3698{ 3714{
3699 struct drm_device *dev = m->private; 3715 struct drm_device *dev = m->private;
3700 struct drm_i915_private *dev_priv = dev->dev_private; 3716 struct drm_i915_private *dev_priv = to_i915(dev);
3701 int i; 3717 int i;
3702 3718
3703 for (i = 0; i < I915_MAX_PIPES; i++) 3719 for (i = 0; i < I915_MAX_PIPES; i++)
@@ -3758,7 +3774,7 @@ static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe,
3758 case INTEL_OUTPUT_TVOUT: 3774 case INTEL_OUTPUT_TVOUT:
3759 *source = INTEL_PIPE_CRC_SOURCE_TV; 3775 *source = INTEL_PIPE_CRC_SOURCE_TV;
3760 break; 3776 break;
3761 case INTEL_OUTPUT_DISPLAYPORT: 3777 case INTEL_OUTPUT_DP:
3762 case INTEL_OUTPUT_EDP: 3778 case INTEL_OUTPUT_EDP:
3763 dig_port = enc_to_dig_port(&encoder->base); 3779 dig_port = enc_to_dig_port(&encoder->base);
3764 switch (dig_port->port) { 3780 switch (dig_port->port) {
@@ -3791,7 +3807,7 @@ static int vlv_pipe_crc_ctl_reg(struct drm_device *dev,
3791 enum intel_pipe_crc_source *source, 3807 enum intel_pipe_crc_source *source,
3792 uint32_t *val) 3808 uint32_t *val)
3793{ 3809{
3794 struct drm_i915_private *dev_priv = dev->dev_private; 3810 struct drm_i915_private *dev_priv = to_i915(dev);
3795 bool need_stable_symbols = false; 3811 bool need_stable_symbols = false;
3796 3812
3797 if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) { 3813 if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) {
@@ -3862,7 +3878,7 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev,
3862 enum intel_pipe_crc_source *source, 3878 enum intel_pipe_crc_source *source,
3863 uint32_t *val) 3879 uint32_t *val)
3864{ 3880{
3865 struct drm_i915_private *dev_priv = dev->dev_private; 3881 struct drm_i915_private *dev_priv = to_i915(dev);
3866 bool need_stable_symbols = false; 3882 bool need_stable_symbols = false;
3867 3883
3868 if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) { 3884 if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) {
@@ -3936,7 +3952,7 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev,
3936static void vlv_undo_pipe_scramble_reset(struct drm_device *dev, 3952static void vlv_undo_pipe_scramble_reset(struct drm_device *dev,
3937 enum pipe pipe) 3953 enum pipe pipe)
3938{ 3954{
3939 struct drm_i915_private *dev_priv = dev->dev_private; 3955 struct drm_i915_private *dev_priv = to_i915(dev);
3940 uint32_t tmp = I915_READ(PORT_DFT2_G4X); 3956 uint32_t tmp = I915_READ(PORT_DFT2_G4X);
3941 3957
3942 switch (pipe) { 3958 switch (pipe) {
@@ -3961,7 +3977,7 @@ static void vlv_undo_pipe_scramble_reset(struct drm_device *dev,
3961static void g4x_undo_pipe_scramble_reset(struct drm_device *dev, 3977static void g4x_undo_pipe_scramble_reset(struct drm_device *dev,
3962 enum pipe pipe) 3978 enum pipe pipe)
3963{ 3979{
3964 struct drm_i915_private *dev_priv = dev->dev_private; 3980 struct drm_i915_private *dev_priv = to_i915(dev);
3965 uint32_t tmp = I915_READ(PORT_DFT2_G4X); 3981 uint32_t tmp = I915_READ(PORT_DFT2_G4X);
3966 3982
3967 if (pipe == PIPE_A) 3983 if (pipe == PIPE_A)
@@ -4004,7 +4020,7 @@ static int ilk_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source,
4004 4020
4005static void hsw_trans_edp_pipe_A_crc_wa(struct drm_device *dev, bool enable) 4021static void hsw_trans_edp_pipe_A_crc_wa(struct drm_device *dev, bool enable)
4006{ 4022{
4007 struct drm_i915_private *dev_priv = dev->dev_private; 4023 struct drm_i915_private *dev_priv = to_i915(dev);
4008 struct intel_crtc *crtc = 4024 struct intel_crtc *crtc =
4009 to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_A]); 4025 to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_A]);
4010 struct intel_crtc_state *pipe_config; 4026 struct intel_crtc_state *pipe_config;
@@ -4072,7 +4088,7 @@ static int ivb_pipe_crc_ctl_reg(struct drm_device *dev,
4072static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe, 4088static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
4073 enum intel_pipe_crc_source source) 4089 enum intel_pipe_crc_source source)
4074{ 4090{
4075 struct drm_i915_private *dev_priv = dev->dev_private; 4091 struct drm_i915_private *dev_priv = to_i915(dev);
4076 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe]; 4092 struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe];
4077 struct intel_crtc *crtc = to_intel_crtc(intel_get_crtc_for_pipe(dev, 4093 struct intel_crtc *crtc = to_intel_crtc(intel_get_crtc_for_pipe(dev,
4078 pipe)); 4094 pipe));
@@ -4579,7 +4595,7 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
4579static int pri_wm_latency_show(struct seq_file *m, void *data) 4595static int pri_wm_latency_show(struct seq_file *m, void *data)
4580{ 4596{
4581 struct drm_device *dev = m->private; 4597 struct drm_device *dev = m->private;
4582 struct drm_i915_private *dev_priv = dev->dev_private; 4598 struct drm_i915_private *dev_priv = to_i915(dev);
4583 const uint16_t *latencies; 4599 const uint16_t *latencies;
4584 4600
4585 if (INTEL_INFO(dev)->gen >= 9) 4601 if (INTEL_INFO(dev)->gen >= 9)
@@ -4595,7 +4611,7 @@ static int pri_wm_latency_show(struct seq_file *m, void *data)
4595static int spr_wm_latency_show(struct seq_file *m, void *data) 4611static int spr_wm_latency_show(struct seq_file *m, void *data)
4596{ 4612{
4597 struct drm_device *dev = m->private; 4613 struct drm_device *dev = m->private;
4598 struct drm_i915_private *dev_priv = dev->dev_private; 4614 struct drm_i915_private *dev_priv = to_i915(dev);
4599 const uint16_t *latencies; 4615 const uint16_t *latencies;
4600 4616
4601 if (INTEL_INFO(dev)->gen >= 9) 4617 if (INTEL_INFO(dev)->gen >= 9)
@@ -4611,7 +4627,7 @@ static int spr_wm_latency_show(struct seq_file *m, void *data)
4611static int cur_wm_latency_show(struct seq_file *m, void *data) 4627static int cur_wm_latency_show(struct seq_file *m, void *data)
4612{ 4628{
4613 struct drm_device *dev = m->private; 4629 struct drm_device *dev = m->private;
4614 struct drm_i915_private *dev_priv = dev->dev_private; 4630 struct drm_i915_private *dev_priv = to_i915(dev);
4615 const uint16_t *latencies; 4631 const uint16_t *latencies;
4616 4632
4617 if (INTEL_INFO(dev)->gen >= 9) 4633 if (INTEL_INFO(dev)->gen >= 9)
@@ -4702,7 +4718,7 @@ static ssize_t pri_wm_latency_write(struct file *file, const char __user *ubuf,
4702{ 4718{
4703 struct seq_file *m = file->private_data; 4719 struct seq_file *m = file->private_data;
4704 struct drm_device *dev = m->private; 4720 struct drm_device *dev = m->private;
4705 struct drm_i915_private *dev_priv = dev->dev_private; 4721 struct drm_i915_private *dev_priv = to_i915(dev);
4706 uint16_t *latencies; 4722 uint16_t *latencies;
4707 4723
4708 if (INTEL_INFO(dev)->gen >= 9) 4724 if (INTEL_INFO(dev)->gen >= 9)
@@ -4718,7 +4734,7 @@ static ssize_t spr_wm_latency_write(struct file *file, const char __user *ubuf,
4718{ 4734{
4719 struct seq_file *m = file->private_data; 4735 struct seq_file *m = file->private_data;
4720 struct drm_device *dev = m->private; 4736 struct drm_device *dev = m->private;
4721 struct drm_i915_private *dev_priv = dev->dev_private; 4737 struct drm_i915_private *dev_priv = to_i915(dev);
4722 uint16_t *latencies; 4738 uint16_t *latencies;
4723 4739
4724 if (INTEL_INFO(dev)->gen >= 9) 4740 if (INTEL_INFO(dev)->gen >= 9)
@@ -4734,7 +4750,7 @@ static ssize_t cur_wm_latency_write(struct file *file, const char __user *ubuf,
4734{ 4750{
4735 struct seq_file *m = file->private_data; 4751 struct seq_file *m = file->private_data;
4736 struct drm_device *dev = m->private; 4752 struct drm_device *dev = m->private;
4737 struct drm_i915_private *dev_priv = dev->dev_private; 4753 struct drm_i915_private *dev_priv = to_i915(dev);
4738 uint16_t *latencies; 4754 uint16_t *latencies;
4739 4755
4740 if (INTEL_INFO(dev)->gen >= 9) 4756 if (INTEL_INFO(dev)->gen >= 9)
@@ -4776,7 +4792,7 @@ static int
4776i915_wedged_get(void *data, u64 *val) 4792i915_wedged_get(void *data, u64 *val)
4777{ 4793{
4778 struct drm_device *dev = data; 4794 struct drm_device *dev = data;
4779 struct drm_i915_private *dev_priv = dev->dev_private; 4795 struct drm_i915_private *dev_priv = to_i915(dev);
4780 4796
4781 *val = i915_terminally_wedged(&dev_priv->gpu_error); 4797 *val = i915_terminally_wedged(&dev_priv->gpu_error);
4782 4798
@@ -4787,7 +4803,7 @@ static int
4787i915_wedged_set(void *data, u64 val) 4803i915_wedged_set(void *data, u64 val)
4788{ 4804{
4789 struct drm_device *dev = data; 4805 struct drm_device *dev = data;
4790 struct drm_i915_private *dev_priv = dev->dev_private; 4806 struct drm_i915_private *dev_priv = to_i915(dev);
4791 4807
4792 /* 4808 /*
4793 * There is no safeguard against this debugfs entry colliding 4809 * There is no safeguard against this debugfs entry colliding
@@ -4815,44 +4831,10 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops,
4815 "%llu\n"); 4831 "%llu\n");
4816 4832
4817static int 4833static int
4818i915_ring_stop_get(void *data, u64 *val)
4819{
4820 struct drm_device *dev = data;
4821 struct drm_i915_private *dev_priv = dev->dev_private;
4822
4823 *val = dev_priv->gpu_error.stop_rings;
4824
4825 return 0;
4826}
4827
4828static int
4829i915_ring_stop_set(void *data, u64 val)
4830{
4831 struct drm_device *dev = data;
4832 struct drm_i915_private *dev_priv = dev->dev_private;
4833 int ret;
4834
4835 DRM_DEBUG_DRIVER("Stopping rings 0x%08llx\n", val);
4836
4837 ret = mutex_lock_interruptible(&dev->struct_mutex);
4838 if (ret)
4839 return ret;
4840
4841 dev_priv->gpu_error.stop_rings = val;
4842 mutex_unlock(&dev->struct_mutex);
4843
4844 return 0;
4845}
4846
4847DEFINE_SIMPLE_ATTRIBUTE(i915_ring_stop_fops,
4848 i915_ring_stop_get, i915_ring_stop_set,
4849 "0x%08llx\n");
4850
4851static int
4852i915_ring_missed_irq_get(void *data, u64 *val) 4834i915_ring_missed_irq_get(void *data, u64 *val)
4853{ 4835{
4854 struct drm_device *dev = data; 4836 struct drm_device *dev = data;
4855 struct drm_i915_private *dev_priv = dev->dev_private; 4837 struct drm_i915_private *dev_priv = to_i915(dev);
4856 4838
4857 *val = dev_priv->gpu_error.missed_irq_rings; 4839 *val = dev_priv->gpu_error.missed_irq_rings;
4858 return 0; 4840 return 0;
@@ -4862,7 +4844,7 @@ static int
4862i915_ring_missed_irq_set(void *data, u64 val) 4844i915_ring_missed_irq_set(void *data, u64 val)
4863{ 4845{
4864 struct drm_device *dev = data; 4846 struct drm_device *dev = data;
4865 struct drm_i915_private *dev_priv = dev->dev_private; 4847 struct drm_i915_private *dev_priv = to_i915(dev);
4866 int ret; 4848 int ret;
4867 4849
4868 /* Lock against concurrent debugfs callers */ 4850 /* Lock against concurrent debugfs callers */
@@ -4883,7 +4865,7 @@ static int
4883i915_ring_test_irq_get(void *data, u64 *val) 4865i915_ring_test_irq_get(void *data, u64 *val)
4884{ 4866{
4885 struct drm_device *dev = data; 4867 struct drm_device *dev = data;
4886 struct drm_i915_private *dev_priv = dev->dev_private; 4868 struct drm_i915_private *dev_priv = to_i915(dev);
4887 4869
4888 *val = dev_priv->gpu_error.test_irq_rings; 4870 *val = dev_priv->gpu_error.test_irq_rings;
4889 4871
@@ -4894,18 +4876,11 @@ static int
4894i915_ring_test_irq_set(void *data, u64 val) 4876i915_ring_test_irq_set(void *data, u64 val)
4895{ 4877{
4896 struct drm_device *dev = data; 4878 struct drm_device *dev = data;
4897 struct drm_i915_private *dev_priv = dev->dev_private; 4879 struct drm_i915_private *dev_priv = to_i915(dev);
4898 int ret;
4899 4880
4881 val &= INTEL_INFO(dev_priv)->ring_mask;
4900 DRM_DEBUG_DRIVER("Masking interrupts on rings 0x%08llx\n", val); 4882 DRM_DEBUG_DRIVER("Masking interrupts on rings 0x%08llx\n", val);
4901
4902 /* Lock against concurrent debugfs callers */
4903 ret = mutex_lock_interruptible(&dev->struct_mutex);
4904 if (ret)
4905 return ret;
4906
4907 dev_priv->gpu_error.test_irq_rings = val; 4883 dev_priv->gpu_error.test_irq_rings = val;
4908 mutex_unlock(&dev->struct_mutex);
4909 4884
4910 return 0; 4885 return 0;
4911} 4886}
@@ -4934,7 +4909,7 @@ static int
4934i915_drop_caches_set(void *data, u64 val) 4909i915_drop_caches_set(void *data, u64 val)
4935{ 4910{
4936 struct drm_device *dev = data; 4911 struct drm_device *dev = data;
4937 struct drm_i915_private *dev_priv = dev->dev_private; 4912 struct drm_i915_private *dev_priv = to_i915(dev);
4938 int ret; 4913 int ret;
4939 4914
4940 DRM_DEBUG("Dropping caches: 0x%08llx\n", val); 4915 DRM_DEBUG("Dropping caches: 0x%08llx\n", val);
@@ -4946,7 +4921,7 @@ i915_drop_caches_set(void *data, u64 val)
4946 return ret; 4921 return ret;
4947 4922
4948 if (val & DROP_ACTIVE) { 4923 if (val & DROP_ACTIVE) {
4949 ret = i915_gpu_idle(dev); 4924 ret = i915_gem_wait_for_idle(dev_priv);
4950 if (ret) 4925 if (ret)
4951 goto unlock; 4926 goto unlock;
4952 } 4927 }
@@ -4974,7 +4949,7 @@ static int
4974i915_max_freq_get(void *data, u64 *val) 4949i915_max_freq_get(void *data, u64 *val)
4975{ 4950{
4976 struct drm_device *dev = data; 4951 struct drm_device *dev = data;
4977 struct drm_i915_private *dev_priv = dev->dev_private; 4952 struct drm_i915_private *dev_priv = to_i915(dev);
4978 int ret; 4953 int ret;
4979 4954
4980 if (INTEL_INFO(dev)->gen < 6) 4955 if (INTEL_INFO(dev)->gen < 6)
@@ -4996,7 +4971,7 @@ static int
4996i915_max_freq_set(void *data, u64 val) 4971i915_max_freq_set(void *data, u64 val)
4997{ 4972{
4998 struct drm_device *dev = data; 4973 struct drm_device *dev = data;
4999 struct drm_i915_private *dev_priv = dev->dev_private; 4974 struct drm_i915_private *dev_priv = to_i915(dev);
5000 u32 hw_max, hw_min; 4975 u32 hw_max, hw_min;
5001 int ret; 4976 int ret;
5002 4977
@@ -5041,7 +5016,7 @@ static int
5041i915_min_freq_get(void *data, u64 *val) 5016i915_min_freq_get(void *data, u64 *val)
5042{ 5017{
5043 struct drm_device *dev = data; 5018 struct drm_device *dev = data;
5044 struct drm_i915_private *dev_priv = dev->dev_private; 5019 struct drm_i915_private *dev_priv = to_i915(dev);
5045 int ret; 5020 int ret;
5046 5021
5047 if (INTEL_INFO(dev)->gen < 6) 5022 if (INTEL_INFO(dev)->gen < 6)
@@ -5063,7 +5038,7 @@ static int
5063i915_min_freq_set(void *data, u64 val) 5038i915_min_freq_set(void *data, u64 val)
5064{ 5039{
5065 struct drm_device *dev = data; 5040 struct drm_device *dev = data;
5066 struct drm_i915_private *dev_priv = dev->dev_private; 5041 struct drm_i915_private *dev_priv = to_i915(dev);
5067 u32 hw_max, hw_min; 5042 u32 hw_max, hw_min;
5068 int ret; 5043 int ret;
5069 5044
@@ -5108,7 +5083,7 @@ static int
5108i915_cache_sharing_get(void *data, u64 *val) 5083i915_cache_sharing_get(void *data, u64 *val)
5109{ 5084{
5110 struct drm_device *dev = data; 5085 struct drm_device *dev = data;
5111 struct drm_i915_private *dev_priv = dev->dev_private; 5086 struct drm_i915_private *dev_priv = to_i915(dev);
5112 u32 snpcr; 5087 u32 snpcr;
5113 int ret; 5088 int ret;
5114 5089
@@ -5123,7 +5098,7 @@ i915_cache_sharing_get(void *data, u64 *val)
5123 snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); 5098 snpcr = I915_READ(GEN6_MBCUNIT_SNPCR);
5124 5099
5125 intel_runtime_pm_put(dev_priv); 5100 intel_runtime_pm_put(dev_priv);
5126 mutex_unlock(&dev_priv->dev->struct_mutex); 5101 mutex_unlock(&dev_priv->drm.struct_mutex);
5127 5102
5128 *val = (snpcr & GEN6_MBC_SNPCR_MASK) >> GEN6_MBC_SNPCR_SHIFT; 5103 *val = (snpcr & GEN6_MBC_SNPCR_MASK) >> GEN6_MBC_SNPCR_SHIFT;
5129 5104
@@ -5134,7 +5109,7 @@ static int
5134i915_cache_sharing_set(void *data, u64 val) 5109i915_cache_sharing_set(void *data, u64 val)
5135{ 5110{
5136 struct drm_device *dev = data; 5111 struct drm_device *dev = data;
5137 struct drm_i915_private *dev_priv = dev->dev_private; 5112 struct drm_i915_private *dev_priv = to_i915(dev);
5138 u32 snpcr; 5113 u32 snpcr;
5139 5114
5140 if (!(IS_GEN6(dev) || IS_GEN7(dev))) 5115 if (!(IS_GEN6(dev) || IS_GEN7(dev)))
@@ -5171,7 +5146,7 @@ struct sseu_dev_status {
5171static void cherryview_sseu_device_status(struct drm_device *dev, 5146static void cherryview_sseu_device_status(struct drm_device *dev,
5172 struct sseu_dev_status *stat) 5147 struct sseu_dev_status *stat)
5173{ 5148{
5174 struct drm_i915_private *dev_priv = dev->dev_private; 5149 struct drm_i915_private *dev_priv = to_i915(dev);
5175 int ss_max = 2; 5150 int ss_max = 2;
5176 int ss; 5151 int ss;
5177 u32 sig1[ss_max], sig2[ss_max]; 5152 u32 sig1[ss_max], sig2[ss_max];
@@ -5203,7 +5178,7 @@ static void cherryview_sseu_device_status(struct drm_device *dev,
5203static void gen9_sseu_device_status(struct drm_device *dev, 5178static void gen9_sseu_device_status(struct drm_device *dev,
5204 struct sseu_dev_status *stat) 5179 struct sseu_dev_status *stat)
5205{ 5180{
5206 struct drm_i915_private *dev_priv = dev->dev_private; 5181 struct drm_i915_private *dev_priv = to_i915(dev);
5207 int s_max = 3, ss_max = 4; 5182 int s_max = 3, ss_max = 4;
5208 int s, ss; 5183 int s, ss;
5209 u32 s_reg[s_max], eu_reg[2*s_max], eu_mask[2]; 5184 u32 s_reg[s_max], eu_reg[2*s_max], eu_mask[2];
@@ -5268,7 +5243,7 @@ static void gen9_sseu_device_status(struct drm_device *dev,
5268static void broadwell_sseu_device_status(struct drm_device *dev, 5243static void broadwell_sseu_device_status(struct drm_device *dev,
5269 struct sseu_dev_status *stat) 5244 struct sseu_dev_status *stat)
5270{ 5245{
5271 struct drm_i915_private *dev_priv = dev->dev_private; 5246 struct drm_i915_private *dev_priv = to_i915(dev);
5272 int s; 5247 int s;
5273 u32 slice_info = I915_READ(GEN8_GT_SLICE_INFO); 5248 u32 slice_info = I915_READ(GEN8_GT_SLICE_INFO);
5274 5249
@@ -5347,7 +5322,7 @@ static int i915_sseu_status(struct seq_file *m, void *unused)
5347static int i915_forcewake_open(struct inode *inode, struct file *file) 5322static int i915_forcewake_open(struct inode *inode, struct file *file)
5348{ 5323{
5349 struct drm_device *dev = inode->i_private; 5324 struct drm_device *dev = inode->i_private;
5350 struct drm_i915_private *dev_priv = dev->dev_private; 5325 struct drm_i915_private *dev_priv = to_i915(dev);
5351 5326
5352 if (INTEL_INFO(dev)->gen < 6) 5327 if (INTEL_INFO(dev)->gen < 6)
5353 return 0; 5328 return 0;
@@ -5361,7 +5336,7 @@ static int i915_forcewake_open(struct inode *inode, struct file *file)
5361static int i915_forcewake_release(struct inode *inode, struct file *file) 5336static int i915_forcewake_release(struct inode *inode, struct file *file)
5362{ 5337{
5363 struct drm_device *dev = inode->i_private; 5338 struct drm_device *dev = inode->i_private;
5364 struct drm_i915_private *dev_priv = dev->dev_private; 5339 struct drm_i915_private *dev_priv = to_i915(dev);
5365 5340
5366 if (INTEL_INFO(dev)->gen < 6) 5341 if (INTEL_INFO(dev)->gen < 6)
5367 return 0; 5342 return 0;
@@ -5477,7 +5452,6 @@ static const struct i915_debugfs_files {
5477 {"i915_max_freq", &i915_max_freq_fops}, 5452 {"i915_max_freq", &i915_max_freq_fops},
5478 {"i915_min_freq", &i915_min_freq_fops}, 5453 {"i915_min_freq", &i915_min_freq_fops},
5479 {"i915_cache_sharing", &i915_cache_sharing_fops}, 5454 {"i915_cache_sharing", &i915_cache_sharing_fops},
5480 {"i915_ring_stop", &i915_ring_stop_fops},
5481 {"i915_ring_missed_irq", &i915_ring_missed_irq_fops}, 5455 {"i915_ring_missed_irq", &i915_ring_missed_irq_fops},
5482 {"i915_ring_test_irq", &i915_ring_test_irq_fops}, 5456 {"i915_ring_test_irq", &i915_ring_test_irq_fops},
5483 {"i915_gem_drop_caches", &i915_drop_caches_fops}, 5457 {"i915_gem_drop_caches", &i915_drop_caches_fops},
@@ -5495,7 +5469,7 @@ static const struct i915_debugfs_files {
5495 5469
5496void intel_display_crc_init(struct drm_device *dev) 5470void intel_display_crc_init(struct drm_device *dev)
5497{ 5471{
5498 struct drm_i915_private *dev_priv = dev->dev_private; 5472 struct drm_i915_private *dev_priv = to_i915(dev);
5499 enum pipe pipe; 5473 enum pipe pipe;
5500 5474
5501 for_each_pipe(dev_priv, pipe) { 5475 for_each_pipe(dev_priv, pipe) {
@@ -5507,8 +5481,9 @@ void intel_display_crc_init(struct drm_device *dev)
5507 } 5481 }
5508} 5482}
5509 5483
5510int i915_debugfs_init(struct drm_minor *minor) 5484int i915_debugfs_register(struct drm_i915_private *dev_priv)
5511{ 5485{
5486 struct drm_minor *minor = dev_priv->drm.primary;
5512 int ret, i; 5487 int ret, i;
5513 5488
5514 ret = i915_forcewake_create(minor->debugfs_root, minor); 5489 ret = i915_forcewake_create(minor->debugfs_root, minor);
@@ -5534,8 +5509,9 @@ int i915_debugfs_init(struct drm_minor *minor)
5534 minor->debugfs_root, minor); 5509 minor->debugfs_root, minor);
5535} 5510}
5536 5511
5537void i915_debugfs_cleanup(struct drm_minor *minor) 5512void i915_debugfs_unregister(struct drm_i915_private *dev_priv)
5538{ 5513{
5514 struct drm_minor *minor = dev_priv->drm.primary;
5539 int i; 5515 int i;
5540 5516
5541 drm_debugfs_remove_files(i915_debugfs_list, 5517 drm_debugfs_remove_files(i915_debugfs_list,