* TI PCIe-PCI bridge quirks @ 2009-09-22 19:01 Gabe Black 2009-09-22 19:11 ` Arjan van de Ven 0 siblings, 1 reply; 8+ messages in thread From: Gabe Black @ 2009-09-22 19:01 UTC (permalink / raw) To: linux-kernel; +Cc: linux-pci, jbarnes Hi, The TI XIO2000A/XIO2200A PCIe-PCI bridge (VID: 104C, DID: 8231) erroneously handles fast back-to-back transfers on its subordinate bus segment. The behavior is seen when there are multiple devices downstream and transfers from both devices result in a fast b2b transfer. This confuses the PCIe-PCI bridge and results in data corruption. One way to work around the buggy bridge would be to disable fast b2b transfers on any device on the subordinate bus-segment by writing the appropriate bits in the device's pci-configspace command register. Are there any suggestions on how this might be handled? Should this be addressed in the kernel? Thanks, Gabe Black ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: TI PCIe-PCI bridge quirks 2009-09-22 19:01 TI PCIe-PCI bridge quirks Gabe Black @ 2009-09-22 19:11 ` Arjan van de Ven 2009-09-22 19:37 ` Gabe Black 0 siblings, 1 reply; 8+ messages in thread From: Arjan van de Ven @ 2009-09-22 19:11 UTC (permalink / raw) To: gabe; +Cc: gabebblack, linux-kernel, linux-pci, jbarnes On Tue, 22 Sep 2009 14:01:06 -0500 Gabe Black <gabebblack@gmail.com> wrote: > Hi, > > The TI XIO2000A/XIO2200A PCIe-PCI bridge (VID: 104C, DID: 8231) > erroneously handles fast back-to-back transfers on its subordinate bus > segment. The behavior is seen when there are multiple devices > downstream and transfers from both devices result in a fast b2b > transfer. This confuses the PCIe-PCI bridge and results in data > corruption. > > One way to work around the buggy bridge would be to disable fast b2b > transfers on any device on the subordinate bus-segment by writing the > appropriate bits in the device's pci-configspace command register. > > Are there any suggestions on how this might be handled? Should this > be addressed in the kernel? sounds like this is worth a PCI quirk in the kernel... -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: TI PCIe-PCI bridge quirks 2009-09-22 19:11 ` Arjan van de Ven @ 2009-09-22 19:37 ` Gabe Black 2009-09-22 20:07 ` Arjan van de Ven 0 siblings, 1 reply; 8+ messages in thread From: Gabe Black @ 2009-09-22 19:37 UTC (permalink / raw) To: Arjan van de Ven; +Cc: linux-kernel, linux-pci, jbarnes On Tue, Sep 22, 2009 at 2:11 PM, Arjan van de Ven <arjan@infradead.org> wrote: > > sounds like this is worth a PCI quirk in the kernel... > Is there documentation on how one would go about writing a "PCI quirk"? Thanks, Gabe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: TI PCIe-PCI bridge quirks 2009-09-22 19:37 ` Gabe Black @ 2009-09-22 20:07 ` Arjan van de Ven 2009-10-06 0:09 ` Jesse Barnes 0 siblings, 1 reply; 8+ messages in thread From: Arjan van de Ven @ 2009-09-22 20:07 UTC (permalink / raw) To: gabe; +Cc: gabebblack, linux-kernel, linux-pci, jbarnes On Tue, 22 Sep 2009 14:37:16 -0500 Gabe Black <gabebblack@gmail.com> wrote: > On Tue, Sep 22, 2009 at 2:11 PM, Arjan van de Ven > <arjan@infradead.org> wrote: > > > > sounds like this is worth a PCI quirk in the kernel... > > > > Is there documentation on how one would go about writing a "PCI > quirk"? > I would look at the existing quirks in the drivers/pci/quirks.c file... plenty of good (or bad, depending on how you look at it) examples... -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: TI PCIe-PCI bridge quirks 2009-09-22 20:07 ` Arjan van de Ven @ 2009-10-06 0:09 ` Jesse Barnes 2009-10-06 11:32 ` Gabe Black 0 siblings, 1 reply; 8+ messages in thread From: Jesse Barnes @ 2009-10-06 0:09 UTC (permalink / raw) To: Arjan van de Ven; +Cc: gabe, gabebblack, linux-kernel, linux-pci On Tue, 22 Sep 2009 22:07:47 +0200 Arjan van de Ven <arjan@infradead.org> wrote: > On Tue, 22 Sep 2009 14:37:16 -0500 > Gabe Black <gabebblack@gmail.com> wrote: > > > On Tue, Sep 22, 2009 at 2:11 PM, Arjan van de Ven > > <arjan@infradead.org> wrote: > > > > > > sounds like this is worth a PCI quirk in the kernel... > > > > > > > Is there documentation on how one would go about writing a "PCI > > quirk"? > > > > I would look at the existing quirks in the drivers/pci/quirks.c > file... plenty of good (or bad, depending on how you look at it) > examples... Gabe, did you figure out how to do this? Do you need any more help? -- Jesse Barnes, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: TI PCIe-PCI bridge quirks 2009-10-06 0:09 ` Jesse Barnes @ 2009-10-06 11:32 ` Gabe Black 2009-10-06 14:19 ` [PATCH] TI XIO200a bridge quirk: erroneously reports support for fast b2b transfers Gabe Black 0 siblings, 1 reply; 8+ messages in thread From: Gabe Black @ 2009-10-06 11:32 UTC (permalink / raw) To: Jesse Barnes; +Cc: Arjan van de Ven, linux-kernel, linux-pci On Mon, Oct 5, 2009 at 7:09 PM, Jesse Barnes <jbarnes@virtuousgeek.org> wrote: > > Gabe, did you figure out how to do this? Do you need any more help? > Yes, I have a patch tested and ready to go. Unfortunately, I'm waiting on approval from the company I work at to submit it. I really don't understand what they are so scared of; but they own me :-( Hopefully it won't be much longer before they let me submit. -- Gabe ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] TI XIO200a bridge quirk: erroneously reports support for fast b2b transfers 2009-10-06 11:32 ` Gabe Black @ 2009-10-06 14:19 ` Gabe Black 2009-10-06 16:11 ` Jesse Barnes 0 siblings, 1 reply; 8+ messages in thread From: Gabe Black @ 2009-10-06 14:19 UTC (permalink / raw) To: jbarnes Cc: shawn.bohrer, mike.hoogendyk, knan, linux-pci, linux-kernel, arjan, Gabe Black This quirk will disable fast back to back transfer on the secondary bus segment of the TI Bridge. Signed-off-by: Gabe Black <gabe.black@ni.com> --- drivers/pci/quirks.c | 19 +++++++++++++++++++ include/linux/pci_ids.h | 1 + 2 files changed, 20 insertions(+), 0 deletions(-) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 6099fac..efa6534 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -670,6 +670,25 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev) } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); +/* + * TI XIO2000a PCIe-PCI Bridge erroneously reports it supports fast back-to-back: + * Disable fast back-to-back on the secondary bus segment + */ +static void __devinit quirk_xio2000a(struct pci_dev *dev) +{ + struct pci_dev *pdev; + u16 command; + + dev_warn(&dev->dev, "TI XIO2000a quirk detected; " + "secondary bus fast back-to-back transfers disabled\n"); + list_for_each_entry(pdev, &dev->subordinate->devices, bus_list) { + pci_read_config_word(pdev, PCI_COMMAND, &command); + if (command & PCI_COMMAND_FAST_BACK) + pci_write_config_word(pdev, PCI_COMMAND, command & ~PCI_COMMAND_FAST_BACK); + } +} +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XIO2000A, + quirk_xio2000a); #ifdef CONFIG_X86_IO_APIC diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index da1fda8..f490e7a 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -776,6 +776,7 @@ #define PCI_DEVICE_ID_TI_X515 0x8036 #define PCI_DEVICE_ID_TI_XX12 0x8039 #define PCI_DEVICE_ID_TI_XX12_FM 0x803b +#define PCI_DEVICE_ID_TI_XIO2000A 0x8231 #define PCI_DEVICE_ID_TI_1130 0xac12 #define PCI_DEVICE_ID_TI_1031 0xac13 #define PCI_DEVICE_ID_TI_1131 0xac15 -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] TI XIO200a bridge quirk: erroneously reports support for fast b2b transfers 2009-10-06 14:19 ` [PATCH] TI XIO200a bridge quirk: erroneously reports support for fast b2b transfers Gabe Black @ 2009-10-06 16:11 ` Jesse Barnes 0 siblings, 0 replies; 8+ messages in thread From: Jesse Barnes @ 2009-10-06 16:11 UTC (permalink / raw) To: Gabe Black Cc: shawn.bohrer, mike.hoogendyk, knan, linux-pci, linux-kernel, arjan, Gabe Black On Tue, 6 Oct 2009 09:19:45 -0500 Gabe Black <gabe.black@ni.com> wrote: > This quirk will disable fast back to back transfer on the secondary > bus segment of the TI Bridge. > > Signed-off-by: Gabe Black <gabe.black@ni.com> Applied to my for-linus branch. -- Jesse Barnes, Intel Open Source Technology Center ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-10-06 16:11 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-09-22 19:01 TI PCIe-PCI bridge quirks Gabe Black 2009-09-22 19:11 ` Arjan van de Ven 2009-09-22 19:37 ` Gabe Black 2009-09-22 20:07 ` Arjan van de Ven 2009-10-06 0:09 ` Jesse Barnes 2009-10-06 11:32 ` Gabe Black 2009-10-06 14:19 ` [PATCH] TI XIO200a bridge quirk: erroneously reports support for fast b2b transfers Gabe Black 2009-10-06 16:11 ` Jesse Barnes
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox