On Sat, May 17, 2014 at 10:25:58PM +0200, Paul Menzel wrote:
Dear SeaBIOS folks,
on LinuxTag 2014 the OpenMandriva project [1] gave away USB flash storage devices with OpenMandriva installed for live booting. Testing it out on the ASRock E350M1 with coreboot and SeaBIOS payload it was not detected by SeaBIOS, meaning pressing F12 it was not listed in the boot options.
Rebooting the system by pressing Ctrl + Alt + Del the USB device was recognized by SeaBIOS and listed in the boot menu.
I am still able to reproduce this with SeaBIOS build from master. Please find the coreboot and SeaBIOS logs attached.
Thanks. At first glance this looks like it could be a quirk of the particular flash drive. Can you apply the patch below, set the SeaBIOS debug level to 3, and report the results of both the working/not-working cases?
-Kevin
--- a/src/hw/usb-ehci.c +++ b/src/hw/usb-ehci.c @@ -60,7 +60,9 @@ ehci_hub_detect(struct usbhub_s *hub, u32 port) // has been powered up, so wait the 20ms. msleep(EHCI_TIME_POSTPOWER); } + dprintf(1, "ehci_hub_detect: port=%d portsc1=%x\n", port, portsc); portsc = readl(portreg); + dprintf(1, "ehci_hub_detect: port=%d portsc2=%x\n", port, portsc);
if (!(portsc & PORT_CONNECT)) // No device present @@ -93,6 +95,7 @@ ehci_hub_reset(struct usbhub_s *hub, u32 port) u32 *portreg = &cntl->regs->portsc[port]; u32 portsc = readl(portreg);
+ dprintf(1, "ehci_hub_reset: port=%d portsc3=%x\n", port, portsc); // Finish reset on port portsc &= ~PORT_RESET; writel(portreg, portsc); @@ -100,6 +103,7 @@ ehci_hub_reset(struct usbhub_s *hub, u32 port)
int rv = -1; portsc = readl(portreg); + dprintf(1, "ehci_hub_reset: port=%d portsc4=%x\n", port, portsc); if (!(portsc & PORT_CONNECT)) // No longer connected goto resetfail;