kernel-fxtec-pro1x/drivers/usb/host
Sarah Sharp 159e1fcc9a xhci: Don't write zeroed pointers to xHC registers.
When xhci_mem_cleanup() is called, we can't be sure if the xHC is
actually halted.  We can ask the xHC to halt by writing to the RUN bit
in the command register, but that might timeout due to a HW hang.

If the host controller is still running, we should not write zeroed
values to the event ring dequeue pointers or base tables, the DCBAA
pointers, or the command ring pointers.  Eric Fu reports his VIA VL800
host accesses the event ring pointers after a failed register restore on
resume from suspend.  The hypothesis is that the host never actually
halted before the register write to change the event ring pointer to
zero.

Remove all writes of zeroed values to pointer registers in
xhci_mem_cleanup().  Instead, make all callers of the function reset the
host controller first, which will reset those registers to zero.
xhci_mem_init() is the only caller that doesn't first halt and reset the
host controller before calling xhci_mem_cleanup().

This should be backported to kernels as old as 2.6.32.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Tested-by: Elric Fu <elricfu1@gmail.com>
Cc: stable@vger.kernel.org
2012-04-11 08:28:55 -07:00
..
whci Merge branch 'for-next/dwc3' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next 2011-12-12 15:19:53 -08:00
alchemy-common.c MIPS: Alchemy: Au1300 SoC support 2011-12-07 22:02:05 +00:00
ehci-atmel.c USB: ehci-atmel: add needed of.h header file 2012-04-04 18:35:43 +02:00
ehci-au1xxx.c usb: Remove ehci_reset call from ehci_run 2011-12-08 09:38:53 -08: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 simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
ehci-fsl.c Merge 3.3-rc7 into usb-next 2012-03-12 09:13:31 -07:00
ehci-fsl.h Revert "powerpc/usb: fix issue of CPU halt when missing USB PHY clock" 2012-03-02 16:08:54 -08: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: keep track of ports being resumed and indicate in hub_status_data 2012-04-09 15:43:21 -07:00
ehci-hub.c EHCI: keep track of ports being resumed and indicate in hub_status_data 2012-04-09 15:43:21 -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-ls1x.c USB: Add EHCI bus glue for Loongson1x SoCs (UPDATED) 2012-01-24 15:28:02 -08:00
ehci-mem.c USB: EHCI: AMD periodic frame list table quirk 2010-11-16 13:36:40 -08:00
ehci-msm.c usb: otg: Convert all users to pass struct usb_otg for OTG functions 2012-02-27 15:41:52 +02:00
ehci-mv.c usb: otg: Convert all users to pass struct usb_otg for OTG functions 2012-02-27 15:41:52 +02:00
ehci-mxc.c usb: otg: Convert all users to pass struct usb_otg for OTG functions 2012-02-27 15:41:52 +02:00
ehci-octeon.c usb: Remove ehci_reset call from ehci_run 2011-12-08 09:38:53 -08:00
ehci-omap.c Driver specific changes 2012-01-09 14:39:22 -08:00
ehci-orion.c ARM: Orion: Get address map from plat-orion instead of via platform_data 2011-12-13 18:46:55 -05:00
ehci-pci.c usb: add support for STA2X11 host driver 2012-01-24 14:15:37 -08:00
ehci-platform.c USB: EHCI: Add a generic platform device driver 2012-03-15 12:42:07 -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: PS3 EHCI HC reset work-around 2011-12-08 09:38:53 -08:00
ehci-q.c usb: fix number of mapped SG DMA entries 2011-12-09 16:18:19 -08:00
ehci-s5p.c USB: ehci-s5p: add DMA burst support 2012-03-08 13:05:47 -08:00
ehci-sched.c EHCI : Fix a regression in the ISO scheduler 2011-11-29 09:59:29 +09:00
ehci-sh.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ehci-spear.c USB: ehci-spear: Add PM support 2012-02-24 13:40:04 -08: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 EHCI: keep track of ports being resumed and indicate in hub_status_data 2012-04-09 15:43:21 -07:00
ehci-vt8500.c usb: Remove ehci_reset call from ehci_run 2011-12-08 09:38:53 -08:00
ehci-w90x900.c usb: Remove ehci_reset call from ehci_run 2011-12-08 09:38:53 -08:00
ehci-xilinx-of.c USB: EHCI: Don't use NO_IRQ in xilinx ehci driver 2012-01-16 08:23:15 +01:00
ehci-xls.c Merge 3.2-rc3 into usb-linus 2011-11-26 19:46:48 -08:00
ehci.h EHCI: keep track of ports being resumed and indicate in hub_status_data 2012-04-09 15:43:21 -07:00
fhci-dbg.c
fhci-hcd.c usb: convert drivers/usb/* to use module_platform_driver() 2011-11-28 06:48:32 +09:00
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c QE/FHCI: fixed the CONTROL bug 2011-10-18 13:51:34 -07:00
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: Fix build error due to dma_mask is not at pdev_archdata at ARM 2012-02-24 13:37:44 -08:00
hwa-hc.c Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb 2012-01-09 12:09:47 -08:00
imx21-dbg.c usb: Fix typo in imx21-dbg.c 2012-02-13 14:32:34 -08:00
imx21-hcd.c Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb 2012-01-09 12:09:47 -08:00
imx21-hcd.h
isp116x-hcd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
isp116x.h Fix common misspellings 2011-03-31 11:26:23 -03:00
isp1362-hcd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
isp1362.h
isp1760-hcd.c usb/isp1760: Fix race condition memory leak 2011-11-26 20:02:47 -08:00
isp1760-hcd.h usb/isp1760: Allow to optionally trigger low-level chip reset via GPIOLIB. 2011-10-19 13:29:06 -07:00
isp1760-if.c Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb 2012-01-09 12:09:47 -08:00
Kconfig USB: use generic platform driver on ath79 2012-03-15 12:45:43 -07:00
Makefile usb: host: xhci: add platform driver support 2012-03-13 10:30:59 -07: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 USB: ohci-at91: trivial return code name change 2012-04-04 18:35:33 +02:00
ohci-au1xxx.c Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-01-14 13:05:21 -08: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 USB: OHCI: fix new compiler warnings 2012-01-24 12:24:06 -08:00
ohci-ep93xx.c OHCI: remove uses of hcd->state 2011-11-18 10:51:00 -08:00
ohci-exynos.c USB: ohci-exynos: replace hcd->state with ohci->rh_state 2012-02-24 13:40:04 -08:00
ohci-hcd.c Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
ohci-hub.c OHCI: remove uses of hcd->state 2011-11-18 10:51:00 -08:00
ohci-jz4740.c USB: ohci-jz4740: Fix spelling in MODULE_ALIAS 2010-11-11 07:14:07 -08:00
ohci-mem.c
ohci-nxp.c USB: ohci-nxp: Remove i2c_write(), use smbus 2012-03-13 14:27:28 -07:00
ohci-octeon.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-omap.c usb: otg: Convert all users to pass struct usb_otg for OTG functions 2012-02-27 15:41:52 +02:00
ohci-omap3.c ARM: OMAP: USBHOST: Replace usbhs core driver APIs by Runtime pm APIs 2011-12-16 04:29:57 -07:00
ohci-pci.c usb: add support for STA2X11 host driver 2012-01-24 14:15:37 -08:00
ohci-platform.c USB: OHCI: Add a generic platform device driver 2012-03-15 12:41:58 -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: ohci-pxa27x: add clk_prepare/clk_unprepare calls 2012-03-15 13:46:54 -07:00
ohci-q.c OHCI: remove uses of hcd->state 2011-11-18 10:51:00 -08:00
ohci-s3c2410.c USB: ohci-s3c2410: add PM support 2011-11-30 20:08:26 +09:00
ohci-sa1111.c USB: sa1111: add hcd .reset method 2012-03-24 11:30:14 +00:00
ohci-sh.c OHCI: remove uses of hcd->state 2011-11-18 10:51:00 -08:00
ohci-sm501.c OHCI: remove uses of hcd->state 2011-11-18 10:51:00 -08:00
ohci-spear.c OHCI: remove uses of hcd->state 2011-11-18 10:51:00 -08:00
ohci-ssb.c USB: irq: Remove IRQF_DISABLED 2011-09-18 01:39:36 -07:00
ohci-tmio.c OHCI: remove uses of hcd->state 2011-11-18 10:51:00 -08:00
ohci-xls.c usb: OHCI/EHCI-XLS: Use resource_size v3 2011-11-15 10:21:56 -08:00
ohci.h usb: otg: Rename otg_transceiver to usb_phy 2012-02-13 13:34:36 +02:00
oxu210hp-hcd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
oxu210hp.h
pci-quirks.c Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-03-23 14:02:12 -07:00
pci-quirks.h Intel xhci: Support EHCI/xHCI port switching. 2011-05-27 12:07:36 -07:00
r8a66597-hcd.c usb: r8a66597-hcd: Convert to module_platform_driver 2012-03-02 16:20:29 -08:00
r8a66597.h usb: r8a66597-hcd: add function for external controller 2011-07-08 14:57:11 -07:00
sl811-hcd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01: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 Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01: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 Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
uhci-hcd.h USB: UHCI: Add support for big endian descriptors 2011-05-19 16:43:20 -07:00
uhci-hub.c UHCI: hub_status_data should indicate if ports are resuming 2012-04-09 15:43:21 -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: fix number of mapped SG DMA entries 2011-12-09 16:18:19 -08:00
xhci-dbg.c xHCI: correct to print the true HSEE of USBCMD 2012-04-10 15:21:52 -07:00
xhci-ext-caps.h xHCI: Check host USB2 LPM capability 2011-09-26 15:51:09 -07:00
xhci-hub.c USB/xHCI: Enable USB 3.0 hub remote wakeup. 2012-02-14 12:12:24 -08:00
xhci-mem.c xhci: Don't write zeroed pointers to xHC registers. 2012-04-11 08:28:55 -07:00
xhci-pci.c usb: xhci: fix section mismatch in linux-next 2012-04-10 15:21:53 -07:00
xhci-plat.c usb: host: xhci: add platform driver support 2012-03-13 10:30:59 -07:00
xhci-ring.c xhci: don't re-enable IE constantly 2012-04-11 08:28:37 -07:00
xhci.c xhci: Warn when hosts don't halt. 2012-04-11 08:28:54 -07:00
xhci.h xhci: don't re-enable IE constantly 2012-04-11 08:28:37 -07:00