This patch (as581) changes the assignments to hcd->state in the uhci-hcd
driver.  It fixes part of bugzilla entry #5227.  The problem was revealed
by David's large suite of USB suspend/resume patches; this patch should go
to Linus at the same time those do.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        /* Set the current frame number */
        outw(uhci->frame_number, uhci->io_addr + USBFRNUM);
 
-       /* Mark controller as running before we enable interrupts */
-       uhci_to_hcd(uhci)->state = HC_STATE_RUNNING;
+       /* Mark controller as not halted before we enable interrupts */
+       uhci_to_hcd(uhci)->state = HC_STATE_SUSPENDED;
        mb();
 
        /* Enable PIRQ */
 
 static void start_rh(struct uhci_hcd *uhci)
 {
+       uhci_to_hcd(uhci)->state = HC_STATE_RUNNING;
        uhci->is_stopped = 0;
        smp_wmb();
 
 
        if (uhci->rh_state > UHCI_RH_SUSPENDED) {
                dev_warn(uhci_dev(uhci), "Root hub isn't suspended!\n");
-               hcd->state = HC_STATE_RUNNING;
                rc = -EBUSY;
                goto done;
        };