intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Use atomic state in debugfs.
@ 2016-03-24 14:03 Maarten Lankhorst
  2016-03-24 15:31 ` ✗ Fi.CI.BAT: warning for " Patchwork
  0 siblings, 1 reply; 2+ messages in thread
From: Maarten Lankhorst @ 2016-03-24 14:03 UTC (permalink / raw)
  To: intel-gfx

Use proper locking, connector_state and encoder masks.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c | 72 ++++++++++++++++++-------------------
 1 file changed, 34 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 9b740d8a3f5e..37b06ea9b112 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2655,13 +2655,11 @@ static int i915_sink_crc(struct seq_file *m, void *data)
 	drm_modeset_lock_all(dev);
 	for_each_intel_connector(dev, connector) {
 
-		if (connector->base.dpms != DRM_MODE_DPMS_ON)
+		if (!connector->base.state->crtc ||
+		    !connector->base.state->crtc->state->active)
 			continue;
 
-		if (!connector->base.encoder)
-			continue;
-
-		encoder = to_intel_encoder(connector->base.encoder);
+		encoder = to_intel_encoder(connector->base.state->best_encoder);
 		if (encoder->type != INTEL_OUTPUT_EDP)
 			continue;
 
@@ -2837,14 +2835,17 @@ static void intel_encoder_info(struct seq_file *m,
 	struct drm_info_node *node = m->private;
 	struct drm_device *dev = node->minor->dev;
 	struct drm_crtc *crtc = &intel_crtc->base;
-	struct intel_connector *intel_connector;
+	struct drm_connector *connector;
 	struct drm_encoder *encoder;
 
 	encoder = &intel_encoder->base;
 	seq_printf(m, "\tencoder %d: type: %s, connectors:\n",
 		   encoder->base.id, encoder->name);
-	for_each_connector_on_encoder(dev, encoder, intel_connector) {
-		struct drm_connector *connector = &intel_connector->base;
+
+	drm_for_each_connector(connector, dev) {
+		if (connector->state->best_encoder != &intel_encoder->base)
+			continue;
+
 		seq_printf(m, "\t\tconnector %d: type: %s, status: %s",
 			   connector->base.id,
 			   connector->name,
@@ -3695,30 +3696,24 @@ static int i8xx_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source,
 static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe,
 				     enum intel_pipe_crc_source *source)
 {
-	struct intel_encoder *encoder;
-	struct intel_crtc *crtc;
+	struct drm_encoder *encoder;
+	struct drm_crtc *crtc;
 	struct intel_digital_port *dig_port;
 	int ret = 0;
 
 	*source = INTEL_PIPE_CRC_SOURCE_PIPE;
 
 	drm_modeset_lock_all(dev);
-	for_each_intel_encoder(dev, encoder) {
-		if (!encoder->base.crtc)
-			continue;
+	crtc = to_i915(dev)->pipe_to_crtc_mapping[pipe];
 
-		crtc = to_intel_crtc(encoder->base.crtc);
-
-		if (crtc->pipe != pipe)
-			continue;
-
-		switch (encoder->type) {
+	drm_for_each_encoder_mask(encoder, dev, crtc->state->encoder_mask) {
+		switch (to_intel_encoder(encoder)->type) {
 		case INTEL_OUTPUT_TVOUT:
 			*source = INTEL_PIPE_CRC_SOURCE_TV;
 			break;
 		case INTEL_OUTPUT_DISPLAYPORT:
 		case INTEL_OUTPUT_EDP:
-			dig_port = enc_to_dig_port(&encoder->base);
+			dig_port = enc_to_dig_port(encoder);
 			switch (dig_port->port) {
 			case PORT_B:
 				*source = INTEL_PIPE_CRC_SOURCE_DP_B;
@@ -4322,14 +4317,11 @@ static ssize_t i915_displayport_test_active_write(struct file *file,
 	int status = 0;
 	struct drm_device *dev;
 	struct drm_connector *connector;
-	struct list_head *connector_list;
 	struct intel_dp *intel_dp;
 	int val = 0;
 
 	dev = ((struct seq_file *)file->private_data)->private;
 
-	connector_list = &dev->mode_config.connector_list;
-
 	if (len == 0)
 		return 0;
 
@@ -4337,6 +4329,8 @@ static ssize_t i915_displayport_test_active_write(struct file *file,
 	if (!input_buffer)
 		return -ENOMEM;
 
+	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+
 	if (copy_from_user(input_buffer, ubuf, len)) {
 		status = -EFAULT;
 		goto out;
@@ -4345,15 +4339,14 @@ static ssize_t i915_displayport_test_active_write(struct file *file,
 	input_buffer[len] = '\0';
 	DRM_DEBUG_DRIVER("Copied %d bytes from user\n", (unsigned int)len);
 
-	list_for_each_entry(connector, connector_list, head) {
-
+	drm_for_each_connector(connector, dev) {
 		if (connector->connector_type !=
 		    DRM_MODE_CONNECTOR_DisplayPort)
 			continue;
 
 		if (connector->status == connector_status_connected &&
-		    connector->encoder != NULL) {
-			intel_dp = enc_to_intel_dp(connector->encoder);
+		    connector->state->best_encoder != NULL) {
+			intel_dp = enc_to_intel_dp(connector->state->best_encoder);
 			status = kstrtoint(input_buffer, 10, &val);
 			if (status < 0)
 				goto out;
@@ -4368,6 +4361,7 @@ static ssize_t i915_displayport_test_active_write(struct file *file,
 		}
 	}
 out:
+	drm_modeset_unlock(&dev->mode_config.connection_mutex);
 	kfree(input_buffer);
 	if (status < 0)
 		return status;
@@ -4380,18 +4374,18 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data)
 {
 	struct drm_device *dev = m->private;
 	struct drm_connector *connector;
-	struct list_head *connector_list = &dev->mode_config.connector_list;
 	struct intel_dp *intel_dp;
 
-	list_for_each_entry(connector, connector_list, head) {
+	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+	drm_for_each_connector(connector, dev) {
 
 		if (connector->connector_type !=
 		    DRM_MODE_CONNECTOR_DisplayPort)
 			continue;
 
 		if (connector->status == connector_status_connected &&
-		    connector->encoder != NULL) {
-			intel_dp = enc_to_intel_dp(connector->encoder);
+		    connector->state->best_encoder != NULL) {
+			intel_dp = enc_to_intel_dp(connector->state->best_encoder);
 			if (intel_dp->compliance_test_active)
 				seq_puts(m, "1");
 			else
@@ -4399,6 +4393,7 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data)
 		} else
 			seq_puts(m, "0");
 	}
+	drm_modeset_unlock(&dev->mode_config.connection_mutex);
 
 	return 0;
 }
@@ -4424,10 +4419,10 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data)
 {
 	struct drm_device *dev = m->private;
 	struct drm_connector *connector;
-	struct list_head *connector_list = &dev->mode_config.connector_list;
 	struct intel_dp *intel_dp;
 
-	list_for_each_entry(connector, connector_list, head) {
+	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+	drm_for_each_connector(connector, dev) {
 
 		if (connector->connector_type !=
 		    DRM_MODE_CONNECTOR_DisplayPort)
@@ -4435,11 +4430,12 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data)
 
 		if (connector->status == connector_status_connected &&
 		    connector->encoder != NULL) {
-			intel_dp = enc_to_intel_dp(connector->encoder);
+			intel_dp = enc_to_intel_dp(connector->state->best_encoder);
 			seq_printf(m, "%lx", intel_dp->compliance_test_data);
 		} else
 			seq_puts(m, "0");
 	}
+	drm_modeset_unlock(&dev->mode_config.connection_mutex);
 
 	return 0;
 }
@@ -4463,22 +4459,22 @@ static int i915_displayport_test_type_show(struct seq_file *m, void *data)
 {
 	struct drm_device *dev = m->private;
 	struct drm_connector *connector;
-	struct list_head *connector_list = &dev->mode_config.connector_list;
 	struct intel_dp *intel_dp;
 
-	list_for_each_entry(connector, connector_list, head) {
-
+	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
+	drm_for_each_connector(connector, dev) {
 		if (connector->connector_type !=
 		    DRM_MODE_CONNECTOR_DisplayPort)
 			continue;
 
 		if (connector->status == connector_status_connected &&
 		    connector->encoder != NULL) {
-			intel_dp = enc_to_intel_dp(connector->encoder);
+			intel_dp = enc_to_intel_dp(connector->state->best_encoder);
 			seq_printf(m, "%02lx", intel_dp->compliance_test_type);
 		} else
 			seq_puts(m, "0");
 	}
+	drm_modeset_unlock(&dev->mode_config.connection_mutex);
 
 	return 0;
 }
-- 
2.1.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* ✗ Fi.CI.BAT: warning for drm/i915: Use atomic state in debugfs.
  2016-03-24 14:03 [PATCH] drm/i915: Use atomic state in debugfs Maarten Lankhorst
@ 2016-03-24 15:31 ` Patchwork
  0 siblings, 0 replies; 2+ messages in thread
From: Patchwork @ 2016-03-24 15:31 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Use atomic state in debugfs.
URL   : https://patchwork.freedesktop.org/series/4862/
State : warning

== Summary ==

Series 4862v1 drm/i915: Use atomic state in debugfs.
http://patchwork.freedesktop.org/api/1.0/series/4862/revisions/1/mbox/

Test pm_rpm:
        Subgroup basic-pci-d3-state:
                pass       -> DMESG-WARN (bsw-nuc-2)
                pass       -> DMESG-WARN (byt-nuc)
        Subgroup basic-rte:
                dmesg-warn -> PASS       (byt-nuc) UNSTABLE

bdw-nuci7        total:192  pass:179  dwarn:0   dfail:0   fail:1   skip:12 
bdw-ultra        total:192  pass:170  dwarn:0   dfail:0   fail:1   skip:21 
bsw-nuc-2        total:192  pass:154  dwarn:1   dfail:0   fail:0   skip:37 
byt-nuc          total:192  pass:156  dwarn:1   dfail:0   fail:0   skip:35 
hsw-brixbox      total:192  pass:170  dwarn:0   dfail:0   fail:0   skip:22 
hsw-gt2          total:192  pass:175  dwarn:0   dfail:0   fail:0   skip:17 
ivb-t430s        total:192  pass:167  dwarn:0   dfail:0   fail:0   skip:25 
skl-i7k-2        total:192  pass:169  dwarn:0   dfail:0   fail:0   skip:23 
skl-nuci5        total:192  pass:181  dwarn:0   dfail:0   fail:0   skip:11 
snb-dellxps      total:192  pass:158  dwarn:0   dfail:0   fail:0   skip:34 
snb-x220t        total:192  pass:158  dwarn:0   dfail:0   fail:1   skip:33 

Results at /archive/results/CI_IGT_test/Patchwork_1709/

f5d413cccefa1f93d64c34f357151d42add63a84 drm-intel-nightly: 2016y-03m-24d-14h-34m-29s UTC integration manifest
c8cfa58fb2ffcc7e50453ad3bd0b673a5b4a8d6b drm/i915: Use atomic state in debugfs.

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-03-24 15:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-24 14:03 [PATCH] drm/i915: Use atomic state in debugfs Maarten Lankhorst
2016-03-24 15:31 ` ✗ Fi.CI.BAT: warning for " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).