Launchpad has imported 23 comments from the remote bug at
https://bugs.freedesktop.org/show_bug.cgi?id=92084.

If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://help.launchpad.net/InterBugTracking.

------------------------------------------------------------------------
On 2015-09-23T07:32:07+00:00 Wendy-wang wrote:

Test Environment:

BDW-U
4.3.0-rc2_drm-intel-nightly_be4c33_20150923+

Reproduce steps:
1.boot up system and grep error message in dmesg
2. Will see below ERROR message.
[    1.260036] [drm:gen8_irq_handler [i915]] *ERROR* The master control 
interrupt lied (SDE)!

Dmesg log attached.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/23

------------------------------------------------------------------------
On 2015-09-23T08:25:07+00:00 Jani-nikula wrote:

(In reply to wendy.wang from comment #0)
> Dmesg log attached.

There's no attachment.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/24

------------------------------------------------------------------------
On 2015-09-23T08:28:58+00:00 Yex-tian wrote:

Created attachment 118408
dmesg info with drm.debug=0xe

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/25

------------------------------------------------------------------------
On 2015-09-23T08:42:38+00:00 Yex-tian wrote:

This bug also exists on the latest drm-intel-fixes and drm-intel-next-
queued branch.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/26

------------------------------------------------------------------------
On 2015-09-23T13:54:12+00:00 Jani-nikula wrote:

Hmm, I'm wondering if we're handling this correctly, and if that could
cause the issue:

"For each bit, the IIR can store a second pending interrupt if two or
more of the same interrupt conditions occur before the first condition
is cleared. Upon clearing the interrupt, the IIR bit will momentarily go
low, then return high to indicate there is another interrupt pending.
Only the rising edge of the PCH Display interrupt will cause the North
Display IIR (DEIIR) PCH Display Interrupt event bit to be set, so all
PCH Display Interrupts, including back to back interrupts, must be
cleared here before a new PCH Display Interrupt can cause the DEIIR to
be set."

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/27

------------------------------------------------------------------------
On 2015-09-24T07:35:04+00:00 Wendy-wang wrote:

Good commit:
commit b42fa27abff5970649ff07b0ce1691f6464097f3
Author: Daniel Vetter <daniel.vet...@ffwll.ch>
Date:   Wed Jul 8 21:48:11 2015 +0200

    drm-intel-nightly: 2015y-07m-08d-19h-47m-26s UTC integration
manifest


Bad commit:
commit 5b4a647fe39cf42753761b7d4ee20d695eec589c
Author: Daniel Vetter <daniel.vet...@ffwll.ch>
Date:   Thu Jul 9 21:57:35 2015 +0200

    drm-intel-nightly: 2015y-07m-09d-19h-56m-44s UTC integration
manifest

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/28

------------------------------------------------------------------------
On 2015-09-25T15:08:53+00:00 Mika-kuoppala wrote:

On my bdw after this commit the messages started to appear:

commit aaf5ec2e51ab1d9c5e962b4728a1107ed3ff7a3e
Author: Sonika Jindal <sonika.jin...@intel.com>
Date:   Wed Jul 8 17:07:47 2015 +0530

    drm/i915: Handle HPD when it has actually occurred


But when I just tried with latest nightly, I couldn't reproduce the any dmesg 
errors.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/29

------------------------------------------------------------------------
On 2015-09-28T09:34:38+00:00 Niccolò Belli wrote:

Created attachment 118478
dmesg (without drm.debug)

I was going to report the very same issue for my XPS 13 2015 9343 (Broadwell) 
when I saw this.
I attached dmesg (without drm.debug). Kernel is 4.3.0-rc3-mainline.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/30

------------------------------------------------------------------------
On 2015-10-01T13:57:28+00:00 Jani-nikula wrote:

(In reply to Mika Kuoppala from comment #6)
> But when I just tried with latest nightly, I couldn't reproduce the any
> dmesg errors.

I still see this on BDW.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/33

------------------------------------------------------------------------
On 2015-10-01T14:13:11+00:00 Jani-nikula wrote:

Created attachment 118559
dmesg reproducing the problem on bdw

Curiously the errors are next to DP aux traffic.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/34

------------------------------------------------------------------------
On 2015-10-01T15:38:40+00:00 Ville-syrjala-e wrote:

Random idea:

--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2345,6 +2345,7 @@ static irqreturn_t gen8_irq_handler(int irq, void *arg)
                u32 pch_iir = I915_READ(SDEIIR);
                if (pch_iir) {
                        I915_WRITE(SDEIIR, pch_iir);
+                       POSTING_READ(SDEIIR);
                        ret = IRQ_HANDLED;

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/35

------------------------------------------------------------------------
On 2015-10-02T10:17:36+00:00 Jani-nikula wrote:

(In reply to Ville Syrjala from comment #10)
> +                       POSTING_READ(SDEIIR);

Does not help.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/36

------------------------------------------------------------------------
On 2015-10-02T11:41:48+00:00 Jani-nikula wrote:

However this helps. We're missing something.

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 76bd40e13391..0d524034abd7 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1827,6 +1827,9 @@ static void ibx_hpd_irq_handler(struct drm_device *dev, 
u32 hotplug_trigger,
        dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
        I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
 
+       if (!hotplug_trigger)
+               return;
+
        intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
                           dig_hotplug_reg, hpd,
                           pch_port_hotplug_long_detect);
@@ -1934,8 +1937,7 @@ static void cpt_irq_handler(struct drm_device *dev, u32 
pch_iir)
        int pipe;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
 
-       if (hotplug_trigger)
-               ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
+       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
 
        if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) {
                int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/37

------------------------------------------------------------------------
On 2015-10-02T16:27:43+00:00 Ville-syrjala-e wrote:

(In reply to Jani Nikula from comment #12)
> However this helps. We're missing something.
> 
> diff --git a/drivers/gpu/drm/i915/i915_irq.c
> b/drivers/gpu/drm/i915/i915_irq.c
> index 76bd40e13391..0d524034abd7 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1827,6 +1827,9 @@ static void ibx_hpd_irq_handler(struct drm_device
> *dev, u32 hotplug_trigger,
>         dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
>         I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);

Is the read alone enough, or do you need the write too?

>  
> +       if (!hotplug_trigger)
> +               return;
> +
>         intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
>                            dig_hotplug_reg, hpd,
>                            pch_port_hotplug_long_detect);
> @@ -1934,8 +1937,7 @@ static void cpt_irq_handler(struct drm_device *dev,
> u32 pch_iir)
>         int pipe;
>         u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
>  
> -       if (hotplug_trigger)
> -               ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
> +       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
>  
>         if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) {
>                 int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/38

------------------------------------------------------------------------
On 2015-10-05T05:33:19+00:00 Sonika-jindal wrote:

(In reply to Jani Nikula from comment #12)
> However this helps. We're missing something.
> 
> diff --git a/drivers/gpu/drm/i915/i915_irq.c
> b/drivers/gpu/drm/i915/i915_irq.c
> index 76bd40e13391..0d524034abd7 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1827,6 +1827,9 @@ static void ibx_hpd_irq_handler(struct drm_device
> *dev, u32 hotplug_trigger,
>         dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
>         I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
>  
> +       if (!hotplug_trigger)
> +               return;
> +
Oh, but the whole point of the patch ( drm/i915: Handle HPD when it has 
actually occurred) was to disallaow writing to PCH_PORT_HOTPLUG register when 
the HPD did not occur.
And this shows stable HPD with SKL for me and was inline with other interrupts 
handling.

Do these "[drm:gen8_irq_handler [i915]] *ERROR* The master control
interrupt lied (SDE)!" messages have any effect on HPD?

>         intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
>                            dig_hotplug_reg, hpd,
>                            pch_port_hotplug_long_detect);
> @@ -1934,8 +1937,7 @@ static void cpt_irq_handler(struct drm_device *dev,
> u32 pch_iir)
>         int pipe;
>         u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
>  
> -       if (hotplug_trigger)
> -               ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
> +       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
>  
>         if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) {
>                 int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/39

------------------------------------------------------------------------
On 2015-10-05T11:26:42+00:00 Jani-nikula wrote:

(In reply to Ville Syrjala from comment #13)
> (In reply to Jani Nikula from comment #12)
> > However this helps. We're missing something.
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_irq.c
> > b/drivers/gpu/drm/i915/i915_irq.c
> > index 76bd40e13391..0d524034abd7 100644
> > --- a/drivers/gpu/drm/i915/i915_irq.c
> > +++ b/drivers/gpu/drm/i915/i915_irq.c
> > @@ -1827,6 +1827,9 @@ static void ibx_hpd_irq_handler(struct drm_device
> > *dev, u32 hotplug_trigger,
> >         dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
> >         I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
> 
> Is the read alone enough, or do you need the write too?

Moving the write below the !hotplug_trigger check brings the problem
back, i.e. the write is also needed.

> > +       if (!hotplug_trigger)
> > +               return;
> > +
> >         intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
> >                            dig_hotplug_reg, hpd,
> >                            pch_port_hotplug_long_detect);
> > @@ -1934,8 +1937,7 @@ static void cpt_irq_handler(struct drm_device *dev,
> > u32 pch_iir)
> >         int pipe;
> >         u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
> >  
> > -       if (hotplug_trigger)
> > -               ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
> > +       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
> >  
> >         if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) {
> >                 int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/40

------------------------------------------------------------------------
On 2015-10-05T12:04:57+00:00 Ville-syrjala-e wrote:

(In reply to Jani Nikula from comment #15)
> (In reply to Ville Syrjala from comment #13)
> > (In reply to Jani Nikula from comment #12)
> > > However this helps. We're missing something.
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_irq.c
> > > b/drivers/gpu/drm/i915/i915_irq.c
> > > index 76bd40e13391..0d524034abd7 100644
> > > --- a/drivers/gpu/drm/i915/i915_irq.c
> > > +++ b/drivers/gpu/drm/i915/i915_irq.c
> > > @@ -1827,6 +1827,9 @@ static void ibx_hpd_irq_handler(struct drm_device
> > > *dev, u32 hotplug_trigger,
> > >         dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
> > >         I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
> > 
> > Is the read alone enough, or do you need the write too?
> 
> Moving the write below the !hotplug_trigger check brings the problem back,
> i.e. the write is also needed.

Are the status bits actually showing long/short pulses when this
happens?

Maybe we can just do something like this:

dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
if (!hotplug_trigger)
    dig_hotplug_reg &= ~(*_HOTPLUG_STATUS_MASK);
I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg
if (!hotplug_trigger)
    return;

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/41

------------------------------------------------------------------------
On 2015-10-12T07:02:52+00:00 Jani-nikula wrote:

Also http://mid.gmane.org/20151010190843.gb27...@malice.jf.intel.com

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/45

------------------------------------------------------------------------
On 2015-10-14T07:12:15+00:00 Jani-nikula wrote:

*** Bug 92454 has been marked as a duplicate of this bug. ***

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/50

------------------------------------------------------------------------
On 2015-10-23T13:27:48+00:00 Daniel-ffwll wrote:

commit 97e5ed1111dcc5300a0f59a55248cd243937a8ab
Author: Daniel Vetter <daniel.vet...@ffwll.ch>
Date:   Fri Oct 23 10:56:12 2015 +0200

    drm/i915: shut up gen8+ SDE irq dmesg noise

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/55

------------------------------------------------------------------------
On 2015-10-30T14:38:06+00:00 Jani-nikula wrote:

This also gets rid of the messages, and does *not* print the ### debug
msg, i.e. the status bits are clear.


diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 6e0a5683bbdc..7716181473dc 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1825,7 +1825,21 @@ static void ibx_hpd_irq_handler(struct drm_device *dev, 
u32 hotplug_trigger,
        u32 dig_hotplug_reg, pin_mask = 0, long_mask = 0;
 
        dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
+       if (!hotplug_trigger) {
+               u32 mask = PORTA_HOTPLUG_STATUS_MASK |
+                       PORTD_HOTPLUG_STATUS_MASK |
+                       PORTC_HOTPLUG_STATUS_MASK |
+                       PORTB_HOTPLUG_STATUS_MASK;
+
+               if (dig_hotplug_reg & mask)
+                       DRM_DEBUG_KMS("### %08x\n", dig_hotplug_reg & mask);
+
+               dig_hotplug_reg &= ~mask;
+       }
+       
        I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
+       if (!hotplug_trigger)
+               return;
 
        intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger,
                           dig_hotplug_reg, hpd,
@@ -1840,8 +1854,7 @@ static void ibx_irq_handler(struct drm_device *dev, u32 
pch_iir)
        int pipe;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK;
 
-       if (hotplug_trigger)
-               ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_ibx);
+       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_ibx);
 
        if (pch_iir & SDE_AUDIO_POWER_MASK) {
                int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK) >>
@@ -1934,8 +1947,7 @@ static void cpt_irq_handler(struct drm_device *dev, u32 
pch_iir)
        int pipe;
        u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT;
 
-       if (hotplug_trigger)
-               ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
+       ibx_hpd_irq_handler(dev, hotplug_trigger, hpd_cpt);
 
        if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) {
                int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >>

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/57

------------------------------------------------------------------------
On 2015-11-26T14:29:15+00:00 Jani-nikula wrote:

commit 6a39d7c986be4fd18eb019e9cdbf774ec36c9f77
Author: Jani Nikula <jani.nik...@intel.com>
Date:   Wed Nov 25 16:47:22 2015 +0200

    drm/i915: fix the SDE irq dmesg warnings properly

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/70

------------------------------------------------------------------------
On 2015-12-15T15:32:44+00:00 Chris Wilson wrote:

Still present as of

commit 0035ecf934fae0492c2d90390f88b8c79e806ffa
Author: Daniel Vetter <daniel.vet...@ffwll.ch>
Date:   Mon Dec 14 10:41:10 2015 +0100

    drm-intel-nightly: 2015y-12m-14d-09h-40m-37s UTC integration
manifest

will look into the debug printk next time I have the box connected to a
display.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488719/comments/77


** Changed in: linux
       Status: Unknown => Confirmed

** Changed in: linux
   Importance: Unknown => Medium

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1488719

Title:
  dmesg shows "[drm:gen8_irq_handler [i915]] *ERROR* The master control
  interrupt lied (SDE)!"

Status in Linux:
  Confirmed
Status in linux package in Ubuntu:
  Confirmed

Bug description:
  On a recent intel NUC using i915 graphics, I get the following errors
  in dmesg:

  [drm:gen8_irq_handler [i915]] *ERROR* The master control interrupt
  lied (SDE)!

  There are two monitors connected to this box, one with mini-
  HDMI->HDMI, one with mini-DP->HDMI cable.

  Maybe related:

  https://bugs.freedesktop.org/show_bug.cgi?id=80896

  ProblemType: Bug
  DistroRelease: Ubuntu 15.04
  Package: linux-image-generic 3.19.0.26.25
  ProcVersionSignature: Ubuntu 3.19.0-26.28-generic 3.19.8-ckt4
  Uname: Linux 3.19.0-26-generic x86_64
  ApportVersion: 2.17.2-0ubuntu1.3
  Architecture: amd64
  Date: Wed Aug 26 10:07:31 2015
  InstallationDate: Installed on 2015-08-01 (24 days ago)
  InstallationMedia: Ubuntu 15.04 "Vivid Vervet" - Release amd64 (20150422)
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.19.0-26-generic.efi.signed 
root=/dev/mapper/ubuntu--vg-root ro quiet splash vt.handoff=7
  SourcePackage: linux
  UdevLog: Error: [Errno 2] No such file or directory: '/var/log/udev'
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/linux/+bug/1488719/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to