Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Nov 2012 20:52:35 +0100
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        Florian Jung <florian.a.jung@web.de>
Cc:        freebsd-gnats-submit@freebsd.org, freebsd-usb@freebsd.org
Subject:   Re: usb/173722: XHCI driver bug after suspend to ram (ACPI S3 mode)
Message-ID:  <201211192052.35438.hselasky@c2i.net>
In-Reply-To: <50AA86CB.2080007@web.de>
References:  <201211191536.qAJFajns006251@red.freebsd.org> <201211191921.13989.hselasky@c2i.net> <50AA86CB.2080007@web.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 19 November 2012 20:21:47 Florian Jung wrote:
> Am 19.11.2012 19:21, schrieb Hans Petter Selasky:
> > On Monday 19 November 2012 16:36:45 Florian Jung wrote:
> >>> Number:         173722
> >>> Category:       usb
> >>> Synopsis:       XHCI driver bug after suspend to ram (ACPI S3 mode)
> >>> Confidential:   no
> >>> Severity:       non-critical
> >>> Priority:       low
> >>> Responsible:    freebsd-usb
> >>> State:          open
> >>> Quarter:
> >>> Keywords:
> >>> Date-Required:
> >>> Class:          sw-bug
> >>> Submitter-Id:   current-users
> >>> Arrival-Date:   Mon Nov 19 15:40:00 UTC 2012
> >>> Closed-Date:
> >>> Last-Modified:
> >>> Originator:     Florian Jung
> >>> Release:        9.0-RELEASE-p3
> >>> Organization:
> >> 
> >>> Environment:
> >> FreeBSD beastie 9.0-RELEASE-p3 FreeBSD 9.0-RELEASE-p3 #0: Tue Jun 12
> >> 02:52:29 UTC 2012
> >> root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
> >> 
> >>> Description:
> >> After entering and waking up from suspend to ram aka ACPI S3 state, the
> >> dmesg get flooded with "xhci_interrupt: host controller halted", and my
> >> USB3.0 device stops working.
> >> 
> >> (It is a external hard disk drive, and the device node just vanished and
> >> won't re-appear)
> >> 
> >> My USB2.0 and 1.x devices however do still work.
> >> 
> >> It seems that i can provoke the generation of these "xhci_interrupt:
> >> host controller halted" messages by typing on my USB-2.0-Keyboard or by
> >> moving my USB-2.0-Mouse.
> >> 
> >>> How-To-Repeat:
> >> - Start up FreeBSD
> >> - Plug in USB3.0 Harddisk
> >> - It will work.
> >> - sudo acpiconf -S 3
> >> - re-awake the computer
> >> - ls /dev/ tells you that the harddisk is gone
> >> - dmesg tells you the "xhci_interrupt: host controller halted" messages.
> >> - replug the harddisk
> >> - it still does not work.
> > 
> > If you unplug the harddisk before the suspend, does it work afterwards
> > then?
> > 
> > --HPS
> 
> No, that causes the same problem.
> I don't even need to attach it: boot freebsd, enter acpi s3, wake up,
> and then plug in the disk leads to the same problem.
> 
> i have found out that compiling XHCI has loadable module, and unloading
> it before suspend and re-loading it afterwards solves the problem.
> 
> the "xhci_interrupt: host controller halted"-messages don't appear, and
> i can use my harddisk afterwards.
> 
> looks like xhci is failing to reinitalize properly after suspend?
> 
> greetings,
> flo

Hi,

Do you have a USB 3.0 compatible BIOS?

I think we might need to halt the XHCI as part of the resume process. Can you 
try this patch:

diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
index 756b1ed..576ed71 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -578,6 +578,8 @@ xhci_set_hw_power_sleep(struct usb_bus *bus, uint32_t 
state)
                xhci_halt_controller(sc);
                break;
        case USB_HW_POWER_RESUME:
+               DPRINTF("Halting the XHCI\n");
+               xhci_halt_controller(sc);
                DPRINTF("Starting the XHCI\n");
                xhci_start_controller(sc);
                break;


--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211192052.35438.hselasky>