DragonFly BSD
DragonFly bugs List (threaded) for 2011-11
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

[DragonFlyBSD - Bug #2244] usb - system hangs during boot when USB mass storage device/stick is connected - 2.13.0.357.gcdb8af


From: Sepherosa Ziehau via Redmine <bugtracker-admin@xxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 24 Nov 2011 22:24:13 -0800

Issue #2244 has been updated by Sepherosa Ziehau.


On Fri, Nov 25, 2011 at 8:24 AM, Alan K via Redmine
<bugtracker-admin@leaf.dragonflybsd.org> wrote:
>
> Issue #2244 has been updated by Alan K.
>
>
> I tested with dfly-x86_64-2.12.0_RC.img. It doesn't have the problem.
>
> This led me to test different stages of the master branch.
>
> The problem appears to first start with commit 7e370202e053de3ef8357ef02e8b6f1e97694f97
>
> The problem does not occur before that commit (i.e. with 95874ffdec65823430464b7869d8f0acf75cc226 or older).
>
> ##########
>
> http://gitweb.dragonflybsd.org/dragonfly.git/commit/7e370202e053de3ef8357ef02e8b6f1e97694f97
>
> x86_64/nexus: Per-cpu IRQ rman
>
>  Now interrupt thread will be pin to the same CPU as where its GSI
>  will go.sys/platform/pc64/x86_64/nexus.c
> ----------------------------------------
> Bug #2244: usb - system hangs during boot when USB mass storage device/stick is connected - 2.13.0.357.gcdb8af
> http://bugs.dragonflybsd.org/issues/2244

Please test the master:
2b195d6a566cb8441f5d6d66363235683bbd92af

>
> Author: Alan K
> Status: New
> Priority: Normal
> Assignee:
> Category:
> Target version:
>
>
> Versions:
>
> Workstation: Lenovo Thinkcentre M58p
> DragonFlyBSD: v2.13.0.357.gcdb8af-DEVELOPMENT X86_64_GENERIC x86_64
>
> ################
>
> Problem Description:
>
> My system hangs during boot if a USB mass storage device/stick is connected.
> By hang I mean no more output is shown and I cannot turn off/on num lock key on keyboard.
> A hard reset is needed at this stage.
>
> This prevents me from installing DragonFlyBSD from a USB stick.
>
> I first noticed the problem when trying to boot via USB using the 2011 Nov 17th "DragonFly-x86_64-LATEST-IMG.img".
> I haven't tried older versions.
>
> I can connect and use the USB mass storage device/stick after boot without problem, and shutdown while attached without problem.
>
> ################
>
> I recompiled kernel with "options USB_DEBUG" and booted with verbose logging option.
> The last lines shown are:
>
> uhci1: <UHCI (generic) USB controller> [tentative] port 0x1860-0x187f irq 17 at device 26.1 on pci0
> uhci1: Reserved 0x20 bytes for rid 0x20 type 4 at 0x1860
> uhci1: LegSup = 0x0010
>
> ################
>
> From pciconf -lv:
>
> uhci0@pci0:0:26:0:      class=0x0c0300 card=0x304817aa chip=0x3a678086 rev=0x02 hdr=0x00
>    vendor     = 'Intel Corporation'
>    device     = 'USB UHCI Controller'
>    class      = serial bus
>    subclass   = USB
> uhci1@pci0:0:26:1:      class=0x0c0300 card=0x304817aa chip=0x3a688086 rev=0x02 hdr=0x00
>    vendor     = 'Intel Corporation'
>    device     = 'USB UHCI Controller'
>    class      = serial bus
>    subclass   = USB
>
> ################
>
> I put kprintf's in various kernel source files to find where it hangs.
> (Please note that I do not know anything about the kernel and very little about C).
> This is what I found:
>
> Function "uhci_pci_attach(device_t self)" is called from /usr/src/sys/bus/usb/uhci_pci.c
>
> uhci_pci_attach() calls "err = uhci_init(sc);" which is in /usr/src/sys/bus/usb/uhci.c
>
> uhci_init() calls "uhci_globalreset(sc);" which is in /usr/src/sys/bus/usb/uhci.c
>
> uhci_globalreset() calls "usb_delay_ms(&sc->sc_bus, USB_BUS_RESET_DELAY);" which is in /usr/src/sys/bus/usb/usb_subr.c
>
> usb_delay_ms calls "delay((ms+1) * 1000);" with value 101000 (ms is 100).
>
> ...
> ...
>
> It appears that "delay((ms+1) * 1000);" never returns. I think this because I have a kprintf() after the delay().
>
> delay() is defined as DELAY in /usr/src/sys/bus/usb/usb_subr.c.
> DELAY is defined in sys/systm.h but I cannot find the source file containing the DELAY function.
>
> ################
>
> /usr/src/sys/bus/usb/usb_subr.c with the extra kprintfs:
>
> /* Delay for a certain number of ms */
> void
> usb_delay_ms(usbd_bus_handle bus, u_int ms)
> {
>        kprintf("AK: at start of function usb_delay_ms\n");
>
>        /* Wait at least two clock ticks so we know the time has passed. */
>        if (bus->use_polling || cold) {
>                kprintf("AK: usb_delay_ms: in if cold and calling delay.\nAK: Value of ms after math: %d\n", (ms+1)*1000);
>                delay((ms+1) * 1000);
>                kprintf("AK: usb_delay_ms: finished delay\n");
>        }
>        else {
>                kprintf("AK: usb_delay_ms: in else about about to do tsleep\n");
>                tsleep(&ms, 0, "usbdly", (ms*hz+999)/1000 + 1);
>        }
>
>        kprintf("AK: at end of usb_delay_ms\n");
> }
>
> ################
>
> Attached dmesg and messages files taken after verbose boot without the usb stick attached.
>
>
>
> --
> You have received this notification because you have either subscribed to it, or are involved in it.
> To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account
>



-- 
Tomorrow Will Never Die
----------------------------------------
Bug #2244: usb - system hangs during boot when USB mass storage device/stick is connected - 2.13.0.357.gcdb8af
http://bugs.dragonflybsd.org/issues/2244

Author: Alan K
Status: New
Priority: Normal
Assignee: 
Category: 
Target version: 


Versions:

Workstation: Lenovo Thinkcentre M58p 
DragonFlyBSD: v2.13.0.357.gcdb8af-DEVELOPMENT X86_64_GENERIC x86_64

################

Problem Description:

My system hangs during boot if a USB mass storage device/stick is connected.
By hang I mean no more output is shown and I cannot turn off/on num lock key on keyboard.
A hard reset is needed at this stage.

This prevents me from installing DragonFlyBSD from a USB stick.

I first noticed the problem when trying to boot via USB using the 2011 Nov 17th "DragonFly-x86_64-LATEST-IMG.img".
I haven't tried older versions.

I can connect and use the USB mass storage device/stick after boot without problem, and shutdown while attached without problem.

################

I recompiled kernel with "options USB_DEBUG" and booted with verbose logging option.
The last lines shown are:

uhci1: <UHCI (generic) USB controller> [tentative] port 0x1860-0x187f irq 17 at device 26.1 on pci0
uhci1: Reserved 0x20 bytes for rid 0x20 type 4 at 0x1860
uhci1: LegSup = 0x0010

################



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]