* [PATCH 2/4] drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend()
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
@ 2017-01-20 14:28 ` Ander Conselvan de Oliveira
2017-01-20 14:58 ` Ville Syrjälä
2017-01-20 14:28 ` [PATCH 3/4] drm/i915: Fix calculation of rotated x and y offsets for planar formats Ander Conselvan de Oliveira
` (6 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: Ander Conselvan de Oliveira @ 2017-01-20 14:28 UTC (permalink / raw)
To: intel-gfx
Cc: Ander Conselvan de Oliveira, Daniel Vetter, stable, Daniel Vetter
An error in the condition for avoiding the call to intel_hpd_poll_init()
for valleyview and cherryview from intel_runtime_suspend() caused it to
be called unconditionally. Fix it.
Found by coverity.
Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd")
Cc: stable@vger.kernel.org
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Lyude <cpaul@redhat.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v4.9+
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
---
drivers/gpu/drm/i915/i915_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 4ae69eb..ca168b2 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -2377,7 +2377,7 @@ static int intel_runtime_suspend(struct device *kdev)
assert_forcewakes_inactive(dev_priv);
- if (!IS_VALLEYVIEW(dev_priv) || !IS_CHERRYVIEW(dev_priv))
+ if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
intel_hpd_poll_init(dev_priv);
DRM_DEBUG_KMS("Device suspended\n");
--
2.5.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 2/4] drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend()
2017-01-20 14:28 ` [PATCH 2/4] drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend() Ander Conselvan de Oliveira
@ 2017-01-20 14:58 ` Ville Syrjälä
0 siblings, 0 replies; 13+ messages in thread
From: Ville Syrjälä @ 2017-01-20 14:58 UTC (permalink / raw)
To: Ander Conselvan de Oliveira
Cc: Daniel Vetter, intel-gfx, stable, Daniel Vetter
On Fri, Jan 20, 2017 at 04:28:43PM +0200, Ander Conselvan de Oliveira wrote:
> An error in the condition for avoiding the call to intel_hpd_poll_init()
> for valleyview and cherryview from intel_runtime_suspend() caused it to
> be called unconditionally. Fix it.
>
> Found by coverity.
>
> Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd")
> Cc: stable@vger.kernel.org
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Lyude <cpaul@redhat.com>
> Cc: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v4.9+
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 4ae69eb..ca168b2 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -2377,7 +2377,7 @@ static int intel_runtime_suspend(struct device *kdev)
>
> assert_forcewakes_inactive(dev_priv);
>
> - if (!IS_VALLEYVIEW(dev_priv) || !IS_CHERRYVIEW(dev_priv))
> + if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv))
> intel_hpd_poll_init(dev_priv);
>
> DRM_DEBUG_KMS("Device suspended\n");
> --
> 2.5.5
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/4] drm/i915: Fix calculation of rotated x and y offsets for planar formats
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
2017-01-20 14:28 ` [PATCH 2/4] drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend() Ander Conselvan de Oliveira
@ 2017-01-20 14:28 ` Ander Conselvan de Oliveira
2017-01-20 15:00 ` Ville Syrjälä
2017-01-20 14:28 ` [PATCH 4/4] drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic() Ander Conselvan de Oliveira
` (5 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: Ander Conselvan de Oliveira @ 2017-01-20 14:28 UTC (permalink / raw)
To: intel-gfx; +Cc: Ander Conselvan de Oliveira, stable, Daniel Vetter
Parameters tile_size, tile_width and tile_height were passed in the
wrong order to _intel_adjust_tile_offset() when calculating the rotated
offsets.
This doesn't fix any user visible bug, since for packaged formats new
and old offset are the same and the rotated offsets are within a tile
before they are fed to _intel_adjust_tile_offset(). In that case, the
offsets are unchanged. That is not true for planar formats, but those
are currently not supported.
Found by coverity.
Fixes: 66a2d927cb0e ("drm/i915: Make intel_adjust_tile_offset() work for linear buffers")
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v4.9+
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index bddadd9..0759e8b 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2578,8 +2578,9 @@ intel_fill_fb_info(struct drm_i915_private *dev_priv,
* We only keep the x/y offsets, so push all of the
* gtt offset into the x/y offsets.
*/
- _intel_adjust_tile_offset(&x, &y, tile_size,
- tile_width, tile_height, pitch_tiles,
+ _intel_adjust_tile_offset(&x, &y,
+ tile_width, tile_height,
+ tile_size, pitch_tiles,
gtt_offset_rotated * tile_size, 0);
gtt_offset_rotated += rot_info->plane[i].width * rot_info->plane[i].height;
--
2.5.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 3/4] drm/i915: Fix calculation of rotated x and y offsets for planar formats
2017-01-20 14:28 ` [PATCH 3/4] drm/i915: Fix calculation of rotated x and y offsets for planar formats Ander Conselvan de Oliveira
@ 2017-01-20 15:00 ` Ville Syrjälä
0 siblings, 0 replies; 13+ messages in thread
From: Ville Syrjälä @ 2017-01-20 15:00 UTC (permalink / raw)
To: Ander Conselvan de Oliveira; +Cc: Daniel Vetter, intel-gfx, stable
On Fri, Jan 20, 2017 at 04:28:44PM +0200, Ander Conselvan de Oliveira wrote:
> Parameters tile_size, tile_width and tile_height were passed in the
> wrong order to _intel_adjust_tile_offset() when calculating the rotated
> offsets.
>
> This doesn't fix any user visible bug, since for packaged formats new
> and old offset are the same and the rotated offsets are within a tile
> before they are fed to _intel_adjust_tile_offset(). In that case, the
> offsets are unchanged. That is not true for planar formats, but those
> are currently not supported.
>
> Found by coverity.
>
> Fixes: 66a2d927cb0e ("drm/i915: Make intel_adjust_tile_offset() work for linear buffers")
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
> Cc: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v4.9+
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
/me should really dig up whatever fb offset tests I had written earlier
and try to finish then...
> ---
> drivers/gpu/drm/i915/intel_display.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index bddadd9..0759e8b 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2578,8 +2578,9 @@ intel_fill_fb_info(struct drm_i915_private *dev_priv,
> * We only keep the x/y offsets, so push all of the
> * gtt offset into the x/y offsets.
> */
> - _intel_adjust_tile_offset(&x, &y, tile_size,
> - tile_width, tile_height, pitch_tiles,
> + _intel_adjust_tile_offset(&x, &y,
> + tile_width, tile_height,
> + tile_size, pitch_tiles,
> gtt_offset_rotated * tile_size, 0);
>
> gtt_offset_rotated += rot_info->plane[i].width * rot_info->plane[i].height;
> --
> 2.5.5
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 4/4] drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic()
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
2017-01-20 14:28 ` [PATCH 2/4] drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend() Ander Conselvan de Oliveira
2017-01-20 14:28 ` [PATCH 3/4] drm/i915: Fix calculation of rotated x and y offsets for planar formats Ander Conselvan de Oliveira
@ 2017-01-20 14:28 ` Ander Conselvan de Oliveira
2017-01-20 15:01 ` [Intel-gfx] " Ville Syrjälä
2017-01-20 14:51 ` [PATCH] drm/i915/crt: Keep the EDID for the whole detect cycle Chris Wilson
` (4 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: Ander Conselvan de Oliveira @ 2017-01-20 14:28 UTC (permalink / raw)
To: intel-gfx
Cc: Ander Conselvan de Oliveira, Daniel Vetter, stable, Daniel Vetter
In intel_crtc_disable_noatomic(), bail on a failure to allocate an
atomic state to avoid a NULL pointer dereference.
Found by coverity.
Fixes: 4a80655827af ("drm/i915: Pass atomic state to crtc enable/disable functions")
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v4.9+
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 0759e8b..38d5178 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -6882,6 +6882,12 @@ static void intel_crtc_disable_noatomic(struct drm_crtc *crtc)
}
state = drm_atomic_state_alloc(crtc->dev);
+ if (!state) {
+ DRM_DEBUG_KMS("failed to disable [CRTC:%d:%s], out of memory",
+ crtc->base.id, crtc->name);
+ return;
+ }
+
state->acquire_ctx = crtc->dev->mode_config.acquire_ctx;
/* Everything's already locked, -EDEADLK can't happen. */
--
2.5.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [Intel-gfx] [PATCH 4/4] drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic()
2017-01-20 14:28 ` [PATCH 4/4] drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic() Ander Conselvan de Oliveira
@ 2017-01-20 15:01 ` Ville Syrjälä
0 siblings, 0 replies; 13+ messages in thread
From: Ville Syrjälä @ 2017-01-20 15:01 UTC (permalink / raw)
To: Ander Conselvan de Oliveira
Cc: intel-gfx, Daniel Vetter, stable, Daniel Vetter
On Fri, Jan 20, 2017 at 04:28:45PM +0200, Ander Conselvan de Oliveira wrote:
> In intel_crtc_disable_noatomic(), bail on a failure to allocate an
> atomic state to avoid a NULL pointer dereference.
>
> Found by coverity.
>
> Fixes: 4a80655827af ("drm/i915: Pass atomic state to crtc enable/disable functions")
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v4.9+
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 0759e8b..38d5178 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -6882,6 +6882,12 @@ static void intel_crtc_disable_noatomic(struct drm_crtc *crtc)
> }
>
> state = drm_atomic_state_alloc(crtc->dev);
> + if (!state) {
> + DRM_DEBUG_KMS("failed to disable [CRTC:%d:%s], out of memory",
> + crtc->base.id, crtc->name);
> + return;
> + }
> +
> state->acquire_ctx = crtc->dev->mode_config.acquire_ctx;
>
> /* Everything's already locked, -EDEADLK can't happen. */
> --
> 2.5.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] drm/i915/crt: Keep the EDID for the whole detect cycle
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
` (2 preceding siblings ...)
2017-01-20 14:28 ` [PATCH 4/4] drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic() Ander Conselvan de Oliveira
@ 2017-01-20 14:51 ` Chris Wilson
2017-01-20 14:54 ` ✗ Fi.CI.BAT: warning for series starting with [1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Patchwork
` (3 subsequent siblings)
7 siblings, 0 replies; 13+ messages in thread
From: Chris Wilson @ 2017-01-20 14:51 UTC (permalink / raw)
To: intel-gfx; +Cc: ander.conselvan.de.oliveira
Other than reducing the number of EDID reads required for probing the
modes on a connector, this refactor has the importance of centralising
the logic for deciding when we need to probe for an analogue output via
DVI-I and then consistently using that information between detection and
mode computation.
References: https://bugs.freedesktop.org/show_bug.cgi?id=97971
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_crt.c | 108 +++++++++++++++------------------------
1 file changed, 41 insertions(+), 67 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 385e29af8baa..a94b6c981fea 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -459,8 +459,8 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector)
return ret;
}
-static struct edid *intel_crt_get_edid(struct drm_connector *connector,
- struct i2c_adapter *i2c)
+static struct edid *__intel_crt_get_edid(struct drm_connector *connector,
+ struct i2c_adapter *i2c)
{
struct edid *edid;
@@ -473,59 +473,50 @@ static struct edid *intel_crt_get_edid(struct drm_connector *connector,
intel_gmbus_force_bit(i2c, false);
}
- return edid;
-}
-
-/* local version of intel_ddc_get_modes() to use intel_crt_get_edid() */
-static int intel_crt_ddc_get_modes(struct drm_connector *connector,
- struct i2c_adapter *adapter)
-{
- struct edid *edid;
- int ret;
-
- edid = intel_crt_get_edid(connector, adapter);
- if (!edid)
- return 0;
-
- ret = intel_connector_update_modes(connector, edid);
- kfree(edid);
+ if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) {
+ DRM_DEBUG_KMS("EDID reports a digital output, ignoring for this VGA connector\n");
+ kfree(edid);
+ edid = NULL;
+ }
- return ret;
+ return edid;
}
-static bool intel_crt_detect_ddc(struct drm_connector *connector)
+static struct edid *intel_crt_get_edid(struct drm_connector *connector)
{
- struct intel_crt *crt = intel_attached_crt(connector);
- struct drm_i915_private *dev_priv = to_i915(crt->base.base.dev);
- struct edid *edid;
+#define HAS_DVI_I(p) 1 /* XXX anything with HDMI, i.e. g33+ */
+ struct drm_i915_private *dev_priv = to_i915(connector->dev);
struct i2c_adapter *i2c;
-
- BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG);
+ struct edid *edid;
i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->vbt.crt_ddc_pin);
- edid = intel_crt_get_edid(connector, i2c);
-
- if (edid) {
- bool is_digital = edid->input & DRM_EDID_INPUT_DIGITAL;
-
+ edid = __intel_crt_get_edid(connector, i2c);
+ if (!edid && HAS_DVI_I(dev_priv)) {
/*
* This may be a DVI-I connector with a shared DDC
* link between analog and digital outputs, so we
* have to check the EDID input spec of the attached device.
*/
- if (!is_digital) {
- DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n");
- return true;
- }
-
- DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
- } else {
- DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [no valid EDID found]\n");
+ i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PIN_DPB);
+ edid = __intel_crt_get_edid(connector, i2c);
}
- kfree(edid);
+ return edid;
+}
+
+static bool intel_crt_detect_ddc(struct drm_connector *connector)
+{
+ struct edid *edid;
+
+ kfree(to_intel_connector(connector)->detect_edid);
+ to_intel_connector(connector)->detect_edid = NULL;
- return false;
+ edid = intel_crt_get_edid(connector);
+ if (!edid)
+ return false;
+
+ to_intel_connector(connector)->detect_edid = edid;
+ return true;
}
static enum drm_connector_status
@@ -691,6 +682,11 @@ intel_crt_detect(struct drm_connector *connector, bool force)
power_domain = intel_display_port_power_domain(intel_encoder);
intel_display_power_get(dev_priv, power_domain);
+ if (intel_crt_detect_ddc(connector)) {
+ status = connector_status_connected;
+ goto out;
+ }
+
if (I915_HAS_HOTPLUG(dev_priv)) {
/* We can not rely on the HPD pin always being correctly wired
* up, for example many KVM do not pass it through, and so
@@ -704,11 +700,6 @@ intel_crt_detect(struct drm_connector *connector, bool force)
DRM_DEBUG_KMS("CRT not detected via hotplug\n");
}
- if (intel_crt_detect_ddc(connector)) {
- status = connector_status_connected;
- goto out;
- }
-
/* Load detection is broken on HPD capable machines. Whoever wants a
* broken monitor (without edid) to work behind a broken kvm (that fails
* to have the right resistors for HP detection) needs to fix this up.
@@ -756,30 +747,13 @@ static void intel_crt_destroy(struct drm_connector *connector)
static int intel_crt_get_modes(struct drm_connector *connector)
{
- struct drm_device *dev = connector->dev;
- struct drm_i915_private *dev_priv = to_i915(dev);
- struct intel_crt *crt = intel_attached_crt(connector);
- struct intel_encoder *intel_encoder = &crt->base;
- enum intel_display_power_domain power_domain;
- int ret;
- struct i2c_adapter *i2c;
-
- power_domain = intel_display_port_power_domain(intel_encoder);
- intel_display_power_get(dev_priv, power_domain);
-
- i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->vbt.crt_ddc_pin);
- ret = intel_crt_ddc_get_modes(connector, i2c);
- if (ret || !IS_G4X(dev_priv))
- goto out;
-
- /* Try to probe digital port for output in DVI-I -> VGA mode. */
- i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PIN_DPB);
- ret = intel_crt_ddc_get_modes(connector, i2c);
+ struct edid *edid;
-out:
- intel_display_power_put(dev_priv, power_domain);
+ edid = to_intel_connector(connector)->detect_edid;
+ if (!edid)
+ return 0;
- return ret;
+ return intel_connector_update_modes(connector, edid);
}
static int intel_crt_set_property(struct drm_connector *connector,
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 13+ messages in thread* ✗ Fi.CI.BAT: warning for series starting with [1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc()
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
` (3 preceding siblings ...)
2017-01-20 14:51 ` [PATCH] drm/i915/crt: Keep the EDID for the whole detect cycle Chris Wilson
@ 2017-01-20 14:54 ` Patchwork
2017-01-23 8:40 ` Ander Conselvan De Oliveira
2017-01-20 15:02 ` [Intel-gfx] [PATCH 1/4] " Ville Syrjälä
` (2 subsequent siblings)
7 siblings, 1 reply; 13+ messages in thread
From: Patchwork @ 2017-01-20 14:54 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc()
URL : https://patchwork.freedesktop.org/series/18297/
State : warning
== Summary ==
Series 18297v1 Series without cover letter
https://patchwork.freedesktop.org/api/1.0/series/18297/revisions/1/mbox/
Test kms_force_connector_basic:
Subgroup force-edid:
pass -> DMESG-WARN (fi-snb-2520m)
fi-bdw-5557u total:246 pass:232 dwarn:0 dfail:0 fail:0 skip:14
fi-bsw-n3050 total:246 pass:207 dwarn:0 dfail:0 fail:0 skip:39
fi-bxt-j4205 total:246 pass:224 dwarn:0 dfail:0 fail:0 skip:22
fi-bxt-t5700 total:79 pass:66 dwarn:0 dfail:0 fail:0 skip:12
fi-byt-j1900 total:246 pass:219 dwarn:0 dfail:0 fail:0 skip:27
fi-byt-n2820 total:246 pass:215 dwarn:0 dfail:0 fail:0 skip:31
fi-hsw-4770 total:246 pass:227 dwarn:0 dfail:0 fail:0 skip:19
fi-hsw-4770r total:246 pass:227 dwarn:0 dfail:0 fail:0 skip:19
fi-ivb-3520m total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
fi-ivb-3770 total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
fi-kbl-7500u total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
fi-skl-6260u total:246 pass:233 dwarn:0 dfail:0 fail:0 skip:13
fi-skl-6700hq total:246 pass:226 dwarn:0 dfail:0 fail:0 skip:20
fi-skl-6700k total:246 pass:222 dwarn:3 dfail:0 fail:0 skip:21
fi-skl-6770hq total:246 pass:233 dwarn:0 dfail:0 fail:0 skip:13
fi-snb-2520m total:246 pass:214 dwarn:1 dfail:0 fail:0 skip:31
fi-snb-2600 total:246 pass:214 dwarn:0 dfail:0 fail:0 skip:32
aa012aa081f6a6d2dd5a1df0f3c3736017df0d56 drm-tip: 2017y-01m-20d-09h-33m-30s UTC integration manifest
ef1d3ae drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic()
edf6276 drm/i915: Fix calculation of rotated x and y offsets for planar formats
d1dea37 drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend()
4f24c80 drm/i915: Don't leak edid in intel_crt_detect_ddc()
== Logs ==
For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_3557/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: ✗ Fi.CI.BAT: warning for series starting with [1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc()
2017-01-20 14:54 ` ✗ Fi.CI.BAT: warning for series starting with [1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Patchwork
@ 2017-01-23 8:40 ` Ander Conselvan De Oliveira
0 siblings, 0 replies; 13+ messages in thread
From: Ander Conselvan De Oliveira @ 2017-01-23 8:40 UTC (permalink / raw)
To: intel-gfx, Chris Wilson
On Fri, 2017-01-20 at 14:54 +0000, Patchwork wrote:
> == Series Details ==
>
> Series: series starting with [1/4] drm/i915: Don't leak edid in
> intel_crt_detect_ddc()
> URL : https://patchwork.freedesktop.org/series/18297/
> State : warning
>
> == Summary ==
>
> Series 18297v1 Series without cover letter
> https://patchwork.freedesktop.org/api/1.0/series/18297/revisions/1/mbox/
>
> Test kms_force_connector_basic:
> Subgroup force-edid:
> pass -> DMESG-WARN (fi-snb-2520m)
[ 426.182548] [drm:drm_edid_block_valid] *ERROR* EDID checksum is invalid, remainder is 255
[ 426.488629] Setting dangerous option load_detect_test - tainting kernel
[ 426.489253] Setting dangerous option load_detect_test - tainting kernel
https://bugs.freedesktop.org/show_bug.cgi?id=98625
Pushed. Thank you for reviewing.
Ander
>
> fi-bdw-5557u total:246 pass:232 dwarn:0 dfail:0 fail:0 skip:14
> fi-bsw-n3050 total:246 pass:207 dwarn:0 dfail:0 fail:0 skip:39
> fi-bxt-j4205 total:246 pass:224 dwarn:0 dfail:0 fail:0 skip:22
> fi-bxt-t5700 total:79 pass:66 dwarn:0 dfail:0 fail:0 skip:12
> fi-byt-j1900 total:246 pass:219 dwarn:0 dfail:0 fail:0 skip:27
> fi-byt-n2820 total:246 pass:215 dwarn:0 dfail:0 fail:0 skip:31
> fi-hsw-4770 total:246 pass:227 dwarn:0 dfail:0 fail:0 skip:19
> fi-hsw-4770r total:246 pass:227 dwarn:0 dfail:0 fail:0 skip:19
> fi-ivb-3520m total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
> fi-ivb-3770 total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
> fi-kbl-7500u total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
> fi-skl-6260u total:246 pass:233 dwarn:0 dfail:0 fail:0 skip:13
> fi-skl-6700hq total:246 pass:226 dwarn:0 dfail:0 fail:0 skip:20
> fi-skl-6700k total:246 pass:222 dwarn:3 dfail:0 fail:0 skip:21
> fi-skl-6770hq total:246 pass:233 dwarn:0 dfail:0 fail:0 skip:13
> fi-snb-2520m total:246 pass:214 dwarn:1 dfail:0 fail:0 skip:31
> fi-snb-2600 total:246 pass:214 dwarn:0 dfail:0 fail:0 skip:32
>
> aa012aa081f6a6d2dd5a1df0f3c3736017df0d56 drm-tip: 2017y-01m-20d-09h-33m-30s
> UTC integration manifest
> ef1d3ae drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic()
> edf6276 drm/i915: Fix calculation of rotated x and y offsets for planar
> formats
> d1dea37 drm/i915: Don't init hpd polling for vlv and chv from
> runtime_suspend()
> 4f24c80 drm/i915: Don't leak edid in intel_crt_detect_ddc()
>
> == Logs ==
>
> For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_3557/
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Intel-gfx] [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc()
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
` (4 preceding siblings ...)
2017-01-20 14:54 ` ✗ Fi.CI.BAT: warning for series starting with [1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Patchwork
@ 2017-01-20 15:02 ` Ville Syrjälä
2017-01-20 15:09 ` Jani Nikula
2017-01-20 15:54 ` ✗ Fi.CI.BAT: failure for series starting with drm/i915/crt: Keep the EDID for the whole detect cycle (rev2) Patchwork
7 siblings, 0 replies; 13+ messages in thread
From: Ville Syrjälä @ 2017-01-20 15:02 UTC (permalink / raw)
To: Ander Conselvan de Oliveira
Cc: intel-gfx, Daniel Vetter, stable, Daniel Vetter
On Fri, Jan 20, 2017 at 04:28:42PM +0200, Ander Conselvan de Oliveira wrote:
> In the path where intel_crt_detect_ddc() detects a CRT, if would return
> true without freeing the edid.
>
> Found by coverity.
>
> Fixes: a2bd1f541f19 ("drm/i915: check whether we actually received an
> edid in detect_ddc")
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v3.6+
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/intel_crt.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index 385e29a..2bf5aca 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -499,6 +499,7 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
> struct drm_i915_private *dev_priv = to_i915(crt->base.base.dev);
> struct edid *edid;
> struct i2c_adapter *i2c;
> + bool ret = false;
>
> BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG);
>
> @@ -515,17 +516,17 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
> */
> if (!is_digital) {
> DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n");
> - return true;
> + ret = true;
> + } else {
> + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
> }
> -
> - DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
> } else {
> DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [no valid EDID found]\n");
> }
>
> kfree(edid);
>
> - return false;
> + return ret;
> }
>
> static enum drm_connector_status
> --
> 2.5.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc()
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
` (5 preceding siblings ...)
2017-01-20 15:02 ` [Intel-gfx] [PATCH 1/4] " Ville Syrjälä
@ 2017-01-20 15:09 ` Jani Nikula
2017-01-20 15:54 ` ✗ Fi.CI.BAT: failure for series starting with drm/i915/crt: Keep the EDID for the whole detect cycle (rev2) Patchwork
7 siblings, 0 replies; 13+ messages in thread
From: Jani Nikula @ 2017-01-20 15:09 UTC (permalink / raw)
To: intel-gfx
Cc: Daniel Vetter, Ander Conselvan de Oliveira, stable, Daniel Vetter
On Fri, 20 Jan 2017, Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> wrote:
> In the path where intel_crt_detect_ddc() detects a CRT, if would return
> true without freeing the edid.
>
> Found by coverity.
>
> Fixes: a2bd1f541f19 ("drm/i915: check whether we actually received an
> edid in detect_ddc")
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v3.6+
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/intel_crt.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index 385e29a..2bf5aca 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -499,6 +499,7 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
> struct drm_i915_private *dev_priv = to_i915(crt->base.base.dev);
> struct edid *edid;
> struct i2c_adapter *i2c;
> + bool ret = false;
>
> BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG);
>
> @@ -515,17 +516,17 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
> */
> if (!is_digital) {
> DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n");
> - return true;
> + ret = true;
> + } else {
> + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
> }
> -
> - DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
> } else {
> DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [no valid EDID found]\n");
> }
>
> kfree(edid);
>
> - return false;
> + return ret;
> }
>
> static enum drm_connector_status
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread* ✗ Fi.CI.BAT: failure for series starting with drm/i915/crt: Keep the EDID for the whole detect cycle (rev2)
2017-01-20 14:28 [PATCH 1/4] drm/i915: Don't leak edid in intel_crt_detect_ddc() Ander Conselvan de Oliveira
` (6 preceding siblings ...)
2017-01-20 15:09 ` Jani Nikula
@ 2017-01-20 15:54 ` Patchwork
7 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2017-01-20 15:54 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
== Series Details ==
Series: series starting with drm/i915/crt: Keep the EDID for the whole detect cycle (rev2)
URL : https://patchwork.freedesktop.org/series/18297/
State : failure
== Summary ==
Series 18297v2 Series without cover letter
https://patchwork.freedesktop.org/api/1.0/series/18297/revisions/2/mbox/
Test gem_busy:
Subgroup basic-busy-default:
pass -> FAIL (fi-ivb-3520m)
fi-bdw-5557u total:246 pass:232 dwarn:0 dfail:0 fail:0 skip:14
fi-bsw-n3050 total:246 pass:207 dwarn:0 dfail:0 fail:0 skip:39
fi-bxt-j4205 total:246 pass:224 dwarn:0 dfail:0 fail:0 skip:22
fi-bxt-t5700 total:79 pass:66 dwarn:0 dfail:0 fail:0 skip:12
fi-byt-j1900 total:246 pass:219 dwarn:0 dfail:0 fail:0 skip:27
fi-byt-n2820 total:246 pass:215 dwarn:0 dfail:0 fail:0 skip:31
fi-hsw-4770 total:246 pass:227 dwarn:0 dfail:0 fail:0 skip:19
fi-hsw-4770r total:246 pass:227 dwarn:0 dfail:0 fail:0 skip:19
fi-ivb-3520m total:246 pass:224 dwarn:0 dfail:0 fail:1 skip:21
fi-ivb-3770 total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
fi-kbl-7500u total:246 pass:225 dwarn:0 dfail:0 fail:0 skip:21
fi-skl-6260u total:246 pass:233 dwarn:0 dfail:0 fail:0 skip:13
fi-skl-6700hq total:246 pass:226 dwarn:0 dfail:0 fail:0 skip:20
fi-skl-6700k total:246 pass:222 dwarn:3 dfail:0 fail:0 skip:21
fi-skl-6770hq total:246 pass:233 dwarn:0 dfail:0 fail:0 skip:13
fi-snb-2520m total:246 pass:215 dwarn:0 dfail:0 fail:0 skip:31
fi-snb-2600 total:246 pass:214 dwarn:0 dfail:0 fail:0 skip:32
aa012aa081f6a6d2dd5a1df0f3c3736017df0d56 drm-tip: 2017y-01m-20d-09h-33m-30s UTC integration manifest
027da79 drm/i915: Check for NULL atomic state in intel_crtc_disable_noatomic()
9b6e5be drm/i915: Fix calculation of rotated x and y offsets for planar formats
15fabfb drm/i915: Don't init hpd polling for vlv and chv from runtime_suspend()
56980e8 drm/i915/crt: Keep the EDID for the whole detect cycle
== Logs ==
For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_3559/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread