Skip to contentSkip to conversation

PCI: Add new PCI id for Intel GPU interrupt quirk

PATCH Applied Thomas Jarosch 4 participants 7 messages Apr 7, 2014 – Apr 29, 2014 PCI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 PCI: Add new PCI id for Intel GPU interrupt quirk

After a CPU upgrade while keeping the same mainboard, we faced "spurious interrupt" problems again.

It turned out that the new CPU also featured a
new GPU with a different PCI id.

-> Add this PCI id to the quirk table. Probably all other Intel GPU PCI ids are affected, too, but I don't want to add them without a test system.

---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)
drivers/pci/quirks.c +1 -0
index e729206..0feb4a3 100644
@@ -2954,6 +2954,7 @@ static void disable_igfx_irq(struct pci_dev *dev)
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 
 /*
  * PCI devices which are on Intel chips can skip the 10ms delay
Signature · 1 line
1.8.1.4
#1 lore raw
Quoted 30 lines · Thomas Jarosch

After a CPU upgrade while keeping the same mainboard, we faced "spurious interrupt" problems again.

It turned out that the new CPU also featured a
new GPU with a different PCI id.

-> Add this PCI id to the quirk table. Probably all other Intel GPU PCI ids are affected, too, but I don't want to add them without a test system.

---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)
drivers/pci/quirks.c +1 -0
index e729206..0feb4a3 100644
@@ -2954,6 +2954,7 @@ static void disable_igfx_irq(struct pci_dev *dev)
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 
 /*
  * PCI devices which are on Intel chips can skip the 10ms delay
Signature · 1 line
1.8.1.4

<formletter>

This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read Documentation/stable_kernel_rules.txt for how to do this properly.

</formletter>

#2 lore raw

Hi Greg,

Quoted 5 lines · On Monday, 7. April 2014 09:58:08 Greg KH wrote:
Quoted 2 lines · Thomas Jarosch

After a CPU upgrade while keeping the same mainboard, we faced "spurious interrupt" problems again.

..

Quoted 7 lines

<formletter>

This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read Documentation/stable_kernel_rules.txt for how to do this properly.

</formletter>

sorry 'bout that :)

I had on my mind I should CC: stable@ and then the patch will be picked up automatically once / if it gets applied to the normal git tree or lost in space if it gets rejected. Guess that was wishful thinking :)

Have a nice weekend,
Thomas

maintainer
#3 lore raw
In reply to Thomas Jarosch

[+cc Daniel, Jani, intel-gfx, dri-devel, -cc stable]

Quoted 9 lines · Thomas Jarosch

After a CPU upgrade while keeping the same mainboard, we faced "spurious interrupt" problems again.

It turned out that the new CPU also featured a
new GPU with a different PCI id.

-> Add this PCI id to the quirk table. Probably all other Intel GPU PCI ids are affected, too, but I don't want to add them without a test system.

Daniel, Jani, et al, do we need a better solution to this? Is there a more general way to solve this than by tripping over affected machines one-by-one? Could this be done in the driver rather than in a quirk?

Quoted 25 lines
---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)
drivers/pci/quirks.c +1 -0
index e729206..0feb4a3 100644
@@ -2954,6 +2954,7 @@ static void disable_igfx_irq(struct pci_dev *dev)
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 
 /*
  * PCI devices which are on Intel chips can skip the 10ms delay
Signature · 6 lines
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
maintainer
#4 lore raw
Quoted 9 lines · Bjorn Helgaas

[+cc Daniel, Jani, intel-gfx, dri-devel, -cc stable]

Quoted 6 lines · Thomas Jarosch

After a CPU upgrade while keeping the same mainboard, we faced "spurious interrupt" problems again.

It turned out that the new CPU also featured a
new GPU with a different PCI id.

Quoted 7 lines
Quoted 3 lines

-> Add this PCI id to the quirk table. Probably all other Intel GPU PCI ids are affected, too, but I don't want to add them without a test system.

Daniel, Jani, et al, do we need a better solution to this? Is there a more general way to solve this than by tripping over affected machines one-by-one? Could this be done in the driver rather than in a quirk?

I guess it can't be done in the driver because the problem happens even if the driver isn't loaded, per f67fd55fa96f ("PCI: Add quirk for still enabled interrupts on Intel Sandy Bridge GPUs").

Quoted 25 lines
Quoted 25 lines
---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)
drivers/pci/quirks.c +1 -0
index e729206..0feb4a3 100644
@@ -2954,6 +2954,7 @@ static void disable_igfx_irq(struct pci_dev *dev)
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 
 /*
  * PCI devices which are on Intel chips can skip the 10ms delay
Signature · 6 lines
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#5 lore raw
Quoted 14 lines · Bjorn Helgaas
Quoted 13 lines · Bjorn Helgaas

[+cc Daniel, Jani, intel-gfx, dri-devel, -cc stable]

Quoted 9 lines · Thomas Jarosch

After a CPU upgrade while keeping the same mainboard, we faced "spurious interrupt" problems again.

It turned out that the new CPU also featured a
new GPU with a different PCI id.

-> Add this PCI id to the quirk table. Probably all other Intel GPU PCI ids are affected, too, but I don't want to add them without a test system.

Quoted 7 lines
Quoted 3 lines

Daniel, Jani, et al, do we need a better solution to this? Is there a more general way to solve this than by tripping over affected machines one-by-one? Could this be done in the driver rather than in a quirk?

I guess it can't be done in the driver because the problem happens even if the driver isn't loaded, per f67fd55fa96f ("PCI: Add quirk for still enabled interrupts on Intel Sandy Bridge GPUs").

Hm, this is new to me. The only thing wrt spurious interrupts I was aware of is on g4x platforms which also fire legacy interrupts (but only for some chip functions) when we use msi. See

commit 4e6b788c3f2388c519ab6ed7fe59f372c85d26e9

Author: Daniel Vetter <[email protected]>
Date:   Fri Feb 7 16:33:20 2014 +0100

drm/i915: Disable dp aux irq on g4x

we simply opted to not enable those interrupts on g4x to keep things quiet. For other platforms I'm not aware of any such issues.

I guess you could just match on all of them, but the master irq control bit moves around a _lot_. We already have a differen early platform quirk and for that exposed pci ids as macros in include/drm/i915_pciids.h -Daniel

Quoted 26 lines
Quoted 26 lines
Quoted 26 lines
---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)
drivers/pci/quirks.c +1 -0
index e729206..0feb4a3 100644
@@ -2954,6 +2954,7 @@ static void disable_igfx_irq(struct pci_dev *dev)
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 
 /*
  * PCI devices which are on Intel chips can skip the 10ms delay
Signature · 6 lines
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
maintainer Applied
#6 lore raw
In reply to Thomas Jarosch
Quoted 6 lines · Thomas Jarosch

After a CPU upgrade while keeping the same mainboard, we faced "spurious interrupt" problems again.

It turned out that the new CPU also featured a
new GPU with a different PCI id.

Quoted 6 lines

-> Add this PCI id to the quirk table. Probably all other Intel GPU PCI ids are affected, too, but I don't want to add them without a test system.

I applied this to pci/misc for v3.16, with a stable tag for v3.4+, thanks!

Quoted 23 lines
---
 drivers/pci/quirks.c | 1 +
 1 file changed, 1 insertion(+)
drivers/pci/quirks.c +1 -0
index e729206..0feb4a3 100644
@@ -2954,6 +2954,7 @@ static void disable_igfx_irq(struct pci_dev *dev)
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 
 /*
  * PCI devices which are on Intel chips can skip the 10ms delay
Signature · 6 lines
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html