kernel-fxtec-pro1x/drivers/usb/host
Andiry Xu 7e393a834b xHCI: AMD isoc link TRB chain bit quirk
Setting the chain (CH) bit in the link TRB of isochronous transfer rings
is required by AMD 0.96 xHCI host controller to successfully transverse
multi-TRB TD that span through different memory segments.

When a Missed Service Error event occurs, if the chain bit is not set in
the link TRB and the host skips TDs which just across a link TRB, the
host may falsely recognize the link TRB as a normal TRB. You can see
this may cause big trouble - the host does not jump to the right address
which is pointed by the link TRB, but continue fetching the memory which
is after the link TRB address, which may not even belong to the host,
and the result cannot be predicted.

This causes some big problems. Without the former patch I sent: "xHCI:
prevent infinite loop when processing MSE event", the system may hang.
With that patch applied, system does not hang, but the host still access
wrong memory address and isoc transfer will fail. With this patch,
isochronous transfer works as expected.

This patch should be applied to kernels as old as 2.6.36, which was when
the first isochronous support was added for the xHCI host controller.

Signed-off-by: Andiry Xu <andiry.xu@amd.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-09-26 15:51:11 -07:00
..
whci treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-ath79.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-atmel.c USB: EHCI: Support controllers with big endian capability regs 2011-05-03 11:43:21 -07:00
ehci-au1xxx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-cns3xxx.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-dbg.c USB: EHCI: remove usages of hcd->state 2011-08-22 15:57:01 -07:00
ehci-fsl.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-fsl.h USB: ehci-fsl: add MPC5121E specific suspend and resume 2011-05-02 16:59:36 -07:00
ehci-grlib.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-hcd.c EHCI : introduce a common ehci_setup 2011-09-26 15:48:41 -07:00
ehci-hub.c Merge 3.1-rc4 into usb-next 2011-08-29 08:56:17 -07:00
ehci-ixp4xx.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-lpm.c USB: Mark EHCI LPM functions as __maybe_unused 2011-02-17 10:47:55 -08:00
ehci-mem.c USB: EHCI: AMD periodic frame list table quirk 2010-11-16 13:36:40 -08:00
ehci-msm.c ehci-msm : use ehci_setup 2011-07-08 14:51:29 -07:00
ehci-mxc.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-octeon.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-omap.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-orion.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-pci.c USB: EHCI: remove usages of hcd->state 2011-08-22 15:57:01 -07:00
ehci-pmcmsp.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-ppc-of.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-ps3.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-pxa168.c USB: pxa168: Add onchip USB host controller support 2011-08-22 15:38:30 -07:00
ehci-q.c usb: ehci: remove the 1st wmb in qh_append_tds 2011-09-18 01:38:59 -07:00
ehci-s5p.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-sched.c USB: EHCI: remove usages of hcd->state 2011-08-22 15:57:01 -07:00
ehci-sh.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-spear.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-sysfs.c USB: EHCI: Allow users to override 80% max periodic bandwidth 2011-07-08 14:51:33 -07:00
ehci-tegra.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-vt8500.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-w90x900.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-xilinx-of.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ehci-xls.c usb: OHCI/EHCI support for Netlogic XLS processor. 2011-08-22 15:54:38 -07:00
ehci.h USB: EHCI: remove usages of hcd->state 2011-08-22 15:57:01 -07:00
fhci-dbg.c
fhci-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c
fhci-tds.c Fix common misspellings 2011-03-31 11:26:23 -03:00
fhci.h Fix common misspellings 2011-03-31 11:26:23 -03:00
fsl-mph-dr-of.c USB: ehci-fsl: Fix 'have_sysif_regs' detection 2011-01-22 18:38:58 -08:00
hwa-hc.c
imx21-dbg.c treewide: fix a few typos in comments 2011-05-10 10:16:21 +02:00
imx21-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
imx21-hcd.h USB: imx21-hcd accept arbitary transfer buffer alignement. 2010-10-22 10:22:03 -07:00
isp116x-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
isp116x.h Fix common misspellings 2011-03-31 11:26:23 -03:00
isp1362-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
isp1362.h
isp1760-hcd.c usb/isp1760: Clear TT buffer on interrupted low & full speed transfers 2011-08-22 17:05:27 -07:00
isp1760-hcd.h usb/isp1760: Use polling instead of SOF interrupts to fix Errata 2 2011-08-22 15:32:45 -07:00
isp1760-if.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
Kconfig USB host i.MX21: remove dependency on MACH_MX21 2011-08-24 15:06:54 -07:00
Makefile USB: Add EHCI and OHCH glue for OCTEON II SOCs. 2010-10-29 19:08:44 +01:00
octeon2-common.c usb: Configure octeon2 glue logic for proper uSOF cycle period. 2011-05-03 10:09:32 -07:00
ohci-at91.c
ohci-ath79.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-au1xxx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-cns3xxx.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
ohci-da8xx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-dbg.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
ohci-ep93xx.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-hcd.c usb: OHCI/EHCI support for Netlogic XLS processor. 2011-08-22 15:54:38 -07:00
ohci-hub.c USB 3.0 Hub Changes 2011-03-13 18:07:11 -07:00
ohci-jz4740.c USB: ohci-jz4740: Fix spelling in MODULE_ALIAS 2010-11-11 07:14:07 -08:00
ohci-mem.c
ohci-octeon.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-omap.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-omap3.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-pci.c OHCI: fix regression caused by nVidia shutdown workaround 2011-05-17 11:20:23 -07:00
ohci-pnx4008.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-pnx8550.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ppc-of.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ppc-soc.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ps3.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-pxa27x.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-q.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
ohci-s3c2410.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-sa1111.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-sh.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-sm501.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-spear.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-ssb.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-tmio.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-xls.c usb: OHCI/EHCI support for Netlogic XLS processor. 2011-08-22 15:54:38 -07:00
ohci.h Merge branch 'remove' of master.kernel.org:/home/rmk/linux-2.6-arm 2011-03-16 19:05:40 -07:00
oxu210hp-hcd.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
oxu210hp.h
pci-quirks.c usb/host/pci-quirks.c: correct annotation of `ehci_dmi_nohandoff_table' 2011-08-08 14:00:14 -07:00
pci-quirks.h Intel xhci: Support EHCI/xHCI port switching. 2011-05-27 12:07:36 -07:00
r8a66597-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
r8a66597.h usb: r8a66597-hcd: add function for external controller 2011-07-08 14:57:11 -07:00
sl811-hcd.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
sl811.h
sl811_cs.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
u132-hcd.c usb: u132-hcd: Drop __TIME__ usage 2011-04-13 16:36:06 -07:00
uhci-debug.c USB: UHCI: Add support for big endian descriptors 2011-05-19 16:43:20 -07:00
uhci-grlib.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
uhci-hcd.c Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 2011-05-23 12:33:02 -07:00
uhci-hcd.h USB: UHCI: Add support for big endian descriptors 2011-05-19 16:43:20 -07:00
uhci-hub.c USB: UHCI: Wrap I/O register accesses 2011-05-06 18:24:01 -07:00
uhci-pci.c USB: UHCI: Move PCI specific functions to uhci-pci.c 2011-05-06 18:24:00 -07:00
uhci-q.c USB: use usb_endpoint_maxp() instead of le16_to_cpu() 2011-08-23 09:47:40 -07:00
xhci-dbg.c Merge 3.0-rc2 into usb-linus as it's needed by some USB patches 2011-06-14 06:51:23 -07:00
xhci-ext-caps.h xHCI: Check host USB2 LPM capability 2011-09-26 15:51:09 -07:00
xhci-hub.c xHCI: set USB2 hardware LPM 2011-09-26 15:51:10 -07:00
xhci-mem.c xHCI: AMD isoc link TRB chain bit quirk 2011-09-26 15:51:11 -07:00
xhci-pci.c xHCI: AMD isoc link TRB chain bit quirk 2011-09-26 15:51:11 -07:00
xhci-ring.c xHCI: AMD isoc link TRB chain bit quirk 2011-09-26 15:51:11 -07:00
xhci.c xHCI: set USB2 hardware LPM 2011-09-26 15:51:10 -07:00
xhci.h xHCI: AMD isoc link TRB chain bit quirk 2011-09-26 15:51:11 -07:00