From: Rafael J. W. <rj...@si...> - 2010-03-30 21:14:05
|
On Tuesday 30 March 2010, Linus Torvalds wrote: ... > Other than that? Random fixes and updates all over. Mostly drivers and > filesystems, and mostly fairly small things. If you had PCI resource > conflict problems with the early -rc's due to the _CRS window thing, for > example, that should hopefully be fixed. See the appended shortlog for > other details. ... > Clemens Ladisch (4): > firewire: core: fw_iso_resource_manage: fix error handling > firewire: ohci: add cycle timer quirk for the TI TSB12LV22 > ALSA: cmipci: work around invalid PCM pointer > PCI quirk: RS780/RS880: work around missing MSI initialization This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box which happens to have a RS780. The symptom is that every operation involving the GPU is _very_ slow, so the window manager eventually disables compositing. Reverting this commit makes things work flawlessly again. So, please revert. BTW, I don't think it's a -stable material. Thanks, Rafael |
From: Rafael J. W. <rj...@si...> - 2010-04-01 02:04:38
|
On Tuesday 30 March 2010, Rafael J. Wysocki wrote: > On Tuesday 30 March 2010, Linus Torvalds wrote: > ... > > Other than that? Random fixes and updates all over. Mostly drivers and > > filesystems, and mostly fairly small things. If you had PCI resource > > conflict problems with the early -rc's due to the _CRS window thing, for > > example, that should hopefully be fixed. See the appended shortlog for > > other details. > > ... > > > Clemens Ladisch (4): > > firewire: core: fw_iso_resource_manage: fix error handling > > firewire: ohci: add cycle timer quirk for the TI TSB12LV22 > > ALSA: cmipci: work around invalid PCM pointer > > PCI quirk: RS780/RS880: work around missing MSI initialization > > This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box > which happens to have a RS780. > > The symptom is that every operation involving the GPU is _very_ slow, so the > window manager eventually disables compositing. Reverting this commit makes > things work flawlessly again. > > So, please revert. > > BTW, I don't think it's a -stable material. OK, I've verified that partial revert (below) is sufficient. Rafael --- From: Rafael J. Wysocki <rj...@si...> Subject: DRM / radeon: Really do not try to enable MSI on RS780 and RS880 Commit a5ee4eb75413c145334c30e43f1af9875dad6fd7 (PCI quirk: RS780/RS880: work around missing MSI initialization) removed a quirk to disable MSI on RS780 and RS880, which still is necessary on my Acer Ferrari One, because pci_enable_msi() attempts to enable the MSI and apparently succeeds despite the PCI quirk added by that commit. Add the removed radeon quirk again. Signed-off-by: Rafael J. Wysocki <rj...@si...> --- drivers/gpu/drm/radeon/radeon_irq_kms.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) Index: linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -116,7 +116,13 @@ int radeon_irq_kms_init(struct radeon_de } /* enable msi */ rdev->msi_enabled = 0; - if (rdev->family >= CHIP_RV380) { + /* MSIs don't seem to work on my rs780; + * not sure about rs880 or other rs780s. + * Needs more investigation. + */ + if ((rdev->family >= CHIP_RV380) && + (rdev->family != CHIP_RS780) && + (rdev->family != CHIP_RS880)) { int ret = pci_enable_msi(rdev->pdev); if (!ret) { rdev->msi_enabled = 1; |
From: Alex D. <ale...@gm...> - 2010-04-01 02:19:40
Attachments:
0001-drm-radeon-kms-disable-MSI-on-IGP-chips.patch
|
On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: > On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >> On Tuesday 30 March 2010, Linus Torvalds wrote: >> ... >> > Other than that? Random fixes and updates all over. Mostly drivers and >> > filesystems, and mostly fairly small things. If you had PCI resource >> > conflict problems with the early -rc's due to the _CRS window thing, for >> > example, that should hopefully be fixed. See the appended shortlog for >> > other details. >> >> ... >> >> > Clemens Ladisch (4): >> > firewire: core: fw_iso_resource_manage: fix error handling >> > firewire: ohci: add cycle timer quirk for the TI TSB12LV22 >> > ALSA: cmipci: work around invalid PCM pointer >> > PCI quirk: RS780/RS880: work around missing MSI initialization >> >> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >> which happens to have a RS780. >> >> The symptom is that every operation involving the GPU is _very_ slow, so the >> window manager eventually disables compositing. Reverting this commit makes >> things work flawlessly again. >> >> So, please revert. >> >> BTW, I don't think it's a -stable material. > > OK, I've verified that partial revert (below) is sufficient. > > Rafael > > --- > From: Rafael J. Wysocki <rj...@si...> > Subject: DRM / radeon: Really do not try to enable MSI on RS780 and RS880 > > Commit a5ee4eb75413c145334c30e43f1af9875dad6fd7 > (PCI quirk: RS780/RS880: work around missing MSI initialization) > removed a quirk to disable MSI on RS780 and RS880, which still is > necessary on my Acer Ferrari One, because pci_enable_msi() attempts > to enable the MSI and apparently succeeds despite the PCI quirk > added by that commit. Add the removed radeon quirk again. > > Signed-off-by: Rafael J. Wysocki <rj...@si...> > --- > drivers/gpu/drm/radeon/radeon_irq_kms.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > Index: linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c > =================================================================== > --- linux-2.6.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c > +++ linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c > @@ -116,7 +116,13 @@ int radeon_irq_kms_init(struct radeon_de > } > /* enable msi */ > rdev->msi_enabled = 0; > - if (rdev->family >= CHIP_RV380) { > + /* MSIs don't seem to work on my rs780; > + * not sure about rs880 or other rs780s. > + * Needs more investigation. > + */ > + if ((rdev->family >= CHIP_RV380) && > + (rdev->family != CHIP_RS780) && > + (rdev->family != CHIP_RS880)) { > int ret = pci_enable_msi(rdev->pdev); > if (!ret) { > rdev->msi_enabled = 1; I also have the attached patch queued in via Dave's tree to disable MSI on all IGP chips for the time being. Alex |
From: Clemens L. <cl...@la...> - 2010-04-01 06:36:34
|
Alex Deucher wrote: > On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: >> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >>> > PCI quirk: RS780/RS880: work around missing MSI initialization >>> >>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >>> which happens to have a RS780. So it's better to disable MSI unconditionally. Rafael, can you check if MSI works for the HDMI audio device? (I'd guess it doesn't.) > I also have the attached patch queued in via Dave's tree to disable > MSI on all IGP chips for the time being. This disables MSI only for the graphics device. I'd prefer to have the quirk on its bridge so that MSI gets disabled for the HDMI audio device too, to avoid having to duplicate this quirk in the snd-hda-intel driver. ========== 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, unconditionally disable MSI for the internal graphics and HDMI audio on these chipsets. Signed-off-by: Clemens Ladisch <cl...@la...> --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -2123,6 +2123,8 @@ static void __devinit quirk_disable_msi(struct pci_dev *dev) } } 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_VIA, 0xa238, quirk_disable_msi); /* Go through the list of Hypertransport capabilities and @@ -2495,39 +2497,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4374, 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 |
From: Alex D. <ale...@gm...> - 2010-04-01 15:01:52
|
On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: > Alex Deucher wrote: >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization >>>> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >>>> which happens to have a RS780. > > So it's better to disable MSI unconditionally. > > Rafael, can you check if MSI works for the HDMI audio device? > (I'd guess it doesn't.) > >> I also have the attached patch queued in via Dave's tree to disable >> MSI on all IGP chips for the time being. > > This disables MSI only for the graphics device. I'd prefer to have > the quirk on its bridge so that MSI gets disabled for the HDMI audio > device too, to avoid having to duplicate this quirk in the snd-hda-intel > driver. > > ========== > > 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, unconditionally > disable MSI for the internal graphics and HDMI audio on these chipsets. > > Signed-off-by: Clemens Ladisch <cl...@la...> Works fine here. Tested-by: Alex Deucher <ale...@gm...> > > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -2123,6 +2123,8 @@ static void __devinit quirk_disable_msi(struct pci_dev *dev) > } > } > 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_VIA, 0xa238, quirk_disable_msi); > > /* Go through the list of Hypertransport capabilities and > @@ -2495,39 +2497,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4374, > 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 > |
From: Linus T. <tor...@li...> - 2010-04-01 16:34:44
|
On Thu, 1 Apr 2010, Rafael J. Wysocki wrote: > > OK, I've verified that partial revert (below) is sufficient. Hmm. Through the DRM merge I just did, this area actually conflicted, and the resolved version is now if ((rdev->family >= CHIP_RV380) && (!(rdev->flags & RADEON_IS_IGP))) { which presumably also fixes your issue? [ Side note: somebody in the DRM tree seems to be way too used to LISP, and thinks that adding parenthesis always improves the code ;-] However, I do suspect that we should probably revert the quirk regardless as being useless (ie it probably was related to those IGP chips that apparently don't do MSI anyway). So the patch that reverts the quirk by Clemens (to replace it with disabling MSI entirely when the AMD NB doesn't accept them) seems to be a good idea regardless, since it's apparently not just about gfx. Jesse? Linus |
From: Rafael J. W. <rj...@si...> - 2010-04-01 19:43:37
|
On Thursday 01 April 2010, Linus Torvalds wrote: > > On Thu, 1 Apr 2010, Rafael J. Wysocki wrote: > > > > OK, I've verified that partial revert (below) is sufficient. > > Hmm. Through the DRM merge I just did, this area actually conflicted, and > the resolved version is now > > if ((rdev->family >= CHIP_RV380) && > (!(rdev->flags & RADEON_IS_IGP))) { > > which presumably also fixes your issue? Yes, it does. Rafael |
From: Alex D. <ale...@gm...> - 2010-04-01 17:15:37
|
On Thu, Apr 1, 2010 at 12:29 PM, Linus Torvalds <tor...@li...> wrote: > > > On Thu, 1 Apr 2010, Rafael J. Wysocki wrote: >> >> OK, I've verified that partial revert (below) is sufficient. > > Hmm. Through the DRM merge I just did, this area actually conflicted, and > the resolved version is now > > if ((rdev->family >= CHIP_RV380) && > (!(rdev->flags & RADEON_IS_IGP))) { > > which presumably also fixes your issue? > > [ Side note: somebody in the DRM tree seems to be way too used to LISP, > and thinks that adding parenthesis always improves the code ;-] > heh, that's me. habit I guess, just to be sure. > However, I do suspect that we should probably revert the quirk regardless > as being useless (ie it probably was related to those IGP chips that > apparently don't do MSI anyway). > > So the patch that reverts the quirk by Clemens (to replace it with > disabling MSI entirely when the AMD NB doesn't accept them) seems to be a > good idea regardless, since it's apparently not just about gfx. Jesse? Clemems' "PCI quirk: RS780/RS880: disable MSI completely" patch is the right approach I think. Note that it's only devices hung off the int gfx pci to pci bridge that have broken MSI (gfx and audio). MSI works fine on the PCIE slots. I have a similar patch for rs400 chips on bug 15626: https://bugzilla.kernel.org/show_bug.cgi?id=15626 Alex > > Linus > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > -- > _______________________________________________ > Dri-devel mailing list > Dri...@li... > https://lists.sourceforge.net/lists/listinfo/dri-devel > |
From: Linus T. <tor...@li...> - 2010-04-01 17:28:52
|
On Thu, 1 Apr 2010, Alex Deucher wrote: > > Clemems' "PCI quirk: RS780/RS880: disable MSI completely" patch is the > right approach I think. Note that it's only devices hung off the int > gfx pci to pci bridge that have broken MSI (gfx and audio). MSI works > fine on the PCIE slots. I have a similar patch for rs400 chips on bug > 15626: > https://bugzilla.kernel.org/show_bug.cgi?id=15626 Hmm. Does 'pci_msi_enable' only cover regular PCI devices? Or will that pci_no_msi() quirk disable MSI for PCIE too? I think it will trigger for PCIE drivers too. Put another way: it sounds like the quirk now disables MSI for all devices. Maybe there would some more targeted mode? Linus |
From: Clemens L. <cl...@la...> - 2010-04-01 17:50:14
|
Linus Torvalds wrote: > On Thu, 1 Apr 2010, Alex Deucher wrote: > > Clemems' "PCI quirk: RS780/RS880: disable MSI completely" patch is the > > right approach I think. Note that it's only devices hung off the int > > gfx pci to pci bridge that have broken MSI (gfx and audio). MSI works > > fine on the PCIE slots. I have a similar patch for rs400 chips on bug > > 15626: > > https://bugzilla.kernel.org/show_bug.cgi?id=15626 > > Hmm. Does 'pci_msi_enable' only cover regular PCI devices? Or will that > pci_no_msi() quirk disable MSI for PCIE too? A quirk that used pci_no_msi() would disable all MSI for all devices. However, these patches (and that in bug 15626) use PCI_BUS_FLAGS_NO_MSI so that only the internal GPU devices are affected. That "completely" in my patch title should better read "unconditionally". Regards, Clemens |
From: Alex D. <ale...@gm...> - 2010-04-01 17:53:18
|
On Thu, Apr 1, 2010 at 1:24 PM, Linus Torvalds <tor...@li...> wrote: > > > On Thu, 1 Apr 2010, Alex Deucher wrote: >> >> Clemems' "PCI quirk: RS780/RS880: disable MSI completely" patch is the >> right approach I think. Note that it's only devices hung off the int >> gfx pci to pci bridge that have broken MSI (gfx and audio). MSI works >> fine on the PCIE slots. I have a similar patch for rs400 chips on bug >> 15626: >> https://bugzilla.kernel.org/show_bug.cgi?id=15626 > > Hmm. Does 'pci_msi_enable' only cover regular PCI devices? Or will that > pci_no_msi() quirk disable MSI for PCIE too? I think it will trigger for > PCIE drivers too. > > Put another way: it sounds like the quirk now disables MSI for all > devices. Maybe there would some more targeted mode? > What I meant to say was MSI works fine on bridges other than the bridge the internal gfx lives on. quirk_disable_msi() just disables MSI on the devices on that particular bridge as far as I understand it, but I'm by no means an expert on the PCI code. E.g., on my RS780 board, MSIs are only problematic on the integrated gfx chip. MSIs work fine on PCI/PCIE add-on cards and the integrated Ethernet. Alex > Linus > |
From: Linus T. <tor...@li...> - 2010-04-01 20:21:59
|
On Thu, 1 Apr 2010, Alex Deucher wrote: > > What I meant to say was MSI works fine on bridges other than the > bridge the internal gfx lives on. quirk_disable_msi() just disables > MSI on the devices on that particular bridge as far as I understand > it, but I'm by no means an expert on the PCI code. Yes, it disabled MSI only on devices under that bridge. But if it's the northbridge, that would be everything, no? But I don't know what devices those PCI_VENDOR_ID_AMD, 0x9602, PCI_VENDOR_ID_ASUSTEK, 0x9602, things are. If they are just a PCIE->PCI bridge rather than the root bridge, then everything looks fine to me. Linus |
From: Alex D. <ale...@gm...> - 2010-04-01 20:24:07
|
On Thu, Apr 1, 2010 at 4:17 PM, Linus Torvalds <tor...@li...> wrote: > > > On Thu, 1 Apr 2010, Alex Deucher wrote: >> >> What I meant to say was MSI works fine on bridges other than the >> bridge the internal gfx lives on. quirk_disable_msi() just disables >> MSI on the devices on that particular bridge as far as I understand >> it, but I'm by no means an expert on the PCI code. > > Yes, it disabled MSI only on devices under that bridge. But if it's the > northbridge, that would be everything, no? > > But I don't know what devices those > > PCI_VENDOR_ID_AMD, 0x9602, > PCI_VENDOR_ID_ASUSTEK, 0x9602, > > things are. If they are just a PCIE->PCI bridge rather than the root > bridge, then everything looks fine to me. > Yup, those are just the pci to pci bridges used for the internal gfx. Really there's only one, 0x9602, but some asus oem boards have the vendor id wrong. > Linus > |
From: Rafael J. W. <rj...@si...> - 2010-04-01 20:25:05
|
On Thursday 01 April 2010, Alex Deucher wrote: > On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: > > Alex Deucher wrote: > >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: > >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: > >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization > >>>> > >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box > >>>> which happens to have a RS780. > > > > So it's better to disable MSI unconditionally. > > > > Rafael, can you check if MSI works for the HDMI audio device? > > (I'd guess it doesn't.) > > > >> I also have the attached patch queued in via Dave's tree to disable > >> MSI on all IGP chips for the time being. > > > > This disables MSI only for the graphics device. I'd prefer to have > > the quirk on its bridge so that MSI gets disabled for the HDMI audio > > device too, to avoid having to duplicate this quirk in the snd-hda-intel > > driver. > > > > ========== > > > > 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, unconditionally > > disable MSI for the internal graphics and HDMI audio on these chipsets. > > > > Signed-off-by: Clemens Ladisch <cl...@la...> > > Works fine here. > > Tested-by: Alex Deucher <ale...@gm...> Unfortunately it doesn't work for me without the if ((rdev->family >= CHIP_RV380) && (!(rdev->flags & RADEON_IS_IGP))) radeon quirk. Thanks, Rafael |
From: Alex D. <ale...@gm...> - 2010-04-01 20:39:59
|
On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: > On Thursday 01 April 2010, Alex Deucher wrote: >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: >> > Alex Deucher wrote: >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization >> >>>> >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >> >>>> which happens to have a RS780. >> > >> > So it's better to disable MSI unconditionally. >> > >> > Rafael, can you check if MSI works for the HDMI audio device? >> > (I'd guess it doesn't.) >> > >> >> I also have the attached patch queued in via Dave's tree to disable >> >> MSI on all IGP chips for the time being. >> > >> > This disables MSI only for the graphics device. I'd prefer to have >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel >> > driver. >> > >> > ========== >> > >> > 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, unconditionally >> > disable MSI for the internal graphics and HDMI audio on these chipsets. >> > >> > Signed-off-by: Clemens Ladisch <cl...@la...> >> >> Works fine here. >> >> Tested-by: Alex Deucher <ale...@gm...> > > Unfortunately it doesn't work for me without the > > if ((rdev->family >= CHIP_RV380) && > (!(rdev->flags & RADEON_IS_IGP))) > > radeon quirk. what are your pci ids? Alex > > Thanks, > Rafael > |
From: Rafael J. W. <rj...@si...> - 2010-04-01 20:45:48
|
On Thursday 01 April 2010, Alex Deucher wrote: > On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: > > On Thursday 01 April 2010, Alex Deucher wrote: > >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: > >> > Alex Deucher wrote: > >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: > >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization > >> >>>> > >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box > >> >>>> which happens to have a RS780. > >> > > >> > So it's better to disable MSI unconditionally. > >> > > >> > Rafael, can you check if MSI works for the HDMI audio device? > >> > (I'd guess it doesn't.) > >> > > >> >> I also have the attached patch queued in via Dave's tree to disable > >> >> MSI on all IGP chips for the time being. > >> > > >> > This disables MSI only for the graphics device. I'd prefer to have > >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio > >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel > >> > driver. > >> > > >> > ========== > >> > > >> > 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, unconditionally > >> > disable MSI for the internal graphics and HDMI audio on these chipsets. > >> > > >> > Signed-off-by: Clemens Ladisch <cl...@la...> > >> > >> Works fine here. > >> > >> Tested-by: Alex Deucher <ale...@gm...> > > > > Unfortunately it doesn't work for me without the > > > > if ((rdev->family >= CHIP_RV380) && > > (!(rdev->flags & RADEON_IS_IGP))) > > > > radeon quirk. > > what are your pci ids? 1022:960b I guess 1022 is AMD. OK, I'll try to add that. Rafael |
From: Alex D. <ale...@gm...> - 2010-04-01 21:00:11
|
On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki <rj...@si...> wrote: > On Thursday 01 April 2010, Alex Deucher wrote: >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: >> > On Thursday 01 April 2010, Alex Deucher wrote: >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: >> >> > Alex Deucher wrote: >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >> >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization >> >> >>>> >> >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >> >> >>>> which happens to have a RS780. >> >> > >> >> > So it's better to disable MSI unconditionally. >> >> > >> >> > Rafael, can you check if MSI works for the HDMI audio device? >> >> > (I'd guess it doesn't.) >> >> > >> >> >> I also have the attached patch queued in via Dave's tree to disable >> >> >> MSI on all IGP chips for the time being. >> >> > >> >> > This disables MSI only for the graphics device. I'd prefer to have >> >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio >> >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel >> >> > driver. >> >> > >> >> > ========== >> >> > >> >> > 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, unconditionally >> >> > disable MSI for the internal graphics and HDMI audio on these chipsets. >> >> > >> >> > Signed-off-by: Clemens Ladisch <cl...@la...> >> >> >> >> Works fine here. >> >> >> >> Tested-by: Alex Deucher <ale...@gm...> >> > >> > Unfortunately it doesn't work for me without the >> > >> > if ((rdev->family >= CHIP_RV380) && >> > (!(rdev->flags & RADEON_IS_IGP))) >> > >> > radeon quirk. >> >> what are your pci ids? > > 1022:960b > > I guess 1022 is AMD. > > OK, I'll try to add that. 0x960b won't affect the internal gfx. That bridge is for the pcie x16 gfx slot. 0x9600 Host bridge 0x9602 Internal GFX PCI-PCI bridge ID 0x9603 External GFX - port 0 0x960B External GFX - port 1 0x9604 PCI-PCI bridge - Port 0 0x9605 PCI-PCI bridge - Port 1 0x9606 PCI-PCI bridge - Port 2 0x9607 PCI-PCI bridge - Port 3 0x9608 PCI-PCI bridge - Port 4 0x9609 PCI-PCI bridge - Port 5 0x960A PCI-PCI bridge (SB) 0x960F HD Audio controller 0x791A HDMI Audio codec Alex > > Rafael > |
From: Alex D. <ale...@gm...> - 2010-04-01 21:01:18
|
On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki <rj...@si...> wrote: > On Thursday 01 April 2010, Alex Deucher wrote: >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: >> > On Thursday 01 April 2010, Alex Deucher wrote: >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: >> >> > Alex Deucher wrote: >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >> >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization >> >> >>>> >> >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >> >> >>>> which happens to have a RS780. >> >> > >> >> > So it's better to disable MSI unconditionally. >> >> > >> >> > Rafael, can you check if MSI works for the HDMI audio device? >> >> > (I'd guess it doesn't.) >> >> > >> >> >> I also have the attached patch queued in via Dave's tree to disable >> >> >> MSI on all IGP chips for the time being. >> >> > >> >> > This disables MSI only for the graphics device. I'd prefer to have >> >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio >> >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel >> >> > driver. >> >> > >> >> > ========== >> >> > >> >> > 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, unconditionally >> >> > disable MSI for the internal graphics and HDMI audio on these chipsets. >> >> > >> >> > Signed-off-by: Clemens Ladisch <cl...@la...> >> >> >> >> Works fine here. >> >> >> >> Tested-by: Alex Deucher <ale...@gm...> >> > >> > Unfortunately it doesn't work for me without the >> > >> > if ((rdev->family >= CHIP_RV380) && >> > (!(rdev->flags & RADEON_IS_IGP))) >> > >> > radeon quirk. >> >> what are your pci ids? > > 1022:960b > > I guess 1022 is AMD. > > OK, I'll try to add that. It's possible your oem has the wrong vendor id for the 0x9602 bridge. Alex > > Rafael > |
From: Rafael J. W. <rj...@si...> - 2010-04-01 21:05:14
|
On Thursday 01 April 2010, Alex Deucher wrote: > On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki <rj...@si...> wrote: > > On Thursday 01 April 2010, Alex Deucher wrote: > >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: > >> >> > Alex Deucher wrote: > >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: > >> >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization > >> >> >>>> > >> >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box > >> >> >>>> which happens to have a RS780. > >> >> > > >> >> > So it's better to disable MSI unconditionally. > >> >> > > >> >> > Rafael, can you check if MSI works for the HDMI audio device? > >> >> > (I'd guess it doesn't.) > >> >> > > >> >> >> I also have the attached patch queued in via Dave's tree to disable > >> >> >> MSI on all IGP chips for the time being. > >> >> > > >> >> > This disables MSI only for the graphics device. I'd prefer to have > >> >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio > >> >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel > >> >> > driver. > >> >> > > >> >> > ========== > >> >> > > >> >> > 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, unconditionally > >> >> > disable MSI for the internal graphics and HDMI audio on these chipsets. > >> >> > > >> >> > Signed-off-by: Clemens Ladisch <cl...@la...> > >> >> > >> >> Works fine here. > >> >> > >> >> Tested-by: Alex Deucher <ale...@gm...> > >> > > >> > Unfortunately it doesn't work for me without the > >> > > >> > if ((rdev->family >= CHIP_RV380) && > >> > (!(rdev->flags & RADEON_IS_IGP))) > >> > > >> > radeon quirk. > >> > >> what are your pci ids? > > > > 1022:960b > > > > I guess 1022 is AMD. > > > > OK, I'll try to add that. > > It's possible your oem has the wrong vendor id for the 0x9602 bridge. Yes, the patch below works. Thanks, Rafael --- drivers/gpu/drm/radeon/radeon_irq_kms.c | 3 -- drivers/pci/quirks.c | 36 ++------------------------------ 2 files changed, 4 insertions(+), 35 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 Index: linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -117,8 +117,7 @@ int radeon_irq_kms_init(struct radeon_de /* MSIs don't seem to work reliably on all IGP * chips. Disable MSI on them for now. */ - if ((rdev->family >= CHIP_RV380) && - (!(rdev->flags & RADEON_IS_IGP))) { + if (rdev->family >= CHIP_RV380) { int ret = pci_enable_msi(rdev->pdev); if (!ret) { rdev->msi_enabled = 1; |
From: Alex D. <ale...@gm...> - 2010-04-01 21:13:13
|
On Thu, Apr 1, 2010 at 5:08 PM, Rafael J. Wysocki <rj...@si...> wrote: > On Thursday 01 April 2010, Alex Deucher wrote: >> On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki <rj...@si...> wrote: >> > On Thursday 01 April 2010, Alex Deucher wrote: >> >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >> > On Thursday 01 April 2010, Alex Deucher wrote: >> >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: >> >> >> > Alex Deucher wrote: >> >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >> >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >> >> >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization >> >> >> >>>> >> >> >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >> >> >> >>>> which happens to have a RS780. >> >> >> > >> >> >> > So it's better to disable MSI unconditionally. >> >> >> > >> >> >> > Rafael, can you check if MSI works for the HDMI audio device? >> >> >> > (I'd guess it doesn't.) >> >> >> > >> >> >> >> I also have the attached patch queued in via Dave's tree to disable >> >> >> >> MSI on all IGP chips for the time being. >> >> >> > >> >> >> > This disables MSI only for the graphics device. I'd prefer to have >> >> >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio >> >> >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel >> >> >> > driver. >> >> >> > >> >> >> > ========== >> >> >> > >> >> >> > 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, unconditionally >> >> >> > disable MSI for the internal graphics and HDMI audio on these chipsets. >> >> >> > >> >> >> > Signed-off-by: Clemens Ladisch <cl...@la...> >> >> >> >> >> >> Works fine here. >> >> >> >> >> >> Tested-by: Alex Deucher <ale...@gm...> >> >> > >> >> > Unfortunately it doesn't work for me without the >> >> > >> >> > if ((rdev->family >= CHIP_RV380) && >> >> > (!(rdev->flags & RADEON_IS_IGP))) >> >> > >> >> > radeon quirk. >> >> >> >> what are your pci ids? >> > >> > 1022:960b >> > >> > I guess 1022 is AMD. >> > >> > OK, I'll try to add that. >> >> It's possible your oem has the wrong vendor id for the 0x9602 bridge. > > Yes, the patch below works. > > Thanks, > Rafael > > > --- > drivers/gpu/drm/radeon/radeon_irq_kms.c | 3 -- > drivers/pci/quirks.c | 36 ++------------------------------ > 2 files changed, 4 insertions(+), 35 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 > Index: linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c > =================================================================== > --- linux-2.6.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c > +++ linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c > @@ -117,8 +117,7 @@ int radeon_irq_kms_init(struct radeon_de > /* MSIs don't seem to work reliably on all IGP > * chips. Disable MSI on them for now. > */ > - if ((rdev->family >= CHIP_RV380) && > - (!(rdev->flags & RADEON_IS_IGP))) { > + if (rdev->family >= CHIP_RV380) { > int ret = pci_enable_msi(rdev->pdev); > if (!ret) { > rdev->msi_enabled = 1; > Let's skip this second chunk for now as there are other non-RS780 IGP chips that could be problematic, so I'd rather just leave MSIs disabled for now. Alex |
From: Rafael J. W. <rj...@si...> - 2010-04-01 21:43:36
|
On Thursday 01 April 2010, Alex Deucher wrote: > On Thu, Apr 1, 2010 at 5:08 PM, Rafael J. Wysocki <rj...@si...> wrote: > > On Thursday 01 April 2010, Alex Deucher wrote: > >> On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: > >> >> >> > Alex Deucher wrote: > >> >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> >> >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: > >> >> >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization > >> >> >> >>>> > >> >> >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box > >> >> >> >>>> which happens to have a RS780. > >> >> >> > > >> >> >> > So it's better to disable MSI unconditionally. > >> >> >> > > >> >> >> > Rafael, can you check if MSI works for the HDMI audio device? > >> >> >> > (I'd guess it doesn't.) > >> >> >> > > >> >> >> >> I also have the attached patch queued in via Dave's tree to disable > >> >> >> >> MSI on all IGP chips for the time being. > >> >> >> > > >> >> >> > This disables MSI only for the graphics device. I'd prefer to have > >> >> >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio > >> >> >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel > >> >> >> > driver. > >> >> >> > > >> >> >> > ========== > >> >> >> > > >> >> >> > 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, unconditionally > >> >> >> > disable MSI for the internal graphics and HDMI audio on these chipsets. > >> >> >> > > >> >> >> > Signed-off-by: Clemens Ladisch <cl...@la...> > >> >> >> > >> >> >> Works fine here. > >> >> >> > >> >> >> Tested-by: Alex Deucher <ale...@gm...> > >> >> > > >> >> > Unfortunately it doesn't work for me without the > >> >> > > >> >> > if ((rdev->family >= CHIP_RV380) && > >> >> > (!(rdev->flags & RADEON_IS_IGP))) > >> >> > > >> >> > radeon quirk. > >> >> > >> >> what are your pci ids? > >> > > >> > 1022:960b > >> > > >> > I guess 1022 is AMD. > >> > > >> > OK, I'll try to add that. > >> > >> It's possible your oem has the wrong vendor id for the 0x9602 bridge. > > > > Yes, the patch below works. > > > > Thanks, > > Rafael > > > > > > --- > > drivers/gpu/drm/radeon/radeon_irq_kms.c | 3 -- > > drivers/pci/quirks.c | 36 ++------------------------------ > > 2 files changed, 4 insertions(+), 35 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 > > Index: linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c > > =================================================================== > > --- linux-2.6.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c > > +++ linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c > > @@ -117,8 +117,7 @@ int radeon_irq_kms_init(struct radeon_de > > /* MSIs don't seem to work reliably on all IGP > > * chips. Disable MSI on them for now. > > */ > > - if ((rdev->family >= CHIP_RV380) && > > - (!(rdev->flags & RADEON_IS_IGP))) { > > + if (rdev->family >= CHIP_RV380) { > > int ret = pci_enable_msi(rdev->pdev); > > if (!ret) { > > rdev->msi_enabled = 1; > > > > Let's skip this second chunk for now as there are other non-RS780 IGP > chips that could be problematic, so I'd rather just leave MSIs > disabled for now. Works for me. So do you want me to resubmit? Rafael |
From: Alex D. <ale...@gm...> - 2010-04-01 22:07:19
|
On Thu, Apr 1, 2010 at 5:46 PM, Rafael J. Wysocki <rj...@si...> wrote: > On Thursday 01 April 2010, Alex Deucher wrote: >> On Thu, Apr 1, 2010 at 5:08 PM, Rafael J. Wysocki <rj...@si...> wrote: >> > On Thursday 01 April 2010, Alex Deucher wrote: >> >> On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >> > On Thursday 01 April 2010, Alex Deucher wrote: >> >> >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >> >> > On Thursday 01 April 2010, Alex Deucher wrote: >> >> >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: >> >> >> >> > Alex Deucher wrote: >> >> >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> wrote: >> >> >> >> >>> On Tuesday 30 March 2010, Rafael J. Wysocki wrote: >> >> >> >> >>>> > PCI quirk: RS780/RS880: work around missing MSI initialization >> >> >> >> >>>> >> >> >> >> >>>> This one (commit a5ee4eb7541) broke OpenGL acceleration on my new test box >> >> >> >> >>>> which happens to have a RS780. >> >> >> >> > >> >> >> >> > So it's better to disable MSI unconditionally. >> >> >> >> > >> >> >> >> > Rafael, can you check if MSI works for the HDMI audio device? >> >> >> >> > (I'd guess it doesn't.) >> >> >> >> > >> >> >> >> >> I also have the attached patch queued in via Dave's tree to disable >> >> >> >> >> MSI on all IGP chips for the time being. >> >> >> >> > >> >> >> >> > This disables MSI only for the graphics device. I'd prefer to have >> >> >> >> > the quirk on its bridge so that MSI gets disabled for the HDMI audio >> >> >> >> > device too, to avoid having to duplicate this quirk in the snd-hda-intel >> >> >> >> > driver. >> >> >> >> > >> >> >> >> > ========== >> >> >> >> > >> >> >> >> > 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, unconditionally >> >> >> >> > disable MSI for the internal graphics and HDMI audio on these chipsets. >> >> >> >> > >> >> >> >> > Signed-off-by: Clemens Ladisch <cl...@la...> >> >> >> >> >> >> >> >> Works fine here. >> >> >> >> >> >> >> >> Tested-by: Alex Deucher <ale...@gm...> >> >> >> > >> >> >> > Unfortunately it doesn't work for me without the >> >> >> > >> >> >> > if ((rdev->family >= CHIP_RV380) && >> >> >> > (!(rdev->flags & RADEON_IS_IGP))) >> >> >> > >> >> >> > radeon quirk. >> >> >> >> >> >> what are your pci ids? >> >> > >> >> > 1022:960b >> >> > >> >> > I guess 1022 is AMD. >> >> > >> >> > OK, I'll try to add that. >> >> >> >> It's possible your oem has the wrong vendor id for the 0x9602 bridge. >> > >> > Yes, the patch below works. >> > >> > Thanks, >> > Rafael >> > >> > >> > --- >> > drivers/gpu/drm/radeon/radeon_irq_kms.c | 3 -- >> > drivers/pci/quirks.c | 36 ++------------------------------ >> > 2 files changed, 4 insertions(+), 35 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 >> > Index: linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c >> > =================================================================== >> > --- linux-2.6.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c >> > +++ linux-2.6/drivers/gpu/drm/radeon/radeon_irq_kms.c >> > @@ -117,8 +117,7 @@ int radeon_irq_kms_init(struct radeon_de >> > /* MSIs don't seem to work reliably on all IGP >> > * chips. Disable MSI on them for now. >> > */ >> > - if ((rdev->family >= CHIP_RV380) && >> > - (!(rdev->flags & RADEON_IS_IGP))) { >> > + if (rdev->family >= CHIP_RV380) { >> > int ret = pci_enable_msi(rdev->pdev); >> > if (!ret) { >> > rdev->msi_enabled = 1; >> > >> >> Let's skip this second chunk for now as there are other non-RS780 IGP >> chips that could be problematic, so I'd rather just leave MSIs >> disabled for now. > > Works for me. > > So do you want me to resubmit? > Please. Thanks, Alex > Rafael > |
From: Jesse B. <jb...@vi...> - 2010-04-01 22:50:27
|
On Thu, 1 Apr 2010 09:29:23 -0700 (PDT) Linus Torvalds <tor...@li...> wrote: > > > On Thu, 1 Apr 2010, Rafael J. Wysocki wrote: > > > > OK, I've verified that partial revert (below) is sufficient. > > Hmm. Through the DRM merge I just did, this area actually conflicted, and > the resolved version is now > > if ((rdev->family >= CHIP_RV380) && > (!(rdev->flags & RADEON_IS_IGP))) { > > which presumably also fixes your issue? > > [ Side note: somebody in the DRM tree seems to be way too used to LISP, > and thinks that adding parenthesis always improves the code ;-] > > However, I do suspect that we should probably revert the quirk regardless > as being useless (ie it probably was related to those IGP chips that > apparently don't do MSI anyway). > > So the patch that reverts the quirk by Clemens (to replace it with > disabling MSI entirely when the AMD NB doesn't accept them) seems to be a > good idea regardless, since it's apparently not just about gfx. Jesse? Yeah, that sounds fine. I can include it in my next pull req or you can just pick it up directly. -- Jesse Barnes, Intel Open Source Technology Center |
From: Rafael J. W. <rj...@si...> - 2010-04-01 23:20:46
|
On Friday 02 April 2010, Jesse Barnes wrote: > On Thu, 1 Apr 2010 09:29:23 -0700 (PDT) > Linus Torvalds <tor...@li...> wrote: > > > > > > > On Thu, 1 Apr 2010, Rafael J. Wysocki wrote: > > > > > > OK, I've verified that partial revert (below) is sufficient. > > > > Hmm. Through the DRM merge I just did, this area actually conflicted, and > > the resolved version is now > > > > if ((rdev->family >= CHIP_RV380) && > > (!(rdev->flags & RADEON_IS_IGP))) { > > > > which presumably also fixes your issue? > > > > [ Side note: somebody in the DRM tree seems to be way too used to LISP, > > and thinks that adding parenthesis always improves the code ;-] > > > > However, I do suspect that we should probably revert the quirk regardless > > as being useless (ie it probably was related to those IGP chips that > > apparently don't do MSI anyway). > > > > So the patch that reverts the quirk by Clemens (to replace it with > > disabling MSI entirely when the AMD NB doesn't accept them) seems to be a > > good idea regardless, since it's apparently not just about gfx. Jesse? > > Yeah, that sounds fine. I can include it in my next pull req or you > can just pick it up directly. Not exactly that one, please, it's missing a quirk for the affected system. I've just sent a corrected version, here: https://patchwork.kernel.org/patch/90275/ Rafael |
From: Rafael J. W. <rj...@si...> - 2010-04-01 23:17:57
|
On Friday 02 April 2010, Alex Deucher wrote: > On Thu, Apr 1, 2010 at 5:46 PM, Rafael J. Wysocki <rj...@si...> wrote: > > On Thursday 01 April 2010, Alex Deucher wrote: > >> On Thu, Apr 1, 2010 at 5:08 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> On Thu, Apr 1, 2010 at 4:48 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> >> On Thu, Apr 1, 2010 at 4:28 PM, Rafael J. Wysocki <rj...@si...> wrote: > >> >> >> > On Thursday 01 April 2010, Alex Deucher wrote: > >> >> >> >> On Thu, Apr 1, 2010 at 2:36 AM, Clemens Ladisch <cl...@la...> wrote: > >> >> >> >> > Alex Deucher wrote: > >> >> >> >> >> On Wed, Mar 31, 2010 at 9:13 PM, Rafael J. Wysocki <rj...@si...> 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 <cl...@la...> Signed-off-by: Rafael J. Wysocki <rj...@si...> --- 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 |