All of lore.kernel.org
 help / color / mirror / Atom feed
* FAILED: patch "[PATCH] drm/i915: Disable MSI for all pre-gen5" failed to apply to 4.13-stable tree
@ 2017-09-20  9:17 gregkh
  2017-09-20 16:38 ` Diego Viola
  0 siblings, 1 reply; 3+ messages in thread
From: gregkh @ 2017-09-20  9:17 UTC (permalink / raw)
  To: ville.syrjala, daniel.vetter, diego.viola; +Cc: stable


The patch below does not apply to the 4.13-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

>From e38c2da01f76cca82b59ca612529b81df82a7cc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
Date: Mon, 26 Jun 2017 23:30:51 +0300
Subject: [PATCH] drm/i915: Disable MSI for all pre-gen5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We have pretty clear evidence that MSIs are getting lost on g4x and
somehow the interrupt logic doesn't seem to recover from that state
even if we try hard to clear the IIR.

Disabling IER around the normal IIR clearing in the irq handler isn't
sufficient to avoid this, so the problem really seems to be further
up the interrupt chain. This should guarantee that there's always
an edge if any IIR bits are set after the interrupt handler is done,
which should normally guarantee that the CPU interrupt is generated.
That approach seems to work perfectly on VLV/CHV, but apparently
not on g4x.

MSI is documented to be broken on 965gm at least. The chipset spec
says MSI is defeatured because interrupts can be delayed or lost,
which fits well with what we're seeing on g4x. Previously we've
already disabled GMBUS interrupts on g4x because somehow GMBUS
manages to raise legacy interrupts even when MSI is enabled.

Since there's such widespread MSI breakahge all over in the pre-gen5
land let's just give up on MSI on these platforms.

Seqno reporting might be negatively affected by this since the legcy
interrupts aren't guaranteed to be ordered with the seqno writes,
whereas MSI interrupts may be? But an occasioanlly missed seqno
seems like a small price to pay for generally working interrupts.

Cc: stable@vger.kernel.org
Cc: Diego Viola <diego.viola@gmail.com>
Tested-by: Diego Viola <diego.viola@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101261
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170626203051.28480-1-ville.syrjala@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 43e925933688..a6bef9ee8703 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1141,10 +1141,12 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv)
 	 * and the registers being closely associated.
 	 *
 	 * According to chipset errata, on the 965GM, MSI interrupts may
-	 * be lost or delayed, but we use them anyways to avoid
-	 * stuck interrupts on some machines.
+	 * be lost or delayed, and was defeatured. MSI interrupts seem to
+	 * get lost on g4x as well, and interrupt delivery seems to stay
+	 * properly dead afterwards. So we'll just disable them for all
+	 * pre-gen5 chipsets.
 	 */
-	if (!IS_I945G(dev_priv) && !IS_I945GM(dev_priv)) {
+	if (INTEL_GEN(dev_priv) >= 5) {
 		if (pci_enable_msi(pdev) < 0)
 			DRM_DEBUG_DRIVER("can't enable MSI");
 	}

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

* Re: FAILED: patch "[PATCH] drm/i915: Disable MSI for all pre-gen5" failed to apply to 4.13-stable tree
  2017-09-20  9:17 FAILED: patch "[PATCH] drm/i915: Disable MSI for all pre-gen5" failed to apply to 4.13-stable tree gregkh
@ 2017-09-20 16:38 ` Diego Viola
  2017-09-25 22:44   ` Diego Viola
  0 siblings, 1 reply; 3+ messages in thread
From: Diego Viola @ 2017-09-20 16:38 UTC (permalink / raw)
  To: gregkh; +Cc: ville.syrjala, daniel.vetter, stable

On Wed, Sep 20, 2017 at 6:17 AM,  <gregkh@linuxfoundation.org> wrote:
>
> The patch below does not apply to the 4.13-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@vger.kernel.org>.
>
> thanks,
>
> greg k-h
>
> ------------------ original commit in Linus's tree ------------------
>
> From e38c2da01f76cca82b59ca612529b81df82a7cc7 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
> Date: Mon, 26 Jun 2017 23:30:51 +0300
> Subject: [PATCH] drm/i915: Disable MSI for all pre-gen5
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> We have pretty clear evidence that MSIs are getting lost on g4x and
> somehow the interrupt logic doesn't seem to recover from that state
> even if we try hard to clear the IIR.
>
> Disabling IER around the normal IIR clearing in the irq handler isn't
> sufficient to avoid this, so the problem really seems to be further
> up the interrupt chain. This should guarantee that there's always
> an edge if any IIR bits are set after the interrupt handler is done,
> which should normally guarantee that the CPU interrupt is generated.
> That approach seems to work perfectly on VLV/CHV, but apparently
> not on g4x.
>
> MSI is documented to be broken on 965gm at least. The chipset spec
> says MSI is defeatured because interrupts can be delayed or lost,
> which fits well with what we're seeing on g4x. Previously we've
> already disabled GMBUS interrupts on g4x because somehow GMBUS
> manages to raise legacy interrupts even when MSI is enabled.
>
> Since there's such widespread MSI breakahge all over in the pre-gen5
> land let's just give up on MSI on these platforms.
>
> Seqno reporting might be negatively affected by this since the legcy
> interrupts aren't guaranteed to be ordered with the seqno writes,
> whereas MSI interrupts may be? But an occasioanlly missed seqno
> seems like a small price to pay for generally working interrupts.
>
> Cc: stable@vger.kernel.org
> Cc: Diego Viola <diego.viola@gmail.com>
> Tested-by: Diego Viola <diego.viola@gmail.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101261
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Link: http://patchwork.freedesktop.org/patch/msgid/20170626203051.28480-1-ville.syrjala@linux.intel.com
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 43e925933688..a6bef9ee8703 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -1141,10 +1141,12 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv)
>          * and the registers being closely associated.
>          *
>          * According to chipset errata, on the 965GM, MSI interrupts may
> -        * be lost or delayed, but we use them anyways to avoid
> -        * stuck interrupts on some machines.
> +        * be lost or delayed, and was defeatured. MSI interrupts seem to
> +        * get lost on g4x as well, and interrupt delivery seems to stay
> +        * properly dead afterwards. So we'll just disable them for all
> +        * pre-gen5 chipsets.
>          */
> -       if (!IS_I945G(dev_priv) && !IS_I945GM(dev_priv)) {
> +       if (INTEL_GEN(dev_priv) >= 5) {
>                 if (pci_enable_msi(pdev) < 0)
>                         DRM_DEBUG_DRIVER("can't enable MSI");
>         }
>

Hi Greg,

This patch was already merged in torvalds/linux.git before 4.13 was
released, so it is already available in 4.13.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/i915/i915_drv.c?id=e38c2da01f76cca82b59ca612529b81df82a7cc7

Thanks,
Diego

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

* Re: FAILED: patch "[PATCH] drm/i915: Disable MSI for all pre-gen5" failed to apply to 4.13-stable tree
  2017-09-20 16:38 ` Diego Viola
@ 2017-09-25 22:44   ` Diego Viola
  0 siblings, 0 replies; 3+ messages in thread
From: Diego Viola @ 2017-09-25 22:44 UTC (permalink / raw)
  To: gregkh; +Cc: ville.syrjala, daniel.vetter, stable

On Wed, Sep 20, 2017 at 1:38 PM, Diego Viola <diego.viola@gmail.com> wrote:
> On Wed, Sep 20, 2017 at 6:17 AM,  <gregkh@linuxfoundation.org> wrote:
>>
>> The patch below does not apply to the 4.13-stable tree.
>> If someone wants it applied there, or to any other stable or longterm
>> tree, then please email the backport, including the original git commit
>> id to <stable@vger.kernel.org>.
>>
>> thanks,
>>
>> greg k-h
>>
>> ------------------ original commit in Linus's tree ------------------
>>
>> From e38c2da01f76cca82b59ca612529b81df82a7cc7 Mon Sep 17 00:00:00 2001
>> From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
>> Date: Mon, 26 Jun 2017 23:30:51 +0300
>> Subject: [PATCH] drm/i915: Disable MSI for all pre-gen5
>> MIME-Version: 1.0
>> Content-Type: text/plain; charset=UTF-8
>> Content-Transfer-Encoding: 8bit
>>
>> We have pretty clear evidence that MSIs are getting lost on g4x and
>> somehow the interrupt logic doesn't seem to recover from that state
>> even if we try hard to clear the IIR.
>>
>> Disabling IER around the normal IIR clearing in the irq handler isn't
>> sufficient to avoid this, so the problem really seems to be further
>> up the interrupt chain. This should guarantee that there's always
>> an edge if any IIR bits are set after the interrupt handler is done,
>> which should normally guarantee that the CPU interrupt is generated.
>> That approach seems to work perfectly on VLV/CHV, but apparently
>> not on g4x.
>>
>> MSI is documented to be broken on 965gm at least. The chipset spec
>> says MSI is defeatured because interrupts can be delayed or lost,
>> which fits well with what we're seeing on g4x. Previously we've
>> already disabled GMBUS interrupts on g4x because somehow GMBUS
>> manages to raise legacy interrupts even when MSI is enabled.
>>
>> Since there's such widespread MSI breakahge all over in the pre-gen5
>> land let's just give up on MSI on these platforms.
>>
>> Seqno reporting might be negatively affected by this since the legcy
>> interrupts aren't guaranteed to be ordered with the seqno writes,
>> whereas MSI interrupts may be? But an occasioanlly missed seqno
>> seems like a small price to pay for generally working interrupts.
>>
>> Cc: stable@vger.kernel.org
>> Cc: Diego Viola <diego.viola@gmail.com>
>> Tested-by: Diego Viola <diego.viola@gmail.com>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101261
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Link: http://patchwork.freedesktop.org/patch/msgid/20170626203051.28480-1-ville.syrjala@linux.intel.com
>> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>>
>> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
>> index 43e925933688..a6bef9ee8703 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.c
>> +++ b/drivers/gpu/drm/i915/i915_drv.c
>> @@ -1141,10 +1141,12 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv)
>>          * and the registers being closely associated.
>>          *
>>          * According to chipset errata, on the 965GM, MSI interrupts may
>> -        * be lost or delayed, but we use them anyways to avoid
>> -        * stuck interrupts on some machines.
>> +        * be lost or delayed, and was defeatured. MSI interrupts seem to
>> +        * get lost on g4x as well, and interrupt delivery seems to stay
>> +        * properly dead afterwards. So we'll just disable them for all
>> +        * pre-gen5 chipsets.
>>          */
>> -       if (!IS_I945G(dev_priv) && !IS_I945GM(dev_priv)) {
>> +       if (INTEL_GEN(dev_priv) >= 5) {
>>                 if (pci_enable_msi(pdev) < 0)
>>                         DRM_DEBUG_DRIVER("can't enable MSI");
>>         }
>>
>
> Hi Greg,
>
> This patch was already merged in torvalds/linux.git before 4.13 was
> released, so it is already available in 4.13.
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/i915/i915_drv.c?id=e38c2da01f76cca82b59ca612529b81df82a7cc7
>
> Thanks,
> Diego

Just for the record, and more specifically.

commit ce3f7163e4ce8fd583dcb36b6ee6b81fd1b419ae
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Mon Jun 26 23:30:51 2017 +0300

    drm/i915: Disable MSI for all pre-gen5

$ git describe --contains ce3f7163e4ce8fd583dcb36b6ee6b81fd1b419ae
v4.13-rc1~45^2~2^2~9

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

end of thread, other threads:[~2017-09-25 22:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-20  9:17 FAILED: patch "[PATCH] drm/i915: Disable MSI for all pre-gen5" failed to apply to 4.13-stable tree gregkh
2017-09-20 16:38 ` Diego Viola
2017-09-25 22:44   ` Diego Viola

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.