From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756846Ab0DAXSC (ORCPT ); Thu, 1 Apr 2010 19:18:02 -0400 Received: from ogre.sisk.pl ([217.79.144.158]:50670 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751498Ab0DAXR7 (ORCPT ); Thu, 1 Apr 2010 19:17:59 -0400 From: "Rafael J. Wysocki" To: Alex Deucher Subject: Re: [Regression, post-rc2] Commit a5ee4eb7541 breaks OpenGL on RS780 (was: Re: Linux 2.6.34-rc3) Date: Fri, 2 Apr 2010 01:20:50 +0200 User-Agent: KMail/1.12.4 (Linux/2.6.34-rc3-rjw; KDE/4.3.5; x86_64; ; ) Cc: Clemens Ladisch , Linus Torvalds , Linux PCI , Greg KH , Linux Kernel Mailing List , Jesse Barnes , dri-devel@lists.sourceforge.net, stable@kernel.org, Dave Airlie References: <201004012346.45098.rjw@sisk.pl> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201004020120.50398.rjw@sisk.pl> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday 02 April 2010, Alex Deucher wrote: > On Thu, Apr 1, 2010 at 5:46 PM, Rafael J. Wysocki wrote: > > On Thursday 01 April 2010, Alex Deucher wrote: > >> On Thu, Apr 1, 2010 at 5:08 PM, Rafael J. Wysocki wrote: > >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki wrote: > >> >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki wrote: > >> >> >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch wrote: > >> >> >> >> > Alex Deucher wrote: > >> >> >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki wrote: > >> >> >> >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: ... > > So do you want me to resubmit? > > > > Please. Appended, with sign-offs and changelog. Thanks, Rafael --- Subject: PCI quirk: RS780/RS880: disable MSI completely The missing initialization of the nb_cntl.strap_msi_enable does not seem to be the only problem that prevents MSI, so that quirk is not sufficient to enable MSI on all machines. To be safe, disable MSI unconditionally for the internal graphics and HDMI audio on these chipsets. [rjw: Added the PCI_VENDOR_ID_AI quirk.] Signed-off-by: Clemens Ladisch Signed-off-by: Rafael J. Wysocki --- drivers/pci/quirks.c | 36 +++--------------------------------- 1 file changed, 3 insertions(+), 33 deletions(-) Index: linux-2.6/drivers/pci/quirks.c =================================================================== --- linux-2.6.orig/drivers/pci/quirks.c +++ linux-2.6/drivers/pci/quirks.c @@ -2123,6 +2123,9 @@ static void __devinit quirk_disable_msi( } } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, 0x9602, quirk_disable_msi); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASUSTEK, 0x9602, quirk_disable_msi); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AI, 0x9602, quirk_disable_msi); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, 0xa238, quirk_disable_msi); /* Go through the list of Hypertransport capabilities and @@ -2495,39 +2498,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375, quirk_msi_intx_disable_bug); -/* - * MSI does not work with the AMD RS780/RS880 internal graphics and HDMI audio - * devices unless the BIOS has initialized the nb_cntl.strap_msi_enable bit. - */ -static void __init rs780_int_gfx_disable_msi(struct pci_dev *int_gfx_bridge) -{ - u32 nb_cntl; - - if (!int_gfx_bridge->subordinate) - return; - - pci_bus_write_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0), - 0x60, 0); - pci_bus_read_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0), - 0x64, &nb_cntl); - - if (!(nb_cntl & BIT(10))) { - dev_warn(&int_gfx_bridge->dev, - FW_WARN "RS780: MSI for internal graphics disabled\n"); - int_gfx_bridge->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI; - } -} - -#define PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX 0x9602 - -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, - PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX, - rs780_int_gfx_disable_msi); -/* wrong vendor ID on M4A785TD motherboard: */ -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASUSTEK, - PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX, - rs780_int_gfx_disable_msi); - #endif /* CONFIG_PCI_MSI */ #ifdef CONFIG_PCI_IOV