On Fri, Jan 06, 2017 at 09:22:46AM +0200, Евгени Димитров wrote:
On Thu, Jan 5, 2017 at 6:29 PM, Kevin O'Connor kevin@koconnor.net wrote:
On Thu, Jan 05, 2017 at 09:44:14AM +0200, Евгени Димитров wrote:
On Wed, Jan 4, 2017 at 4:52 PM, Kevin O'Connor kevin@koconnor.net
wrote:
On Wed, Jan 04, 2017 at 03:57:33PM +0200, Евгени Димитров wrote:
Hi,
I'm testing Coreboot with SeaBIOS as payload on my old Alix.2C2. When trying to boot from an USB device I get the following error:
Searching bootorder for: /pci@i0cf8/usb@f,5/storage@2/*@0/*@0,0 Searching bootorder for: /pci@i0cf8/usb@f,5/usb-*@2 ehci_send_pipe qh=0x000ecf00 dir=0 data=0x00006cf9 size=31 ehci_send_pipe qh=0x000ecf80 dir=128 data=0x00006dc4 size=36 ehci_send_pipe qh=0x000ecf80 dir=128 data=0x00006cec size=13 WARNING - Timeout at ehci_wait_td:516! ehci pipe=0x000ecf80 cur=00000000 tok=00000000 next=6b40
td=0x00006b40
status=d0d80 USB transmission failed Unable to configure USB MSC drive. phys_free f6030 (detail=0x0f7688a0) Unable to configure USB MSC device.
Did you disable threads in seabios (either via the kconfig option or via the /etc/threads runtime option)? It's not recommended to disable threads, and the USB code is less capable of handling timeouts when threads are disabled. Can you retry (and send the log) with threads enabled.
If that fails, can you also try disabling CONFIG_USB_EHCI in Kconfig and send that log as well.
I get the same error with threads enabled. Disabling ehci did not help either. Logs are attached as requested.
It looks like the USB device is successfully identified and configured, but when sending the "inquiry" command to the drive behind the USB interface the connection halts. Not sure why that would be - it could be something with the controller, but it's odd that it happens with both the ohci and ehci controllers.
If you boot to linux (using some other bootable device) what does 'lsusb' and 'lsusb -t' report? Have you tested with a different type of usb drive?
-Kevin
USB works on Linux. And yes I have tried a bunch of USB drives. All of them failed with the same error.
root@OpenWrt:/# lsusb Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 0011:7788 Bus 001 Device 003: ID 058f:6377 Alcor Micro Corp. Multimedia Card Reader Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub root@OpenWrt:/# lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/4p, 12M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/4p, 480M |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=, 480M |__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=, 480M
Are you trying to boot from the "Multimedia Card Reader" or from a regular USB flash drive? If you're not booting from the card reader, does the patch below help?
-Kevin
--- a/src/hw/usb-msc.c +++ b/src/hw/usb-msc.c @@ -203,6 +203,8 @@ usb_msc_setup(struct usbdevice_s *usbdev) goto fail;
int maxlun = usb_msc_maxlun(usbdev->defpipe); + if (maxlun) + goto fail; int lun, pipesused = 0; for (lun = 0; lun < maxlun + 1; lun++) { int ret = usb_msc_lun_setup(inpipe, outpipe, usbdev, lun);
On Fri, Jan 6, 2017 at 4:46 PM, Kevin O'Connor kevin@koconnor.net wrote:
On Fri, Jan 06, 2017 at 09:22:46AM +0200, Евгени Димитров wrote:
On Thu, Jan 5, 2017 at 6:29 PM, Kevin O'Connor kevin@koconnor.net
wrote:
On Thu, Jan 05, 2017 at 09:44:14AM +0200, Евгени Димитров wrote:
On Wed, Jan 4, 2017 at 4:52 PM, Kevin O'Connor kevin@koconnor.net
wrote:
On Wed, Jan 04, 2017 at 03:57:33PM +0200, Евгени Димитров wrote:
Hi,
I'm testing Coreboot with SeaBIOS as payload on my old Alix.2C2.
When
trying to boot from an USB device I get the following error:
Searching bootorder for: /pci@i0cf8/usb@f,5/storage@2/*@0/*@0,0 Searching bootorder for: /pci@i0cf8/usb@f,5/usb-*@2 ehci_send_pipe qh=0x000ecf00 dir=0 data=0x00006cf9 size=31 ehci_send_pipe qh=0x000ecf80 dir=128 data=0x00006dc4 size=36 ehci_send_pipe qh=0x000ecf80 dir=128 data=0x00006cec size=13 WARNING - Timeout at ehci_wait_td:516! ehci pipe=0x000ecf80 cur=00000000 tok=00000000 next=6b40
td=0x00006b40
status=d0d80 USB transmission failed Unable to configure USB MSC drive. phys_free f6030 (detail=0x0f7688a0) Unable to configure USB MSC device.
Did you disable threads in seabios (either via the kconfig option
or
via the /etc/threads runtime option)? It's not recommended to
disable
threads, and the USB code is less capable of handling timeouts when threads are disabled. Can you retry (and send the log) with
threads
enabled.
If that fails, can you also try disabling CONFIG_USB_EHCI in
Kconfig
and send that log as well.
I get the same error with threads enabled. Disabling ehci did not
help
either. Logs are attached as requested.
It looks like the USB device is successfully identified and configured, but when sending the "inquiry" command to the drive behind the USB interface the connection halts. Not sure why that would be - it could be something with the controller, but it's odd that it happens with both the ohci and ehci controllers.
If you boot to linux (using some other bootable device) what does 'lsusb' and 'lsusb -t' report? Have you tested with a different type of usb drive?
-Kevin
USB works on Linux. And yes I have tried a bunch of USB drives. All of
them
failed with the same error.
root@OpenWrt:/# lsusb Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 0011:7788 Bus 001 Device 003: ID 058f:6377 Alcor Micro Corp. Multimedia Card Reader Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub root@OpenWrt:/# lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/4p, 12M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/4p, 480M |__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=, 480M |__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=, 480M
Are you trying to boot from the "Multimedia Card Reader" or from a regular USB flash drive? If you're not booting from the card reader, does the patch below help?
-Kevin
--- a/src/hw/usb-msc.c +++ b/src/hw/usb-msc.c @@ -203,6 +203,8 @@ usb_msc_setup(struct usbdevice_s *usbdev) goto fail;
int maxlun = usb_msc_maxlun(usbdev->defpipe);
- if (maxlun)
int lun, pipesused = 0; for (lun = 0; lun < maxlun + 1; lun++) { int ret = usb_msc_lun_setup(inpipe, outpipe, usbdev, lun);goto fail;
I was trying to boot from whatever USB devices I can get my hands on. Ultimately my goal is to boot from a regular flash drive. The patch doesn't help.