Message ID | 1442005937-21938-1-git-send-email-linux@rainbow-software.org (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Hi Ondrej, On Fri, Sep 11, 2015 at 11:12:17PM +0200, Ondrej Zary wrote: > MSI is broken on SiS 761 chipset at least on PC Chips A31G board. > No interrupts are delivered once MSI is enabled for a device. This causes > hang on X11 start with a nVidia card installed (with nouveau driver). > > Disable MSI completely for this chipset. > > Signed-off-by: Ondrej Zary <linux@rainbow-software.org> This is a pretty old chipset, isn't it? Google finds a reference to SiS 761GX from 2005. I wonder why we're only finding this problem now. Is there a problem report? I wonder if the problem is really elsewhere, and turning off MSI just avoids the real problem. Bjorn > --- > drivers/pci/quirks.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index e9fd0e9..6caffc3 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -2204,6 +2204,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3336, quirk_disab > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disable_all_msi); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi); > > /* Disable MSI on chipsets that are known to not support it */ > static void quirk_disable_msi(struct pci_dev *dev) > -- > Ondrej Zary > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 24 September 2015 20:21:16 Bjorn Helgaas wrote: > Hi Ondrej, > > On Fri, Sep 11, 2015 at 11:12:17PM +0200, Ondrej Zary wrote: > > MSI is broken on SiS 761 chipset at least on PC Chips A31G board. > > No interrupts are delivered once MSI is enabled for a device. This causes > > hang on X11 start with a nVidia card installed (with nouveau driver). > > > > Disable MSI completely for this chipset. > > > > Signed-off-by: Ondrej Zary <linux@rainbow-software.org> > > This is a pretty old chipset, isn't it? Google finds a reference to > SiS 761GX from 2005. I wonder why we're only finding this problem > now. Is there a problem report? I wonder if the problem is really > elsewhere, and turning off MSI just avoids the real problem. Yes, it's an old chipset and board (Socket 754) and not very common. Nouveau was not usable back then, MSI support was added to Nouveau in 2010 and enabled by default only in 2013. Maybe I'm the only one who tested MSI on this board/chipset... The facts are: - zero interrupts in /proc/interrupts with MSI enabled and X11 hangs - everything works fine with MSI disabled - tested with two different nVidia cards (don't have any other PCIe card to test) I guess that either the MSI support in the chipset is broken or the BIOS does not set up some secret chipset register(s) correctly.
On Fri, Sep 11, 2015 at 11:12:17PM +0200, Ondrej Zary wrote: > MSI is broken on SiS 761 chipset at least on PC Chips A31G board. > No interrupts are delivered once MSI is enabled for a device. This causes > hang on X11 start with a nVidia card installed (with nouveau driver). > > Disable MSI completely for this chipset. > > Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Applied to pci/misc for v4.4, thanks! > --- > drivers/pci/quirks.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index e9fd0e9..6caffc3 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -2204,6 +2204,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3336, quirk_disab > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi); > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disable_all_msi); > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi); > > /* Disable MSI on chipsets that are known to not support it */ > static void quirk_disable_msi(struct pci_dev *dev) > -- > Ondrej Zary > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index e9fd0e9..6caffc3 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -2204,6 +2204,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3336, quirk_disab DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disable_all_msi); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, 0x0761, quirk_disable_all_msi); /* Disable MSI on chipsets that are known to not support it */ static void quirk_disable_msi(struct pci_dev *dev)
MSI is broken on SiS 761 chipset at least on PC Chips A31G board. No interrupts are delivered once MSI is enabled for a device. This causes hang on X11 start with a nVidia card installed (with nouveau driver). Disable MSI completely for this chipset. Signed-off-by: Ondrej Zary <linux@rainbow-software.org> --- drivers/pci/quirks.c | 1 + 1 file changed, 1 insertion(+)