* [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports @ 2015-01-09 12:21 ville.syrjala 2015-01-09 12:21 ` [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access ville.syrjala ` (7 more replies) 0 siblings, 8 replies; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich From: Ville Syrjälä <ville.syrjala@linux.intel.com> My BSW has a nasty problem where it generates tons of spurious hpd interrupts when the eDP display is disabled. The best solution seems to be to disable hpd for eDP ports when the port is disabled since we don't care about long hpds anyway and short hpds are only relevant while the link is up and running. This series tries to implement that, and I've included a few random fixes/refactorings to the hpd code as well. Ville Syrjälä (7): drm/i915: Make hpd arrays big enough to avoid out of bounds access drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV drm/i915: Don't pretend SDVO hotplug works on 915 drm/i915: Set intel_connector->polled to DRM_CONNECTOR_POLL_HPD when appropriate drm/i915: Unify hpd setup between init and hpd storm handling drm/i915: Disable HPD for disabled eDP ports drivers/gpu/drm/i915/i915_irq.c | 172 ++++++++++++++++++++--------------- drivers/gpu/drm/i915/intel_crt.c | 4 +- drivers/gpu/drm/i915/intel_display.c | 6 +- drivers/gpu/drm/i915/intel_dp.c | 18 ++++ drivers/gpu/drm/i915/intel_dp_mst.c | 2 + drivers/gpu/drm/i915/intel_drv.h | 3 + drivers/gpu/drm/i915/intel_hdmi.c | 2 + drivers/gpu/drm/i915/intel_sdvo.c | 4 + 8 files changed, 136 insertions(+), 75 deletions(-) -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala @ 2015-01-09 12:21 ` ville.syrjala 2015-01-09 14:41 ` [Intel-gfx] " Jani Nikula 2015-01-09 12:21 ` [PATCH 2/7] drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() ville.syrjala ` (6 subsequent siblings) 7 siblings, 1 reply; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich, stable From: Ville Syrjälä <ville.syrjala@linux.intel.com> intel_hpd_irq_handler() walks the passed in hpd[] array assuming it contains HPD_NUM_PINS elements. Currently that's not true as we don't specify an explicit size for the arrays when initializing them. Avoid the out of bounds accesses by specifying the size for the arrays. Cc: stable@vger.kernel.org Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/i915_irq.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 818ab4e..1d52ae9 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -45,7 +45,7 @@ * and related files, but that will be described in separate chapters. */ -static const u32 hpd_ibx[] = { +static const u32 hpd_ibx[HPD_NUM_PINS] = { [HPD_CRT] = SDE_CRT_HOTPLUG, [HPD_SDVO_B] = SDE_SDVOB_HOTPLUG, [HPD_PORT_B] = SDE_PORTB_HOTPLUG, @@ -53,7 +53,7 @@ static const u32 hpd_ibx[] = { [HPD_PORT_D] = SDE_PORTD_HOTPLUG }; -static const u32 hpd_cpt[] = { +static const u32 hpd_cpt[HPD_NUM_PINS] = { [HPD_CRT] = SDE_CRT_HOTPLUG_CPT, [HPD_SDVO_B] = SDE_SDVOB_HOTPLUG_CPT, [HPD_PORT_B] = SDE_PORTB_HOTPLUG_CPT, @@ -61,7 +61,7 @@ static const u32 hpd_cpt[] = { [HPD_PORT_D] = SDE_PORTD_HOTPLUG_CPT }; -static const u32 hpd_mask_i915[] = { +static const u32 hpd_mask_i915[HPD_NUM_PINS] = { [HPD_CRT] = CRT_HOTPLUG_INT_EN, [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_EN, [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_EN, @@ -70,7 +70,7 @@ static const u32 hpd_mask_i915[] = { [HPD_PORT_D] = PORTD_HOTPLUG_INT_EN }; -static const u32 hpd_status_g4x[] = { +static const u32 hpd_status_g4x[HPD_NUM_PINS] = { [HPD_CRT] = CRT_HOTPLUG_INT_STATUS, [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_G4X, [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_STATUS_G4X, @@ -79,7 +79,7 @@ static const u32 hpd_status_g4x[] = { [HPD_PORT_D] = PORTD_HOTPLUG_INT_STATUS }; -static const u32 hpd_status_i915[] = { /* i915 and valleyview are the same */ +static const u32 hpd_status_i915[HPD_NUM_PINS] = { /* i915 and valleyview are the same */ [HPD_CRT] = CRT_HOTPLUG_INT_STATUS, [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_I915, [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_STATUS_I915, @@ -1522,7 +1522,7 @@ static inline enum port get_port_from_pin(enum hpd_pin pin) static inline void intel_hpd_irq_handler(struct drm_device *dev, u32 hotplug_trigger, u32 dig_hotplug_reg, - const u32 *hpd) + const u32 hpd[HPD_NUM_PINS]) { struct drm_i915_private *dev_priv = dev->dev_private; int i; -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Intel-gfx] [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access 2015-01-09 12:21 ` [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access ville.syrjala @ 2015-01-09 14:41 ` Jani Nikula 2015-01-09 15:27 ` Ville Syrjälä 0 siblings, 1 reply; 19+ messages in thread From: Jani Nikula @ 2015-01-09 14:41 UTC (permalink / raw) To: ville.syrjala, intel-gfx; +Cc: Egbert Eich, stable On Fri, 09 Jan 2015, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > intel_hpd_irq_handler() walks the passed in hpd[] array assuming it > contains HPD_NUM_PINS elements. Currently that's not true as we don't > specify an explicit size for the arrays when initializing them. Avoid > the out of bounds accesses by specifying the size for the arrays. My first impression was wowowow, this must fix some of those obscure hpd bugs we seem to have. But no, all of the arrays have HPD_PORT_D which means we don't go out of bounds. This patch doesn't change the sizes of the arrays. > Cc: stable@vger.kernel.org I'm not sure if that's appropriate in light of the above ("It must fix a real bug that bothers people"). But we should do this *before* it becomes a bug. Reviewed-by: Jani Nikula <jani.nikula@intel.com> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/i915_irq.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 818ab4e..1d52ae9 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -45,7 +45,7 @@ > * and related files, but that will be described in separate chapters. > */ > > -static const u32 hpd_ibx[] = { > +static const u32 hpd_ibx[HPD_NUM_PINS] = { > [HPD_CRT] = SDE_CRT_HOTPLUG, > [HPD_SDVO_B] = SDE_SDVOB_HOTPLUG, > [HPD_PORT_B] = SDE_PORTB_HOTPLUG, > @@ -53,7 +53,7 @@ static const u32 hpd_ibx[] = { > [HPD_PORT_D] = SDE_PORTD_HOTPLUG > }; > > -static const u32 hpd_cpt[] = { > +static const u32 hpd_cpt[HPD_NUM_PINS] = { > [HPD_CRT] = SDE_CRT_HOTPLUG_CPT, > [HPD_SDVO_B] = SDE_SDVOB_HOTPLUG_CPT, > [HPD_PORT_B] = SDE_PORTB_HOTPLUG_CPT, > @@ -61,7 +61,7 @@ static const u32 hpd_cpt[] = { > [HPD_PORT_D] = SDE_PORTD_HOTPLUG_CPT > }; > > -static const u32 hpd_mask_i915[] = { > +static const u32 hpd_mask_i915[HPD_NUM_PINS] = { > [HPD_CRT] = CRT_HOTPLUG_INT_EN, > [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_EN, > [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_EN, > @@ -70,7 +70,7 @@ static const u32 hpd_mask_i915[] = { > [HPD_PORT_D] = PORTD_HOTPLUG_INT_EN > }; > > -static const u32 hpd_status_g4x[] = { > +static const u32 hpd_status_g4x[HPD_NUM_PINS] = { > [HPD_CRT] = CRT_HOTPLUG_INT_STATUS, > [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_G4X, > [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_STATUS_G4X, > @@ -79,7 +79,7 @@ static const u32 hpd_status_g4x[] = { > [HPD_PORT_D] = PORTD_HOTPLUG_INT_STATUS > }; > > -static const u32 hpd_status_i915[] = { /* i915 and valleyview are the same */ > +static const u32 hpd_status_i915[HPD_NUM_PINS] = { /* i915 and valleyview are the same */ > [HPD_CRT] = CRT_HOTPLUG_INT_STATUS, > [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_I915, > [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_STATUS_I915, > @@ -1522,7 +1522,7 @@ static inline enum port get_port_from_pin(enum hpd_pin pin) > static inline void intel_hpd_irq_handler(struct drm_device *dev, > u32 hotplug_trigger, > u32 dig_hotplug_reg, > - const u32 *hpd) > + const u32 hpd[HPD_NUM_PINS]) > { > struct drm_i915_private *dev_priv = dev->dev_private; > int i; > -- > 2.0.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Intel-gfx] [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access 2015-01-09 14:41 ` [Intel-gfx] " Jani Nikula @ 2015-01-09 15:27 ` Ville Syrjälä 0 siblings, 0 replies; 19+ messages in thread From: Ville Syrjälä @ 2015-01-09 15:27 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx, Egbert Eich, stable On Fri, Jan 09, 2015 at 04:41:33PM +0200, Jani Nikula wrote: > On Fri, 09 Jan 2015, ville.syrjala@linux.intel.com wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > intel_hpd_irq_handler() walks the passed in hpd[] array assuming it > > contains HPD_NUM_PINS elements. Currently that's not true as we don't > > specify an explicit size for the arrays when initializing them. Avoid > > the out of bounds accesses by specifying the size for the arrays. > > My first impression was wowowow, this must fix some of those obscure hpd > bugs we seem to have. But no, all of the arrays have HPD_PORT_D which > means we don't go out of bounds. This patch doesn't change the sizes of > the arrays. Hmm, I somehow convinced myself that PORT_D wasn't in all of them. I suppose I was thinking that port D isn't around on all platforms and then thought the same will hold for the arrays without actually checking. That does make the patch a bit less interesting. > > > Cc: stable@vger.kernel.org > > I'm not sure if that's appropriate in light of the above ("It must fix a > real bug that bothers people"). > Yeah I guess we can drop the stable then. > But we should do this *before* it becomes a bug. > > Reviewed-by: Jani Nikula <jani.nikula@intel.com> > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/i915_irq.c | 12 ++++++------ > > 1 file changed, 6 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > > index 818ab4e..1d52ae9 100644 > > --- a/drivers/gpu/drm/i915/i915_irq.c > > +++ b/drivers/gpu/drm/i915/i915_irq.c > > @@ -45,7 +45,7 @@ > > * and related files, but that will be described in separate chapters. > > */ > > > > -static const u32 hpd_ibx[] = { > > +static const u32 hpd_ibx[HPD_NUM_PINS] = { > > [HPD_CRT] = SDE_CRT_HOTPLUG, > > [HPD_SDVO_B] = SDE_SDVOB_HOTPLUG, > > [HPD_PORT_B] = SDE_PORTB_HOTPLUG, > > @@ -53,7 +53,7 @@ static const u32 hpd_ibx[] = { > > [HPD_PORT_D] = SDE_PORTD_HOTPLUG > > }; > > > > -static const u32 hpd_cpt[] = { > > +static const u32 hpd_cpt[HPD_NUM_PINS] = { > > [HPD_CRT] = SDE_CRT_HOTPLUG_CPT, > > [HPD_SDVO_B] = SDE_SDVOB_HOTPLUG_CPT, > > [HPD_PORT_B] = SDE_PORTB_HOTPLUG_CPT, > > @@ -61,7 +61,7 @@ static const u32 hpd_cpt[] = { > > [HPD_PORT_D] = SDE_PORTD_HOTPLUG_CPT > > }; > > > > -static const u32 hpd_mask_i915[] = { > > +static const u32 hpd_mask_i915[HPD_NUM_PINS] = { > > [HPD_CRT] = CRT_HOTPLUG_INT_EN, > > [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_EN, > > [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_EN, > > @@ -70,7 +70,7 @@ static const u32 hpd_mask_i915[] = { > > [HPD_PORT_D] = PORTD_HOTPLUG_INT_EN > > }; > > > > -static const u32 hpd_status_g4x[] = { > > +static const u32 hpd_status_g4x[HPD_NUM_PINS] = { > > [HPD_CRT] = CRT_HOTPLUG_INT_STATUS, > > [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_G4X, > > [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_STATUS_G4X, > > @@ -79,7 +79,7 @@ static const u32 hpd_status_g4x[] = { > > [HPD_PORT_D] = PORTD_HOTPLUG_INT_STATUS > > }; > > > > -static const u32 hpd_status_i915[] = { /* i915 and valleyview are the same */ > > +static const u32 hpd_status_i915[HPD_NUM_PINS] = { /* i915 and valleyview are the same */ > > [HPD_CRT] = CRT_HOTPLUG_INT_STATUS, > > [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_STATUS_I915, > > [HPD_SDVO_C] = SDVOC_HOTPLUG_INT_STATUS_I915, > > @@ -1522,7 +1522,7 @@ static inline enum port get_port_from_pin(enum hpd_pin pin) > > static inline void intel_hpd_irq_handler(struct drm_device *dev, > > u32 hotplug_trigger, > > u32 dig_hotplug_reg, > > - const u32 *hpd) > > + const u32 hpd[HPD_NUM_PINS]) > > { > > struct drm_i915_private *dev_priv = dev->dev_private; > > int i; > > -- > > 2.0.5 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Jani Nikula, Intel Open Source Technology Center -- Ville Syrjälä Intel OTC ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 2/7] drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala 2015-01-09 12:21 ` [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access ville.syrjala @ 2015-01-09 12:21 ` ville.syrjala 2015-01-09 14:52 ` Jani Nikula 2015-01-09 12:21 ` [PATCH 3/7] drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV ville.syrjala ` (5 subsequent siblings) 7 siblings, 1 reply; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich From: Ville Syrjälä <ville.syrjala@linux.intel.com> The dev_priv->display.hpd_irq_setup hook is optional, so we can move the I915_HAS_HOTPLUG() check out of i915_hpd_irq_setup() and only set up the hook when hotplug support is present. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/i915_irq.c | 42 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 1d52ae9..8fe5a87 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -4145,26 +4145,24 @@ static void i915_hpd_irq_setup(struct drm_device *dev) assert_spin_locked(&dev_priv->irq_lock); - if (I915_HAS_HOTPLUG(dev)) { - hotplug_en = I915_READ(PORT_HOTPLUG_EN); - hotplug_en &= ~HOTPLUG_INT_EN_MASK; - /* Note HDMI and DP share hotplug bits */ - /* enable bits are the same for all generations */ - for_each_intel_encoder(dev, intel_encoder) - if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) - hotplug_en |= hpd_mask_i915[intel_encoder->hpd_pin]; - /* Programming the CRT detection parameters tends - to generate a spurious hotplug event about three - seconds later. So just do it once. - */ - if (IS_G4X(dev)) - hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; - hotplug_en &= ~CRT_HOTPLUG_VOLTAGE_COMPARE_MASK; - hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; - - /* Ignore TV since it's buggy */ - I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); - } + hotplug_en = I915_READ(PORT_HOTPLUG_EN); + hotplug_en &= ~HOTPLUG_INT_EN_MASK; + /* Note HDMI and DP share hotplug bits */ + /* enable bits are the same for all generations */ + for_each_intel_encoder(dev, intel_encoder) + if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) + hotplug_en |= hpd_mask_i915[intel_encoder->hpd_pin]; + /* Programming the CRT detection parameters tends + to generate a spurious hotplug event about three + seconds later. So just do it once. + */ + if (IS_G4X(dev)) + hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; + hotplug_en &= ~CRT_HOTPLUG_VOLTAGE_COMPARE_MASK; + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + + /* Ignore TV since it's buggy */ + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); } static irqreturn_t i965_irq_handler(int irq, void *arg) @@ -4428,14 +4426,14 @@ void intel_irq_init(struct drm_i915_private *dev_priv) dev->driver->irq_postinstall = i915_irq_postinstall; dev->driver->irq_uninstall = i915_irq_uninstall; dev->driver->irq_handler = i915_irq_handler; - dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; } else { dev->driver->irq_preinstall = i965_irq_preinstall; dev->driver->irq_postinstall = i965_irq_postinstall; dev->driver->irq_uninstall = i965_irq_uninstall; dev->driver->irq_handler = i965_irq_handler; - dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; } + if (I915_HAS_HOTPLUG(dev_priv)) + dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; dev->driver->enable_vblank = i915_enable_vblank; dev->driver->disable_vblank = i915_disable_vblank; } -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 2/7] drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() 2015-01-09 12:21 ` [PATCH 2/7] drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() ville.syrjala @ 2015-01-09 14:52 ` Jani Nikula 0 siblings, 0 replies; 19+ messages in thread From: Jani Nikula @ 2015-01-09 14:52 UTC (permalink / raw) To: ville.syrjala, intel-gfx; +Cc: Egbert Eich On Fri, 09 Jan 2015, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > The dev_priv->display.hpd_irq_setup hook is optional, so we can move the > I915_HAS_HOTPLUG() check out of i915_hpd_irq_setup() and only set up the > hook when hotplug support is present. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/i915_irq.c | 42 ++++++++++++++++++++--------------------- > 1 file changed, 20 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 1d52ae9..8fe5a87 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -4145,26 +4145,24 @@ static void i915_hpd_irq_setup(struct drm_device *dev) > > assert_spin_locked(&dev_priv->irq_lock); > > - if (I915_HAS_HOTPLUG(dev)) { > - hotplug_en = I915_READ(PORT_HOTPLUG_EN); > - hotplug_en &= ~HOTPLUG_INT_EN_MASK; > - /* Note HDMI and DP share hotplug bits */ > - /* enable bits are the same for all generations */ > - for_each_intel_encoder(dev, intel_encoder) > - if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) > - hotplug_en |= hpd_mask_i915[intel_encoder->hpd_pin]; > - /* Programming the CRT detection parameters tends > - to generate a spurious hotplug event about three > - seconds later. So just do it once. > - */ > - if (IS_G4X(dev)) > - hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; > - hotplug_en &= ~CRT_HOTPLUG_VOLTAGE_COMPARE_MASK; > - hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; > - > - /* Ignore TV since it's buggy */ > - I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); > - } > + hotplug_en = I915_READ(PORT_HOTPLUG_EN); > + hotplug_en &= ~HOTPLUG_INT_EN_MASK; > + /* Note HDMI and DP share hotplug bits */ > + /* enable bits are the same for all generations */ > + for_each_intel_encoder(dev, intel_encoder) > + if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) > + hotplug_en |= hpd_mask_i915[intel_encoder->hpd_pin]; > + /* Programming the CRT detection parameters tends > + to generate a spurious hotplug event about three > + seconds later. So just do it once. > + */ > + if (IS_G4X(dev)) > + hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; > + hotplug_en &= ~CRT_HOTPLUG_VOLTAGE_COMPARE_MASK; > + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; > + > + /* Ignore TV since it's buggy */ > + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); > } > > static irqreturn_t i965_irq_handler(int irq, void *arg) > @@ -4428,14 +4426,14 @@ void intel_irq_init(struct drm_i915_private *dev_priv) > dev->driver->irq_postinstall = i915_irq_postinstall; > dev->driver->irq_uninstall = i915_irq_uninstall; > dev->driver->irq_handler = i915_irq_handler; > - dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > } else { > dev->driver->irq_preinstall = i965_irq_preinstall; > dev->driver->irq_postinstall = i965_irq_postinstall; > dev->driver->irq_uninstall = i965_irq_uninstall; > dev->driver->irq_handler = i965_irq_handler; > - dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > } > + if (I915_HAS_HOTPLUG(dev_priv)) > + dev_priv->display.hpd_irq_setup = i915_hpd_irq_setup; > dev->driver->enable_vblank = i915_enable_vblank; > dev->driver->disable_vblank = i915_disable_vblank; > } > -- > 2.0.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 3/7] drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala 2015-01-09 12:21 ` [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access ville.syrjala 2015-01-09 12:21 ` [PATCH 2/7] drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() ville.syrjala @ 2015-01-09 12:21 ` ville.syrjala 2015-01-09 15:02 ` Jani Nikula 2015-01-09 12:21 ` [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 ville.syrjala ` (4 subsequent siblings) 7 siblings, 1 reply; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich From: Ville Syrjälä <ville.syrjala@linux.intel.com> If we determine that a specific port is eDP, don't register the HDMI connector/encoder for it. The reason being that we want to disable HPD interrupts for eDP ports when the display is off, but the presence of the extra HDMI connector would demand the HPD interrupt to remain enabled all the time. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_display.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index d1a4de8..2b1f220 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -12390,14 +12390,16 @@ static void intel_setup_outputs(struct drm_device *dev) * eDP ports. Consult the VBT as well as DP_DETECTED to * detect eDP ports. */ - if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED) + if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED && + !intel_dp_is_edp(dev, PORT_B)) intel_hdmi_init(dev, VLV_DISPLAY_BASE + GEN4_HDMIB, PORT_B); if (I915_READ(VLV_DISPLAY_BASE + DP_B) & DP_DETECTED || intel_dp_is_edp(dev, PORT_B)) intel_dp_init(dev, VLV_DISPLAY_BASE + DP_B, PORT_B); - if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIC) & SDVO_DETECTED) + if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIC) & SDVO_DETECTED && + !intel_dp_is_edp(dev, PORT_C)) intel_hdmi_init(dev, VLV_DISPLAY_BASE + GEN4_HDMIC, PORT_C); if (I915_READ(VLV_DISPLAY_BASE + DP_C) & DP_DETECTED || -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 3/7] drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV 2015-01-09 12:21 ` [PATCH 3/7] drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV ville.syrjala @ 2015-01-09 15:02 ` Jani Nikula 2015-01-12 23:48 ` Daniel Vetter 0 siblings, 1 reply; 19+ messages in thread From: Jani Nikula @ 2015-01-09 15:02 UTC (permalink / raw) To: ville.syrjala, intel-gfx; +Cc: Egbert Eich On Fri, 09 Jan 2015, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > If we determine that a specific port is eDP, don't register the HDMI > connector/encoder for it. The reason being that we want to disable > HPD interrupts for eDP ports when the display is off, but the presence > of the extra HDMI connector would demand the HPD interrupt to remain > enabled all the time. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index d1a4de8..2b1f220 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12390,14 +12390,16 @@ static void intel_setup_outputs(struct drm_device *dev) > * eDP ports. Consult the VBT as well as DP_DETECTED to > * detect eDP ports. > */ > - if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED) > + if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED && > + !intel_dp_is_edp(dev, PORT_B)) > intel_hdmi_init(dev, VLV_DISPLAY_BASE + GEN4_HDMIB, > PORT_B); > if (I915_READ(VLV_DISPLAY_BASE + DP_B) & DP_DETECTED || > intel_dp_is_edp(dev, PORT_B)) > intel_dp_init(dev, VLV_DISPLAY_BASE + DP_B, PORT_B); I wonder if these would read better with if (intel_dp_is_edp(dev, PORT_B)) { ... } else { if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED) ... if (I915_READ(VLV_DISPLAY_BASE + DP_B) & DP_DETECTED) ... } Dunno. Either way, Reviewed-by: Jani Nikula <jani.nikula@intel.com> > > - if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIC) & SDVO_DETECTED) > + if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIC) & SDVO_DETECTED && > + !intel_dp_is_edp(dev, PORT_C)) > intel_hdmi_init(dev, VLV_DISPLAY_BASE + GEN4_HDMIC, > PORT_C); > if (I915_READ(VLV_DISPLAY_BASE + DP_C) & DP_DETECTED || > -- > 2.0.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 3/7] drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV 2015-01-09 15:02 ` Jani Nikula @ 2015-01-12 23:48 ` Daniel Vetter 0 siblings, 0 replies; 19+ messages in thread From: Daniel Vetter @ 2015-01-12 23:48 UTC (permalink / raw) To: Jani Nikula; +Cc: Egbert Eich, intel-gfx On Fri, Jan 09, 2015 at 05:02:40PM +0200, Jani Nikula wrote: > On Fri, 09 Jan 2015, ville.syrjala@linux.intel.com wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > If we determine that a specific port is eDP, don't register the HDMI > > connector/encoder for it. The reason being that we want to disable > > HPD interrupts for eDP ports when the display is off, but the presence > > of the extra HDMI connector would demand the HPD interrupt to remain > > enabled all the time. > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/intel_display.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > > index d1a4de8..2b1f220 100644 > > --- a/drivers/gpu/drm/i915/intel_display.c > > +++ b/drivers/gpu/drm/i915/intel_display.c > > @@ -12390,14 +12390,16 @@ static void intel_setup_outputs(struct drm_device *dev) > > * eDP ports. Consult the VBT as well as DP_DETECTED to > > * detect eDP ports. > > */ > > - if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED) > > + if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED && > > + !intel_dp_is_edp(dev, PORT_B)) > > intel_hdmi_init(dev, VLV_DISPLAY_BASE + GEN4_HDMIB, > > PORT_B); > > if (I915_READ(VLV_DISPLAY_BASE + DP_B) & DP_DETECTED || > > intel_dp_is_edp(dev, PORT_B)) > > intel_dp_init(dev, VLV_DISPLAY_BASE + DP_B, PORT_B); > > I wonder if these would read better with > > if (intel_dp_is_edp(dev, PORT_B)) { > ... > } else { > if (I915_READ(VLV_DISPLAY_BASE + GEN4_HDMIB) & SDVO_DETECTED) > ... > if (I915_READ(VLV_DISPLAY_BASE + DP_B) & DP_DETECTED) > ... > } > > Dunno. Either way, Imo if we want to polish the turd here I think it might be beter to push checks down into the various intel_<encoder>_init functions, and just have the logic for deciding which ports a platform has at most here (and at which reg offsets). Atm we have a crazy mix of checks both here and there. > Reviewed-by: Jani Nikula <jani.nikula@intel.com> Anyway, merged, thanks for patch and review. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala ` (2 preceding siblings ...) 2015-01-09 12:21 ` [PATCH 3/7] drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV ville.syrjala @ 2015-01-09 12:21 ` ville.syrjala 2015-01-09 15:04 ` Jani Nikula 2015-01-12 23:48 ` Daniel Vetter 2015-01-09 12:21 ` [PATCH 5/7] drm/i915: Set intel_connector->polled to DRM_CONNECTOR_POLL_HPD when appropriate ville.syrjala ` (3 subsequent siblings) 7 siblings, 2 replies; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich From: Ville Syrjälä <ville.syrjala@linux.intel.com> 915 doens't support hotplug at all, so we shouldn't try to pretend otherwise in the SDVO code. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_sdvo.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 6d7a277..4e3d362 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -1617,6 +1617,9 @@ static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) struct drm_device *dev = intel_sdvo->base.base.dev; uint16_t hotplug; + if (!I915_HAS_HOTPLUG(dev)) + return 0; + /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise * on the line. */ if (IS_I945G(dev) || IS_I945GM(dev)) -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 2015-01-09 12:21 ` [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 ville.syrjala @ 2015-01-09 15:04 ` Jani Nikula 2015-01-12 23:48 ` Daniel Vetter 1 sibling, 0 replies; 19+ messages in thread From: Jani Nikula @ 2015-01-09 15:04 UTC (permalink / raw) To: ville.syrjala, intel-gfx; +Cc: Egbert Eich On Fri, 09 Jan 2015, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > 915 doens't support hotplug at all, so we shouldn't try to pretend > otherwise in the SDVO code. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/intel_sdvo.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c > index 6d7a277..4e3d362 100644 > --- a/drivers/gpu/drm/i915/intel_sdvo.c > +++ b/drivers/gpu/drm/i915/intel_sdvo.c > @@ -1617,6 +1617,9 @@ static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) > struct drm_device *dev = intel_sdvo->base.base.dev; > uint16_t hotplug; > > + if (!I915_HAS_HOTPLUG(dev)) > + return 0; > + > /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise > * on the line. */ > if (IS_I945G(dev) || IS_I945GM(dev)) > -- > 2.0.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 2015-01-09 12:21 ` [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 ville.syrjala 2015-01-09 15:04 ` Jani Nikula @ 2015-01-12 23:48 ` Daniel Vetter 2015-01-16 10:57 ` Ville Syrjälä 1 sibling, 1 reply; 19+ messages in thread From: Daniel Vetter @ 2015-01-12 23:48 UTC (permalink / raw) To: Syrjala, Ville; +Cc: Egbert Eich, intel-gfx On Fri, Jan 09, 2015 at 02:21:15PM +0200, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > 915 doens't support hotplug at all, so we shouldn't try to pretend > otherwise in the SDVO code. It actually has a hpd pin, but since it's just one for all ports we haven't ever used it. Probably would't work well when facing an irq storm. I'll augment the commit message jus to clarify. -Daniel > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_sdvo.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c > index 6d7a277..4e3d362 100644 > --- a/drivers/gpu/drm/i915/intel_sdvo.c > +++ b/drivers/gpu/drm/i915/intel_sdvo.c > @@ -1617,6 +1617,9 @@ static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) > struct drm_device *dev = intel_sdvo->base.base.dev; > uint16_t hotplug; > > + if (!I915_HAS_HOTPLUG(dev)) > + return 0; > + > /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise > * on the line. */ > if (IS_I945G(dev) || IS_I945GM(dev)) > -- > 2.0.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 2015-01-12 23:48 ` Daniel Vetter @ 2015-01-16 10:57 ` Ville Syrjälä 0 siblings, 0 replies; 19+ messages in thread From: Ville Syrjälä @ 2015-01-16 10:57 UTC (permalink / raw) To: Daniel Vetter; +Cc: Egbert Eich, intel-gfx On Tue, Jan 13, 2015 at 12:48:47AM +0100, Daniel Vetter wrote: > On Fri, Jan 09, 2015 at 02:21:15PM +0200, ville.syrjala@linux.intel.com wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > 915 doens't support hotplug at all, so we shouldn't try to pretend > > otherwise in the SDVO code. > > It actually has a hpd pin, but since it's just one for all ports we > haven't ever used it. You learn something new every day. > Probably would't work well when facing an irq storm. irq storm handling is already pretty hosed for DP++ ports for the same reason. > > I'll augment the commit message jus to clarify. > -Daniel > > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > --- > > drivers/gpu/drm/i915/intel_sdvo.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c > > index 6d7a277..4e3d362 100644 > > --- a/drivers/gpu/drm/i915/intel_sdvo.c > > +++ b/drivers/gpu/drm/i915/intel_sdvo.c > > @@ -1617,6 +1617,9 @@ static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) > > struct drm_device *dev = intel_sdvo->base.base.dev; > > uint16_t hotplug; > > > > + if (!I915_HAS_HOTPLUG(dev)) > > + return 0; > > + > > /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise > > * on the line. */ > > if (IS_I945G(dev) || IS_I945GM(dev)) > > -- > > 2.0.5 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 5/7] drm/i915: Set intel_connector->polled to DRM_CONNECTOR_POLL_HPD when appropriate 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala ` (3 preceding siblings ...) 2015-01-09 12:21 ` [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 ville.syrjala @ 2015-01-09 12:21 ` ville.syrjala 2015-01-09 12:21 ` [PATCH 6/7] drm/i915: Unify hpd setup between init and hpd storm handling ville.syrjala ` (2 subsequent siblings) 7 siblings, 0 replies; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich From: Ville Syrjälä <ville.syrjala@linux.intel.com> In order to toggle hpd support on/off per-connector during runtime, we need to track the desired hpd state for each connector. Currently we're being lazy and only setting up intel_connector->polled when we wish to use polling instead of hpd, so a value of 0 can mean both "use hpd" and "no hpd/polling whatsoever". Change things so that 0 actually means only the latter, and a value of DRM_CONNECTOR_POLL_HPD will indicate that we wish to use the hpd interrupt. To do that we need to initiialize intel_connector->polled to DRM_CONNECTOR_POLL_HPD for all hpd capable connectors. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_crt.c | 4 +++- drivers/gpu/drm/i915/intel_dp.c | 2 ++ drivers/gpu/drm/i915/intel_dp_mst.c | 2 ++ drivers/gpu/drm/i915/intel_hdmi.c | 2 ++ drivers/gpu/drm/i915/intel_sdvo.c | 1 + 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index a9af9a4..a42d059 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c @@ -902,7 +902,9 @@ void intel_crt_init(struct drm_device *dev) drm_connector_register(connector); - if (!I915_HAS_HOTPLUG(dev)) + if (I915_HAS_HOTPLUG(dev)) + intel_connector->polled = DRM_CONNECTOR_POLL_HPD; + else intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT; /* diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 88d81a8..4d6af4c 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -5072,6 +5072,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, BUG(); } + intel_connector->polled = DRM_CONNECTOR_POLL_HPD; + if (is_edp(intel_dp)) { pps_lock(intel_dp); intel_dp_init_panel_power_timestamps(intel_dp); diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index 7f8c6a6..831a2d9 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c @@ -407,6 +407,8 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo intel_connector->mst_port = intel_dp; intel_connector->port = port; + intel_connector->polled = DRM_CONNECTOR_POLL_HPD; + for (i = PIPE_A; i <= PIPE_C; i++) { drm_mode_connector_attach_encoder(&intel_connector->base, &intel_dp->mst_encoders[i]->base.base); diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 3abc200..e59bc95 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1687,6 +1687,8 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, BUG(); } + intel_connector->polled = DRM_CONNECTOR_POLL_HPD; + if (IS_VALLEYVIEW(dev)) { intel_hdmi->write_infoframe = vlv_write_infoframe; intel_hdmi->set_infoframes = vlv_set_infoframes; diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 4e3d362..0ee0af7 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -2455,6 +2455,7 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device) */ intel_encoder->hot_plug = intel_sdvo_enable_hotplug; intel_sdvo_enable_hotplug(intel_encoder); + intel_connector->polled = DRM_CONNECTOR_POLL_HPD; } else { intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT; } -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 6/7] drm/i915: Unify hpd setup between init and hpd storm handling 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala ` (4 preceding siblings ...) 2015-01-09 12:21 ` [PATCH 5/7] drm/i915: Set intel_connector->polled to DRM_CONNECTOR_POLL_HPD when appropriate ville.syrjala @ 2015-01-09 12:21 ` ville.syrjala 2015-01-09 12:21 ` [PATCH 7/7] drm/i915: Disable HPD for disabled eDP ports ville.syrjala 2015-01-13 0:46 ` [PATCH 0/7] drm/i915: Disable hpd " Sean V Kelley 7 siblings, 0 replies; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich From: Ville Syrjälä <ville.syrjala@linux.intel.com> Handle things the same way when initializing hpd support and re-enabling hpd interrupts after recovering from an interrupt storm. Later on we'll share the same code also when togglind hpd on/off for inidividual eDP connectors. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/i915_irq.c | 93 +++++++++++++++++++++-------------------- 1 file changed, 48 insertions(+), 45 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 8fe5a87..c482903 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -4165,6 +4165,46 @@ static void i915_hpd_irq_setup(struct drm_device *dev) I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); } +static void intel_hpd_irq_setup(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = to_i915(dev); + struct drm_mode_config *mode_config = &dev->mode_config; + struct drm_connector *connector; + int hpd_pin; + + assert_spin_locked(&dev_priv->irq_lock); + + for (hpd_pin = 1; hpd_pin < HPD_NUM_PINS; hpd_pin++) + dev_priv->hpd_stats[hpd_pin].hpd_mark = HPD_DISABLED; + + list_for_each_entry(connector, &mode_config->connector_list, head) { + struct intel_connector *intel_connector = to_intel_connector(connector); + uint8_t polled; + + /* mst connector */ + if (!intel_connector->encoder) + continue; + + hpd_pin = intel_connector->encoder->hpd_pin; + if (hpd_pin == HPD_NONE) + continue; + + polled = intel_connector->polled; + + if (connector->polled != polled) + DRM_DEBUG_KMS("%sabling HPD on connector %s (pin %d)\n", + polled == DRM_CONNECTOR_POLL_HPD ? "en" : "dis", + connector->name, hpd_pin); + connector->polled = polled; + + if (connector->polled == DRM_CONNECTOR_POLL_HPD) + dev_priv->hpd_stats[hpd_pin].hpd_mark = HPD_ENABLED; + } + + if (dev_priv->display.hpd_irq_setup) + dev_priv->display.hpd_irq_setup(dev); +} + static irqreturn_t i965_irq_handler(int irq, void *arg) { struct drm_device *dev = arg; @@ -4293,35 +4333,11 @@ static void intel_hpd_irq_reenable_work(struct work_struct *work) container_of(work, typeof(*dev_priv), hotplug_reenable_work.work); struct drm_device *dev = dev_priv->dev; - struct drm_mode_config *mode_config = &dev->mode_config; - int i; intel_runtime_pm_get(dev_priv); spin_lock_irq(&dev_priv->irq_lock); - for (i = (HPD_NONE + 1); i < HPD_NUM_PINS; i++) { - struct drm_connector *connector; - - if (dev_priv->hpd_stats[i].hpd_mark != HPD_DISABLED) - continue; - - dev_priv->hpd_stats[i].hpd_mark = HPD_ENABLED; - - list_for_each_entry(connector, &mode_config->connector_list, head) { - struct intel_connector *intel_connector = to_intel_connector(connector); - - if (intel_connector->encoder->hpd_pin == i) { - if (connector->polled != intel_connector->polled) - DRM_DEBUG_DRIVER("Reenabling HPD on connector %s\n", - connector->name); - connector->polled = intel_connector->polled; - if (!connector->polled) - connector->polled = DRM_CONNECTOR_POLL_HPD; - } - } - } - if (dev_priv->display.hpd_irq_setup) - dev_priv->display.hpd_irq_setup(dev); + intel_hpd_irq_setup(dev); spin_unlock_irq(&dev_priv->irq_lock); intel_runtime_pm_put(dev_priv); @@ -4454,28 +4470,15 @@ void intel_irq_init(struct drm_i915_private *dev_priv) void intel_hpd_init(struct drm_i915_private *dev_priv) { struct drm_device *dev = dev_priv->dev; - struct drm_mode_config *mode_config = &dev->mode_config; - struct drm_connector *connector; - int i; + int hpd_pin; - for (i = 1; i < HPD_NUM_PINS; i++) { - dev_priv->hpd_stats[i].hpd_cnt = 0; - dev_priv->hpd_stats[i].hpd_mark = HPD_ENABLED; - } - list_for_each_entry(connector, &mode_config->connector_list, head) { - struct intel_connector *intel_connector = to_intel_connector(connector); - connector->polled = intel_connector->polled; - if (connector->encoder && !connector->polled && I915_HAS_HOTPLUG(dev) && intel_connector->encoder->hpd_pin > HPD_NONE) - connector->polled = DRM_CONNECTOR_POLL_HPD; - if (intel_connector->mst_port) - connector->polled = DRM_CONNECTOR_POLL_HPD; - } - - /* Interrupt setup is already guaranteed to be single-threaded, this is - * just to make the assert_spin_locked checks happy. */ spin_lock_irq(&dev_priv->irq_lock); - if (dev_priv->display.hpd_irq_setup) - dev_priv->display.hpd_irq_setup(dev); + + for (hpd_pin = 1; hpd_pin < HPD_NUM_PINS; hpd_pin++) + dev_priv->hpd_stats[hpd_pin].hpd_cnt = 0; + + intel_hpd_irq_setup(dev); + spin_unlock_irq(&dev_priv->irq_lock); } -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 7/7] drm/i915: Disable HPD for disabled eDP ports 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala ` (5 preceding siblings ...) 2015-01-09 12:21 ` [PATCH 6/7] drm/i915: Unify hpd setup between init and hpd storm handling ville.syrjala @ 2015-01-09 12:21 ` ville.syrjala 2015-01-09 17:47 ` shuang.he 2015-01-13 0:46 ` [PATCH 0/7] drm/i915: Disable hpd " Sean V Kelley 7 siblings, 1 reply; 19+ messages in thread From: ville.syrjala @ 2015-01-09 12:21 UTC (permalink / raw) To: intel-gfx; +Cc: Egbert Eich From: Ville Syrjälä <ville.syrjala@linux.intel.com> My BSW likes to generate tons of HPD interrupts while the eDP port is disabled. I guess it leaves the HPD like floating and then stuff like CPU activity can cause noise on the line leading to tons of spurious interrupts. To combat this, disable the relevant HPD interrupt whenever the port is disabled. We don't need need HPDs on disabled eDP ports anyway since the display can't physically disappear. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/i915_irq.c | 38 ++++++++++++++++++++++++++++++++++---- drivers/gpu/drm/i915/intel_dp.c | 18 +++++++++++++++++- drivers/gpu/drm/i915/intel_drv.h | 3 +++ 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index c482903..6041d82 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -4165,7 +4165,8 @@ static void i915_hpd_irq_setup(struct drm_device *dev) I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); } -static void intel_hpd_irq_setup(struct drm_device *dev) +static void intel_hpd_irq_setup(struct drm_device *dev, + bool force) { struct drm_i915_private *dev_priv = to_i915(dev); struct drm_mode_config *mode_config = &dev->mode_config; @@ -4189,7 +4190,15 @@ static void intel_hpd_irq_setup(struct drm_device *dev) if (hpd_pin == HPD_NONE) continue; - polled = intel_connector->polled; + /* + * If hpd storm detection switched to + * polling don't change back unless forced. + */ + if (!force && connector->polled & (DRM_CONNECTOR_POLL_CONNECT | + DRM_CONNECTOR_POLL_DISCONNECT)) + polled = connector->polled; + else + polled = intel_connector->polled; if (connector->polled != polled) DRM_DEBUG_KMS("%sabling HPD on connector %s (pin %d)\n", @@ -4205,6 +4214,27 @@ static void intel_hpd_irq_setup(struct drm_device *dev) dev_priv->display.hpd_irq_setup(dev); } +void intel_connector_hpd_enable(struct intel_connector *intel_connector, + bool enable) +{ + struct drm_device *dev = intel_connector->base.dev; + struct drm_i915_private *dev_priv = to_i915(dev); + + spin_lock_irq(&dev_priv->irq_lock); + + if (enable && intel_connector->polled == 0) + intel_connector->polled = DRM_CONNECTOR_POLL_HPD; + else if (!enable && intel_connector->polled == DRM_CONNECTOR_POLL_HPD) + intel_connector->polled = 0; + else + goto out; + + intel_hpd_irq_setup(dev, false); + + out: + spin_unlock_irq(&dev_priv->irq_lock); +} + static irqreturn_t i965_irq_handler(int irq, void *arg) { struct drm_device *dev = arg; @@ -4337,7 +4367,7 @@ static void intel_hpd_irq_reenable_work(struct work_struct *work) intel_runtime_pm_get(dev_priv); spin_lock_irq(&dev_priv->irq_lock); - intel_hpd_irq_setup(dev); + intel_hpd_irq_setup(dev, true); spin_unlock_irq(&dev_priv->irq_lock); intel_runtime_pm_put(dev_priv); @@ -4477,7 +4507,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv) for (hpd_pin = 1; hpd_pin < HPD_NUM_PINS; hpd_pin++) dev_priv->hpd_stats[hpd_pin].hpd_cnt = 0; - intel_hpd_irq_setup(dev); + intel_hpd_irq_setup(dev, true); spin_unlock_irq(&dev_priv->irq_lock); } diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 4d6af4c..b53a6f0 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -2102,6 +2102,10 @@ static void intel_disable_dp(struct intel_encoder *encoder) struct drm_device *dev = encoder->base.dev; struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); + if (is_edp(intel_dp)) + intel_connector_hpd_enable(intel_dp->attached_connector, + false); + if (crtc->config.has_audio) intel_audio_codec_disable(encoder); @@ -2307,6 +2311,10 @@ static void intel_enable_dp(struct intel_encoder *encoder) if (IS_VALLEYVIEW(dev)) vlv_wait_port_ready(dev_priv, dp_to_dig_port(intel_dp)); + if (is_edp(intel_dp)) + intel_connector_hpd_enable(intel_dp->attached_connector, + true); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); intel_dp_start_link_train(intel_dp); intel_dp_complete_link_train(intel_dp); @@ -4373,6 +4381,7 @@ static void intel_edp_panel_vdd_sanitize(struct intel_dp *intel_dp) static void intel_dp_encoder_reset(struct drm_encoder *encoder) { + struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct intel_dp *intel_dp; if (to_intel_encoder(encoder)->type != INTEL_OUTPUT_EDP) @@ -4392,6 +4401,11 @@ static void intel_dp_encoder_reset(struct drm_encoder *encoder) intel_edp_panel_vdd_sanitize(intel_dp); pps_unlock(intel_dp); + + /* enable HPD for eDP only if the port is currently enabled */ + if (I915_READ(intel_dp->output_reg) & DP_PORT_EN) + intel_dp->attached_connector->polled = DRM_CONNECTOR_POLL_HPD; + } static const struct drm_connector_funcs intel_dp_connector_funcs = { @@ -5072,7 +5086,9 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, BUG(); } - intel_connector->polled = DRM_CONNECTOR_POLL_HPD; + /* enable HPD for eDP only if the port is currently enabled */ + if (!is_edp(intel_dp) || intel_dp->DP & DP_PORT_EN) + intel_connector->polled = DRM_CONNECTOR_POLL_HPD; if (is_edp(intel_dp)) { pps_lock(intel_dp); diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index bb871f3..bb72c46 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -809,6 +809,9 @@ static inline bool intel_irqs_enabled(struct drm_i915_private *dev_priv) int intel_get_crtc_scanline(struct intel_crtc *crtc); void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv); +void intel_connector_hpd_enable(struct intel_connector *intel_connector, + bool enable); + /* intel_crt.c */ void intel_crt_init(struct drm_device *dev); -- 2.0.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 7/7] drm/i915: Disable HPD for disabled eDP ports 2015-01-09 12:21 ` [PATCH 7/7] drm/i915: Disable HPD for disabled eDP ports ville.syrjala @ 2015-01-09 17:47 ` shuang.he 0 siblings, 0 replies; 19+ messages in thread From: shuang.he @ 2015-01-09 17:47 UTC (permalink / raw) To: shuang.he, intel-gfx, ville.syrjala Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com) -------------------------------------Summary------------------------------------- Platform Delta drm-intel-nightly Series Applied PNV -31 363/364 332/364 ILK -38 364/365 326/365 SNB +4-65 443/450 382/450 IVB -44 496/498 452/498 BYT -8 288/289 280/289 HSW +19-69 542/564 492/564 BDW -25 406/407 381/407 -------------------------------------Detailed------------------------------------- Platform Test drm-intel-nightly Series Applied PNV igt_gem_concurrent_blit_gpu-bcs-early-read-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-bcs-overwrite-source NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-bcs-overwrite-source-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-rcs-early-read NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-rcs-early-read-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-rcs-overwrite-source NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpu-rcs-overwrite-source-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-bcs-early-read NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-bcs-early-read-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-bcs-overwrite-source NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-rcs-early-read NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-rcs-early-read-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-rcs-overwrite-source NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-interruptible NSPT(7, M23M25)PASS(1, M25) NSPT(1, M25) PNV igt_gem_pread_after_blit_interruptible NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) PNV igt_gem_pread_after_blit_interruptible-display NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) PNV igt_gem_pread_after_blit_interruptible-snoop NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) PNV igt_gem_pread_after_blit_interruptible-uncached NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) PNV igt_gem_pread_after_blit_normal NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) PNV igt_gem_pread_after_blit_normal-display NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) PNV igt_gem_pread_after_blit_normal-snoop NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) PNV igt_gem_pread_after_blit_normal-uncached NRUN(2, M23M25)PASS(1, M25) NRUN(1, M25) ILK igt_gem_concurrent_blit_gpu-bcs-early-read NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpu-bcs-early-read-interruptible NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-interruptible NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpu-bcs-overwrite-source NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpu-bcs-overwrite-source-interruptible NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpuX-bcs-early-read NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpuX-bcs-early-read-interruptible NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-interruptible NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpuX-bcs-overwrite-source NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-interruptible NSPT(7, M26M37)PASS(1, M37) NSPT(1, M26) ILK igt_gem_pread_after_blit_interruptible NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_gem_pread_after_blit_interruptible-display NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_gem_pread_after_blit_interruptible-snoop NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_gem_pread_after_blit_interruptible-uncached NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_gem_pread_after_blit_normal NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_gem_pread_after_blit_normal-display NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_gem_pread_after_blit_normal-snoop NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_gem_pread_after_blit_normal-uncached NRUN(2, M26M37)PASS(1, M37) NRUN(1, M26) ILK igt_kms_flip_nonexisting-fb DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_render_direct-render DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_bcs-flip-vs-modeset-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_blocking-absolute-wf_vblank-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_busy-flip-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_flip-vs-dpms-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_flip-vs-panning DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_flip-vs-rmfb-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_plain-flip-fb-recreate-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_plain-flip-ts-check-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_rcs-flip-vs-dpms DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_rcs-flip-vs-modeset DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_rcs-flip-vs-panning DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_rcs-flip-vs-panning-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_rcs-wf_vblank-vs-dpms-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_vblank-vs-hang DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_wf_vblank-ts-check DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) ILK igt_kms_flip_wf_vblank-vs-modeset-interruptible DMESG_WARN(4, M26)PASS(1, M37) DMESG_WARN(1, M26) SNB igt_gem_concurrent_blit_gpu-bcs-early-read NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-early-read-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-early-read-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-overwrite-source NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-overwrite-source-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-bcs-overwrite-source-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-early-read NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-early-read-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-overwrite-source NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-overwrite-source-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpu-rcs-overwrite-source-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-early-read NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-early-read-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-early-read-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-overwrite-source NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-early-read NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-early-read-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-early-read-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-overwrite-source NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-forked NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-interruptible NSPT(7, M22M35)PASS(1, M35) NSPT(1, M22) SNB igt_gem_pread_after_blit_interruptible NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_gem_pread_after_blit_interruptible-display NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_gem_pread_after_blit_interruptible-snoop NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_gem_pread_after_blit_interruptible-uncached NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_gem_pread_after_blit_normal NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_gem_pread_after_blit_normal-display NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_gem_pread_after_blit_normal-snoop NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_gem_pread_after_blit_normal-uncached NRUN(3, M22M35)PASS(1, M35) NRUN(1, M22) SNB igt_kms_cursor_crc_cursor-size-change NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_kms_flip_dpms-vs-vblank-race DMESG_WARN(3, M35M22)PASS(6, M35M22) PASS(1, M22) SNB igt_kms_flip_dpms-vs-vblank-race-interruptible DMESG_WARN(2, M35M22)PASS(7, M35M22) PASS(1, M22) SNB igt_kms_flip_event_leak NSPT(5, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_kms_flip_modeset-vs-vblank-race DMESG_WARN(4, M35M22)PASS(6, M35M22) PASS(1, M22) SNB igt_kms_mmio_vs_cs_flip_setcrtc_vs_cs_flip NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_kms_mmio_vs_cs_flip_setplane_vs_cs_flip NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_kms_plane_plane-position-hole-pipe-B-plane-1 DMESG_WARN(1, M35)PASS(10, M35M22) PASS(1, M22) SNB igt_kms_rotation_crc_primary-rotation NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_kms_rotation_crc_sprite-rotation NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_cursor NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_cursor-dpms NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_dpms-mode-unset-non-lpsp NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_dpms-non-lpsp NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_drm-resources-equal NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_fences NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_fences-dpms NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_gem-execbuf NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_gem-mmap-cpu NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_gem-mmap-gtt NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_gem-pread NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_i2c NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_modeset-non-lpsp NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_modeset-non-lpsp-stress-no-wait NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_pci-d3-state NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) SNB igt_pm_rpm_rte NSPT(6, M35M22)PASS(1, M35) NSPT(1, M22) *SNB igt_gem_concurrent_blit_gtt-rcs-overwrite-source-forked PASS(1, M35) DMESG_WARN(1, M22) IVB igt_gem_concurrent_blit_gpu-bcs-early-read NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-early-read-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-early-read-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-overwrite-source NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-overwrite-source-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-bcs-overwrite-source-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-early-read NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-early-read-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-early-read-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-overwrite-source NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-overwrite-source-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpu-rcs-overwrite-source-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-early-read NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-early-read-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-early-read-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-overwrite-source NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-early-read NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-early-read-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-early-read-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-overwrite-source NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-forked NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-interruptible NSPT(7, M21M34M4)PASS(1, M34) NSPT(1, M4) IVB igt_gem_pread_after_blit_interruptible NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) IVB igt_gem_pread_after_blit_interruptible-display NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) IVB igt_gem_pread_after_blit_interruptible-snoop NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) IVB igt_gem_pread_after_blit_interruptible-uncached NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) IVB igt_gem_pread_after_blit_normal NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) IVB igt_gem_pread_after_blit_normal-display NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) IVB igt_gem_pread_after_blit_normal-snoop NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) IVB igt_gem_pread_after_blit_normal-uncached NRUN(2, M21M4)PASS(1, M34) NRUN(1, M4) *BYT igt_gem_pread_after_blit_interruptible NRUN(2, M51)PASS(1, M48) NRUN(1, M50) *BYT igt_gem_pread_after_blit_interruptible-display NRUN(2, M51)PASS(1, M48) NRUN(1, M50) *BYT igt_gem_pread_after_blit_interruptible-snoop NRUN(2, M51)PASS(1, M48) NRUN(1, M50) *BYT igt_gem_pread_after_blit_interruptible-uncached NRUN(2, M51)PASS(1, M48) NRUN(1, M50) *BYT igt_gem_pread_after_blit_normal NRUN(2, M51)PASS(1, M48) NRUN(1, M50) *BYT igt_gem_pread_after_blit_normal-display NRUN(2, M51)PASS(1, M48) NRUN(1, M50) *BYT igt_gem_pread_after_blit_normal-snoop NRUN(2, M51)PASS(1, M48) NRUN(1, M50) *BYT igt_gem_pread_after_blit_normal-uncached NRUN(2, M51)PASS(1, M48) NRUN(1, M50) HSW igt_gem_concurrent_blit_gpu-bcs-early-read NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-early-read-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-early-read-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-overwrite-source NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-overwrite-source-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-bcs-overwrite-source-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-early-read NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-early-read-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-early-read-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-overwrite-source NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-overwrite-source-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpu-rcs-overwrite-source-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-early-read NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-early-read-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-early-read-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-overwrite-source NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-early-read NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-early-read-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-early-read-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-overwrite-source NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-forked NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-interruptible NSPT(7, M19M20M40)PASS(1, M40) NSPT(1, M19) HSW igt_gem_pread_after_blit_interruptible NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_gem_pread_after_blit_interruptible-display NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_gem_pread_after_blit_interruptible-snoop NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_gem_pread_after_blit_interruptible-uncached NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_gem_pread_after_blit_normal NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_gem_pread_after_blit_normal-display NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_gem_pread_after_blit_normal-snoop NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_gem_pread_after_blit_normal-uncached NRUN(2, M19)PASS(1, M40) NRUN(1, M19) HSW igt_kms_cursor_crc_cursor-size-change NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_kms_fence_pin_leak NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_kms_flip_dpms-vs-vblank-race DMESG_WARN(1, M40)PASS(5, M19M20) PASS(1, M19) HSW igt_kms_flip_dpms-vs-vblank-race-interruptible DMESG_WARN(2, M40)PASS(5, M19M20) PASS(1, M19) HSW igt_kms_flip_event_leak NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_kms_flip_flip-vs-dpms-off-vs-modeset DMESG_WARN(1, M40)PASS(5, M19M20) PASS(1, M19) HSW igt_kms_flip_flip-vs-dpms-off-vs-modeset-interruptible DMESG_WARN(2, M40M19)PASS(5, M19M20) PASS(1, M19) HSW igt_kms_flip_modeset-vs-vblank-race DMESG_WARN(1, M40)PASS(5, M19M20) PASS(1, M19) HSW igt_kms_flip_modeset-vs-vblank-race-interruptible DMESG_WARN(1, M40)PASS(5, M19M20) PASS(1, M19) HSW igt_kms_flip_single-buffer-flip-vs-dpms-off-vs-modeset-interruptible DMESG_WARN(2, M40)PASS(6, M19M20) PASS(1, M19) HSW igt_kms_mmio_vs_cs_flip_setcrtc_vs_cs_flip NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_kms_mmio_vs_cs_flip_setplane_vs_cs_flip NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_kms_pipe_crc_basic_read-crc-pipe-B TIMEOUT(1, M40)PASS(3, M19) PASS(1, M19) HSW igt_kms_pipe_crc_basic_read-crc-pipe-B-frame-sequence TIMEOUT(1, M40)PASS(3, M19) PASS(1, M19) HSW igt_kms_pipe_crc_basic_read-crc-pipe-C TIMEOUT(1, M40)PASS(3, M19) PASS(1, M19) HSW igt_kms_pipe_crc_basic_read-crc-pipe-C-frame-sequence TIMEOUT(1, M40)PASS(3, M19) PASS(1, M19) HSW igt_kms_plane_plane-panning-bottom-right-pipe-A-plane-1 TIMEOUT(1, M40)PASS(3, M19) PASS(1, M19) HSW igt_kms_plane_plane-panning-bottom-right-pipe-A-plane-2 TIMEOUT(1, M40)PASS(3, M19) PASS(1, M19) HSW igt_kms_plane_plane-panning-bottom-right-pipe-B-plane-1 TIMEOUT(1, M40)PASS(4, M19M20) PASS(1, M19) HSW igt_kms_plane_plane-panning-bottom-right-pipe-B-plane-2 TIMEOUT(1, M40)PASS(4, M19M20) PASS(1, M19) HSW igt_kms_plane_plane-panning-bottom-right-pipe-C-plane-1 TIMEOUT(3, M40)PASS(7, M19M40M20) PASS(1, M19) HSW igt_kms_setmode_invalid-clone-exclusive-crtc DMESG_WARN(1, M40)PASS(3, M19) PASS(1, M19) HSW igt_pm_lpsp_non-edp NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_cursor NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_cursor-dpms NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_dpms-mode-unset-non-lpsp NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_dpms-non-lpsp NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_drm-resources-equal NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_fences NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_fences-dpms NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_gem-execbuf NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_gem-mmap-cpu NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_gem-mmap-gtt NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_gem-pread NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_i2c NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_modeset-non-lpsp NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_modeset-non-lpsp-stress-no-wait NSPT(4, M19)DMESG_WARN(1, M40)PASS(5, M40M20) NSPT(1, M19) HSW igt_pm_rpm_pci-d3-state NSPT(3, M19)PASS(1, M40) NSPT(1, M19) HSW igt_pm_rpm_rte NSPT(3, M19)PASS(1, M40) NSPT(1, M19) *HSW igt_gem_concurrent_blit_gtt-bcs-early-read-forked PASS(2, M40M19) DMESG_WARN(1, M19) *HSW igt_gem_concurrent_blit_gtt-bcs-gpu-read-after-write-forked PASS(1, M40) DMESG_WARN(1, M19) *HSW igt_gem_concurrent_blit_gtt-rcs-early-read-forked PASS(1, M40) DMESG_WARN(1, M19) *HSW igt_gem_concurrent_blit_gttX-bcs-overwrite-source-forked PASS(1, M40) DMESG_WARN(1, M19) HSW igt_kms_flip_flip-vs-rmfb DMESG_WARN(1, M40)PASS(4, M19) PASS(1, M19) HSW igt_kms_flip_flip-vs-rmfb-interruptible DMESG_WARN(1, M40)PASS(3, M19) PASS(1, M19) BDW igt_gem_concurrent_blit_gpu-bcs-early-read NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-bcs-early-read-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-bcs-gpu-read-after-write-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-bcs-overwrite-source NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-bcs-overwrite-source-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-rcs-early-read NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-rcs-early-read-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-rcs-gpu-read-after-write-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-rcs-overwrite-source NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpu-rcs-overwrite-source-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-bcs-early-read NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-bcs-early-read-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-bcs-gpu-read-after-write-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-bcs-overwrite-source NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-bcs-overwrite-source-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-rcs-early-read NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-rcs-early-read-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-rcs-gpu-read-after-write-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-rcs-overwrite-source NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) BDW igt_gem_concurrent_blit_gpuX-rcs-overwrite-source-interruptible NSPT(7, M28M30)PASS(1, M30) NSPT(1, M28) *BDW igt_gem_concurrent_blit_gtt-bcs-early-read-interruptible PASS(2, M30M28) DMESG_WARN(1, M28) Note: You need to pay more attention to line start with '*' _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala ` (6 preceding siblings ...) 2015-01-09 12:21 ` [PATCH 7/7] drm/i915: Disable HPD for disabled eDP ports ville.syrjala @ 2015-01-13 0:46 ` Sean V Kelley 2015-01-13 9:36 ` Ville Syrjälä 7 siblings, 1 reply; 19+ messages in thread From: Sean V Kelley @ 2015-01-13 0:46 UTC (permalink / raw) To: intel-gfx -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 01/09/2015 04:21 AM, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > My BSW has a nasty problem where it generates tons of spurious hpd > interrupts when the eDP display is disabled. The best solution > seems to be to disable hpd for eDP ports when the port is disabled > since we don't care about long hpds anyway and short hpds are only > relevant while the link is up and running. > How did these spurious interrupts affect your system? Did you see this on both B and C Stepping? Sean > This series tries to implement that, and I've included a few > random fixes/refactorings to the hpd code as well. > > Ville Syrjälä (7): drm/i915: Make hpd arrays big enough to avoid > out of bounds access drm/i915: Remove I915_HAS_HOTPLUG() check from > i915_hpd_irq_setup() drm/i915: Don't register HDMI connectors for > eDP ports on VLV/CHV drm/i915: Don't pretend SDVO hotplug works on > 915 drm/i915: Set intel_connector->polled to DRM_CONNECTOR_POLL_HPD > when appropriate drm/i915: Unify hpd setup between init and hpd > storm handling drm/i915: Disable HPD for disabled eDP ports > > drivers/gpu/drm/i915/i915_irq.c | 172 > ++++++++++++++++++++--------------- > drivers/gpu/drm/i915/intel_crt.c | 4 +- > drivers/gpu/drm/i915/intel_display.c | 6 +- > drivers/gpu/drm/i915/intel_dp.c | 18 ++++ > drivers/gpu/drm/i915/intel_dp_mst.c | 2 + > drivers/gpu/drm/i915/intel_drv.h | 3 + > drivers/gpu/drm/i915/intel_hdmi.c | 2 + > drivers/gpu/drm/i915/intel_sdvo.c | 4 + 8 files changed, 136 > insertions(+), 75 deletions(-) > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJUtGrNAAoJEGScDsMo8QYOmWsQAMORWtlFc8743+LrJ6y6+rX0 +uF3u/v6F+nQr7ijDqMAGuLfCHc04MFJl+uFzCI4p6/DoGTtL9s98EjLlLq/epGI GuRimDfAx/VsYz18JIByXTbslduoXjq5Cf2C+6atN+AJ3zFEx+j9CRuDcniFVioJ wufpSdp+p3ruLSSIj/s2IiaiveKUZ2mROxIoiJsfBeS0vvbNCVh87JlQQCJ21xlZ L6kGGQq7n7lTa6uIxUo9JoU00yRvB3WsPxlSI8K8aDiYIiYxG+ovchUNCj7s0+IE ePBdYPaZpA4i6/i8HPqXlPveAq8Y4rA2TX6dICd5SRok8PAz7lVVKoMSwS59BMX7 rq9dSFTPkgbU5iwATcmIqQ1plvFAwDpixJ/xpQWjAwm+JF85mW/1GEoPfpImERAY 3CQvi8fkmdVhkcwOQ0SXRMzkIzVjROVkG5PABwgDw4LSFzdP84x07RHCH6omSRIa NH8fO3cLYWGRmgc1UtP5rW5gBx6J/c+AMtjz74ePoaQOv7H6WaNWEnRnebyXqFo5 RT3Gk0QLS79FFBApZKm2XsWa7Qj6XTKDKPShQME/5kUF5a6yl/arkYyfRVmiNcPg LWWjS6zUAXm0NjwB24pMuAtugIAGp8D13bWxFQ2501cwDxXHNUK7i9ppdl08A2A7 agVTLHHrEhf8LxXS9AWv =1UId -----END PGP SIGNATURE----- _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports 2015-01-13 0:46 ` [PATCH 0/7] drm/i915: Disable hpd " Sean V Kelley @ 2015-01-13 9:36 ` Ville Syrjälä 0 siblings, 0 replies; 19+ messages in thread From: Ville Syrjälä @ 2015-01-13 9:36 UTC (permalink / raw) To: Sean V Kelley; +Cc: intel-gfx On Mon, Jan 12, 2015 at 04:46:12PM -0800, Sean V Kelley wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > > On 01/09/2015 04:21 AM, ville.syrjala@linux.intel.com wrote: > > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > My BSW has a nasty problem where it generates tons of spurious hpd > > interrupts when the eDP display is disabled. The best solution > > seems to be to disable hpd for eDP ports when the port is disabled > > since we don't care about long hpds anyway and short hpds are only > > relevant while the link is up and running. > > > > How did these spurious interrupts affect your system? You get tons of debug spew from the kernel. In fact occasionally so much that there's a feedback loop where the debug prints cause more noise on the hpd line to generate more spurious interrupts. It could become bad enoguh that the machine was pretty much dead, just constantly printing hpd debug messages. > Did you see this on both B and C Stepping? Yep. It's probably more or a board issue. > > Sean > > > > > This series tries to implement that, and I've included a few > > random fixes/refactorings to the hpd code as well. > > > > Ville Syrjälä (7): drm/i915: Make hpd arrays big enough to avoid > > out of bounds access drm/i915: Remove I915_HAS_HOTPLUG() check from > > i915_hpd_irq_setup() drm/i915: Don't register HDMI connectors for > > eDP ports on VLV/CHV drm/i915: Don't pretend SDVO hotplug works on > > 915 drm/i915: Set intel_connector->polled to DRM_CONNECTOR_POLL_HPD > > when appropriate drm/i915: Unify hpd setup between init and hpd > > storm handling drm/i915: Disable HPD for disabled eDP ports > > > > drivers/gpu/drm/i915/i915_irq.c | 172 > > ++++++++++++++++++++--------------- > > drivers/gpu/drm/i915/intel_crt.c | 4 +- > > drivers/gpu/drm/i915/intel_display.c | 6 +- > > drivers/gpu/drm/i915/intel_dp.c | 18 ++++ > > drivers/gpu/drm/i915/intel_dp_mst.c | 2 + > > drivers/gpu/drm/i915/intel_drv.h | 3 + > > drivers/gpu/drm/i915/intel_hdmi.c | 2 + > > drivers/gpu/drm/i915/intel_sdvo.c | 4 + 8 files changed, 136 > > insertions(+), 75 deletions(-) > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1 > > iQIcBAEBAgAGBQJUtGrNAAoJEGScDsMo8QYOmWsQAMORWtlFc8743+LrJ6y6+rX0 > +uF3u/v6F+nQr7ijDqMAGuLfCHc04MFJl+uFzCI4p6/DoGTtL9s98EjLlLq/epGI > GuRimDfAx/VsYz18JIByXTbslduoXjq5Cf2C+6atN+AJ3zFEx+j9CRuDcniFVioJ > wufpSdp+p3ruLSSIj/s2IiaiveKUZ2mROxIoiJsfBeS0vvbNCVh87JlQQCJ21xlZ > L6kGGQq7n7lTa6uIxUo9JoU00yRvB3WsPxlSI8K8aDiYIiYxG+ovchUNCj7s0+IE > ePBdYPaZpA4i6/i8HPqXlPveAq8Y4rA2TX6dICd5SRok8PAz7lVVKoMSwS59BMX7 > rq9dSFTPkgbU5iwATcmIqQ1plvFAwDpixJ/xpQWjAwm+JF85mW/1GEoPfpImERAY > 3CQvi8fkmdVhkcwOQ0SXRMzkIzVjROVkG5PABwgDw4LSFzdP84x07RHCH6omSRIa > NH8fO3cLYWGRmgc1UtP5rW5gBx6J/c+AMtjz74ePoaQOv7H6WaNWEnRnebyXqFo5 > RT3Gk0QLS79FFBApZKm2XsWa7Qj6XTKDKPShQME/5kUF5a6yl/arkYyfRVmiNcPg > LWWjS6zUAXm0NjwB24pMuAtugIAGp8D13bWxFQ2501cwDxXHNUK7i9ppdl08A2A7 > agVTLHHrEhf8LxXS9AWv > =1UId > -----END PGP SIGNATURE----- > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2015-01-16 10:57 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-01-09 12:21 [PATCH 0/7] drm/i915: Disable hpd for disabled eDP ports ville.syrjala 2015-01-09 12:21 ` [PATCH 1/7] drm/i915: Make hpd arrays big enough to avoid out of bounds access ville.syrjala 2015-01-09 14:41 ` [Intel-gfx] " Jani Nikula 2015-01-09 15:27 ` Ville Syrjälä 2015-01-09 12:21 ` [PATCH 2/7] drm/i915: Remove I915_HAS_HOTPLUG() check from i915_hpd_irq_setup() ville.syrjala 2015-01-09 14:52 ` Jani Nikula 2015-01-09 12:21 ` [PATCH 3/7] drm/i915: Don't register HDMI connectors for eDP ports on VLV/CHV ville.syrjala 2015-01-09 15:02 ` Jani Nikula 2015-01-12 23:48 ` Daniel Vetter 2015-01-09 12:21 ` [PATCH 4/7] drm/i915: Don't pretend SDVO hotplug works on 915 ville.syrjala 2015-01-09 15:04 ` Jani Nikula 2015-01-12 23:48 ` Daniel Vetter 2015-01-16 10:57 ` Ville Syrjälä 2015-01-09 12:21 ` [PATCH 5/7] drm/i915: Set intel_connector->polled to DRM_CONNECTOR_POLL_HPD when appropriate ville.syrjala 2015-01-09 12:21 ` [PATCH 6/7] drm/i915: Unify hpd setup between init and hpd storm handling ville.syrjala 2015-01-09 12:21 ` [PATCH 7/7] drm/i915: Disable HPD for disabled eDP ports ville.syrjala 2015-01-09 17:47 ` shuang.he 2015-01-13 0:46 ` [PATCH 0/7] drm/i915: Disable hpd " Sean V Kelley 2015-01-13 9:36 ` Ville Syrjälä
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.