Message ID | 87h99iraw4.fsf@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Am Mittwoch, 14. September 2016, 14:14:35 CEST schrieb Jani Nikula: > On Wed, 14 Sep 2016, Jani Nikula <jani.nikula@linux.intel.com> wrote: > > On Wed, 14 Sep 2016, Pavel Machek <pavel@ucw.cz> wrote: > >> For the "sometimes need xrandr after resume": I don't think I can > >> bisect that. It only happens sometimes :-(. But there's something > >> helpful in the logs: > >> > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] i915 0000:00:02.0: HDMI-A-1: EDID block 0 invalid. > > > > Pavel, Martin, do you always see this when the display fails to resume? > > Is it HDMI/DVI for both of you? > > Please try this patch, backported from our next. Was busy up to now, and weekend also quite full already. Thing is: I didn´t see this blank screen thing with 4.8-rc6 so far. And I did not have above EDID stuff in my log either. So I first wait whether I see blank screen again and if so, then know that a test would make sense. Maybe I see it before I complete a rc7 or rc8 (if there will be one), then I would include the patch of course.
On Thu, 15 Sep 2016, Martin Steigerwald <martin@lichtvoll.de> wrote: > Am Mittwoch, 14. September 2016, 14:14:35 CEST schrieb Jani Nikula: >> On Wed, 14 Sep 2016, Jani Nikula <jani.nikula@linux.intel.com> wrote: >> > On Wed, 14 Sep 2016, Pavel Machek <pavel@ucw.cz> wrote: >> >> For the "sometimes need xrandr after resume": I don't think I can >> >> bisect that. It only happens sometimes :-(. But there's something >> >> helpful in the logs: >> >> >> >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is >> >> invalid, remainder is 130 >> >> [ 1856.218863] Raw EDID: >> >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is >> >> invalid, remainder is 130 >> >> [ 1856.218863] Raw EDID: >> >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is >> >> invalid, remainder is 130 >> >> [ 1856.218863] Raw EDID: >> >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is >> >> invalid, remainder is 130 >> >> [ 1856.218863] Raw EDID: >> >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >> >> [ 1856.218863] i915 0000:00:02.0: HDMI-A-1: EDID block 0 invalid. >> > >> > Pavel, Martin, do you always see this when the display fails to resume? >> > Is it HDMI/DVI for both of you? >> >> Please try this patch, backported from our next. > > Was busy up to now, and weekend also quite full already. > > Thing is: I didn´t see this blank screen thing with 4.8-rc6 so far. And I did > not have above EDID stuff in my log either. So I first wait whether I see > blank screen again and if so, then know that a test would make sense. Maybe I > see it before I complete a rc7 or rc8 (if there will be one), then I would > include the patch of course. N.b. it's entirely possible you and Pavel have different issues. BR, Jani.
Hi! On Wed 2016-09-14 14:14:35, Jani Nikula wrote: > On Wed, 14 Sep 2016, Jani Nikula <jani.nikula@linux.intel.com> wrote: > > On Wed, 14 Sep 2016, Pavel Machek <pavel@ucw.cz> wrote: > >> For the "sometimes need xrandr after resume": I don't think I can > >> bisect that. It only happens sometimes :-(. But there's something > >> helpful in the logs: > > > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] [drm:drm_edid_block_valid] *ERROR* EDID checksum is > >> invalid, remainder is 130 > >> [ 1856.218863] Raw EDID: > >> [ 1856.218863] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff > >> [ 1856.218863] i915 0000:00:02.0: HDMI-A-1: EDID block 0 invalid. > > > > Pavel, Martin, do you always see this when the display fails to resume? > > Is it HDMI/DVI for both of you? > > Please try this patch, backported from our next. Sorry, spam filter hidden your emails. I believe I still see the issue on v4.9-rc1. ... does it still make sense to retry the patch? What I also is re-aranged windows. So I get resume, I get both monitors, but I also see that X windows lost connection with the big monitor (and re-arranged my windows for me). Oh and I guess I should mention: 1) Yes, I only see the issue on the DVI output. VGA seems to work. 2) I do have power switch on the monitors, so it is possible that during resume, monitors have no AC power. (Not merely turned off by the soft switch. No AC power.) Thanks, Pavel
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 21b04c3eda41..81c9b89b7a38 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -4148,7 +4148,7 @@ static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv, * * Return %true if @port is connected, %false otherwise. */ -bool intel_digital_port_connected(struct drm_i915_private *dev_priv, +static bool intel_digital_port_connected(struct drm_i915_private *dev_priv, struct intel_digital_port *port) { if (HAS_PCH_IBX(dev_priv)) diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index ff399b9a5c1f..2c74213a8467 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -1387,8 +1387,6 @@ void intel_edp_drrs_disable(struct intel_dp *intel_dp); void intel_edp_drrs_invalidate(struct drm_device *dev, unsigned frontbuffer_bits); void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits); -bool intel_digital_port_connected(struct drm_i915_private *dev_priv, - struct intel_digital_port *port); void intel_dp_program_link_training_pattern(struct intel_dp *intel_dp, diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 4df9f384910c..c3aa9e670d15 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1422,24 +1422,22 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid) } static bool -intel_hdmi_set_edid(struct drm_connector *connector, bool force) +intel_hdmi_set_edid(struct drm_connector *connector) { struct drm_i915_private *dev_priv = to_i915(connector->dev); struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); - struct edid *edid = NULL; + struct edid *edid; bool connected = false; - if (force) { - intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); + intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); - edid = drm_get_edid(connector, - intel_gmbus_get_adapter(dev_priv, - intel_hdmi->ddc_bus)); + edid = drm_get_edid(connector, + intel_gmbus_get_adapter(dev_priv, + intel_hdmi->ddc_bus)); - intel_hdmi_dp_dual_mode_detect(connector, edid != NULL); + intel_hdmi_dp_dual_mode_detect(connector, edid != NULL); - intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS); - } + intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS); to_intel_connector(connector)->detect_edid = edid; if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) { @@ -1465,37 +1463,16 @@ static enum drm_connector_status intel_hdmi_detect(struct drm_connector *connector, bool force) { enum drm_connector_status status; - struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); struct drm_i915_private *dev_priv = to_i915(connector->dev); - bool live_status = false; - unsigned int try; DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); - for (try = 0; !live_status && try < 9; try++) { - if (try) - msleep(10); - live_status = intel_digital_port_connected(dev_priv, - hdmi_to_dig_port(intel_hdmi)); - } - - if (!live_status) { - DRM_DEBUG_KMS("HDMI live status down\n"); - /* - * Live status register is not reliable on all intel platforms. - * So consider live_status only for certain platforms, for - * others, read EDID to determine presence of sink. - */ - if (INTEL_INFO(dev_priv)->gen < 7 || IS_IVYBRIDGE(dev_priv)) - live_status = true; - } - intel_hdmi_unset_edid(connector); - if (intel_hdmi_set_edid(connector, live_status)) { + if (intel_hdmi_set_edid(connector)) { struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI; @@ -1521,7 +1498,7 @@ intel_hdmi_force(struct drm_connector *connector) if (connector->status != connector_status_connected) return; - intel_hdmi_set_edid(connector, true); + intel_hdmi_set_edid(connector); hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI; }