linux/drivers/usb/host
Benjamin Herrenschmidt 8de9840265 [PATCH] USB: Fix USB suspend/resume crasher (#2)
This patch closes the IRQ race and makes various other OHCI & EHCI code
path safer vs. suspend/resume.
I've been able to (finally !) successfully suspend and resume various
Mac models, with or without USB mouse plugged, or plugging while asleep,
or unplugging while asleep etc... all without a crash.

Alan, please verify the UHCI bit I did, I only verified that it builds.
It's very simple so I wouldn't expect any issue there. If you aren't
confident, then just drop the hunks that change uhci-hcd.c

I also made the patch a little bit more "safer" by making sure the store
to the interrupt register that disables interrupts is not posted before
I set the flag and drop the spinlock.

Without this patch, you cannot reliably sleep/wakeup any recent Mac, and
I suspect PCs have some more sneaky issues too (they don't frankly crash
with machine checks because x86 tend to silently swallow PCI errors but
that won't last afaik, at least PCI Express will blow up in those
situations, but the USB code may still misbehave).

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-11-29 21:39:23 -08:00
..
ehci-dbg.c [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
ehci-hcd.c [PATCH] USB: EHCI updates split init/reinit logic for resume 2005-11-23 23:04:28 -08:00
ehci-hub.c [PATCH] USB: EHCI updates 2005-11-23 23:04:28 -08:00
ehci-mem.c [PATCH] gfp_t: drivers/usb 2005-10-28 08:16:49 -07:00
ehci-pci.c [PATCH] USB: Fix USB suspend/resume crasher (#2) 2005-11-29 21:39:23 -08:00
ehci-q.c [PATCH] USB: Fix USB suspend/resume crasher (#2) 2005-11-29 21:39:23 -08:00
ehci-sched.c [PATCH] USB: Fix USB suspend/resume crasher (#2) 2005-11-29 21:39:23 -08:00
ehci.h [PATCH] EHCI, split out PCI glue 2005-10-28 16:47:39 -07:00
hc_crisv10.c [PATCH] changing CONFIG_LOCALVERSION rebuilds too much, for no good reason 2005-11-09 07:55:57 -08:00
hc_crisv10.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
isp116x-hcd.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
isp116x.h [PATCH] ISP116x PM updates 2005-10-28 16:47:41 -07:00
Kconfig [PATCH] USB: Add isp116x-hcd USB host controller driver 2005-06-27 14:43:42 -07:00
Makefile [PATCH] USB: move handoff code 2005-10-28 16:47:38 -07:00
ohci-au1xxx.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
ohci-dbg.c [PATCH] OHCI PM updates 2005-10-28 16:47:40 -07:00
ohci-hcd.c [PATCH] USB: Fix USB suspend/resume crasher (#2) 2005-11-29 21:39:23 -08:00
ohci-hub.c [PATCH] USB: Fix USB suspend/resume crasher (#2) 2005-11-29 21:39:23 -08:00
ohci-lh7a404.c [PATCH] USB: OHCI lh7a404 platform device conversion fixup 2005-11-17 11:29:55 -08:00
ohci-mem.c [PATCH] OHCI PM updates 2005-10-28 16:47:40 -07:00
ohci-omap.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
ohci-pci.c [PATCH] USB: Fix USB suspend/resume crasher (#2) 2005-11-29 21:39:23 -08:00
ohci-ppc-soc.c [PATCH] Fix copy-paste bug in ohci-ppc-soc.c 2005-11-18 07:49:45 -08:00
ohci-pxa27x.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
ohci-q.c [PATCH] USB: OHCI on Compaq Aramada 7400 2005-04-18 17:39:30 -07:00
ohci-s3c2410.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
ohci-sa1111.c [PATCH] USB: Rename hcd->hub_suspend to hcd->bus_suspend 2005-10-28 16:47:44 -07:00
ohci.h [PATCH] OHCI PM updates 2005-10-28 16:47:40 -07:00
pci-quirks.c [USB]: Make early handoff a final fixup instead of a header one. 2005-11-04 11:17:24 -08:00
sl811_cs.c Create platform_device.h to contain all the platform device details. 2005-10-29 19:07:23 +01:00
sl811-hcd.c [DRIVER MODEL] Convert platform drivers to use struct platform_driver 2005-11-09 22:32:44 +00:00
sl811.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
uhci-debug.c [PATCH] USB: UHCI: Split apart the physical and logical framelist arrays 2005-10-28 16:47:39 -07:00
uhci-hcd.c [PATCH] USB: Fix USB suspend/resume crasher (#2) 2005-11-29 21:39:23 -08:00
uhci-hcd.h [PATCH] USB: UHCI: Spruce up some comments 2005-10-28 16:47:41 -07:00
uhci-hub.c [PATCH] USB UHCI: remove the FSBR kernel timer 2005-09-12 12:23:40 -07:00
uhci-q.c [PATCH] UHCI: Improve handling of iso TDs 2005-10-28 16:47:44 -07:00