I add a jmp $ here. After the code reach the loop, I press the reset button.
Then the set address command can not be success.


@@ -972,12 +974,13 @@ xhci_alloc_pipe(struct usbdevice_s *usbdev
         // Send set_address command.
         int cc = xhci_cmd_address_device(xhci, slotid, in);
         if (cc != CC_SUCCESS) {
             dprintf(1, "%s: address device: failed (cc %d)\n", __func__, cc);
             goto fail;
         }
+    asm volatile ("1: jmp 1b");
     } else {
         pipe->slotid = usbdev->slotid;
         // Send configure command.
         int cc = xhci_cmd_configure_endpoint(xhci, pipe->slotid, in);
         if (cc != CC_SUCCESS) {
             dprintf(1, "%s: configure endpoint: failed (cc %d)\n", __func__, cc);
 
Zheng


From: fishbaoz@hotmail.com
To: kevin@koconnor.net
Date: Thu, 27 Aug 2015 07:41:07 +0000
CC: seabios@seabios.org
Subject: Re: [SeaBIOS] Unremovable USB3 device can not be detected after reboot

New finding.If I unplug, plug the SeaGate USB3.0
Harddrive and reset board,the harddrive can be detected successfully.
The debug message are the same as the first time.
It seems that the device is in a unstable state, which can only be rescued by poweroff.


Zheng

_______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org http://www.seabios.org/mailman/listinfo/seabios