Ticket #11931 (closed defect: fixed)

Opened 2 years ago

Last modified 2 years ago

XO-1 errors with a USB hub connected on port N if slot N in hub has a device connected

Reported by: Quozl Owned by: Quozl
Priority: normal Milestone: 1-firmware
Component: ofw - open firmware Version: Development firmware
Keywords: Cc:
Action Needed: no action Verified: no
Deployments affected: Blocked By:
Blocking:

Description

Startup tests

The hub and a device were attached to the laptop in various ways, then the laptop was started, and ESC pressed on startup sound.

USB FLASH drive

Hub plugged intoDevice plugged intoResult
Port 1Hub port 1General Protection Exception
Port 1Hub port 2ok
Port 1Hub port 3ok
Port 1Hub port 4ok
Port 2Hub port 1ok
Port 2Hub port 2General Protection Exception
Port 2Hub port 3ok
Port 2Hub port 4ok
Port 3Hub port 1ok
Port 3Hub port 2ok
Port 3Hub port 3General Protection Exception
Port 3Hub port 4ok

USB Keyboard or Mouse

Hub plugged intoDevice plugged intoResult
Port 1Hub port 1Error pattern 1
Port 1Hub port 2ok
Port 1Hub port 3ok
Port 1Hub port 4ok
Port 2Hub port 1ok
Port 2Hub port 2Error pattern 2
Port 2Hub port 3ok
Port 2Hub port 4ok

Error pattern 1

Failed to set device address: 3 
Retrying with a delay
Failed to set device address: 3 
Failed to get port status for port 2 
Failed to get port status for port 3 
Failed to get port status for port 4 
USB2 devices:
/pci/usb@f,5/hub@1,0
/pci/usb@f,5/wlan@0,0

Error pattern 2

Failed to set device address: 3 
Retrying with a delay
Failed to set device address: 3 
Failed to get port status for port 3 
Failed to get port status for port 4 
USB2 devices:
/pci/usb@f,5/hub@2,0
/pci/usb@f,5/wlan@0,0

Insertion tests

The laptop was started without any devices attached to the USB ports. Then the hub with a USB FLASH drive was attached. The USB FLASH drive was in the same hub port number as the host port.

ok p2
Unimplemented package interface procedure
Failed to probe hub port ff8ec89c 
Failed to get port status for port 3 
Failed to get port status for port 4 
Failed to probe hub port 1a0 
Failed to get port status for port 3 
Failed to get port status for port 4 
Failed to probe hub port ff8f4a78 
Failed to get port status for port 3 
Failed to get port status for port 4 
Failed to probe hub port ff82d0a8 
Failed to get port status for port 3 
Failed to get port status for port 4 
Failed to probe hub port ff82d188 
Failed to get port status for port 3 
Failed to get port status for port 4 
Failed to make root hub node for port -4917712 
USB2 devices:
/pci/usb@f,5/hub@2,0
/pci/usb@f,5/wlan@0,0
/pci/usb@f,5/hub@2,0/hub@2,0
/pci/usb@f,5/hub@2,0/hub@2,0/hub@2,0
/pci/usb@f,5/hub@2,0/hub@2,0/hub@2,0/hub@2,0
/pci/usb@f,5/hub@2,0/hub@2,0/hub@2,0/hub@2,0/hub@2,0
/pci/usb@f,5/hub@2,0/hub@2,0/hub@2,0/hub@2,0/hub@2,0/hub@2,0
USB1 devices:

Change History

Changed 2 years ago by Quozl

A similar symptom also occurs on XO-1.5, but not on XO-1.75.

Changed 2 years ago by Quozl

Also occurs with a USB Ethernet device.

Also occurs with an early USB FLASH drive that has an embedded hub, only if the device is inserted in the lower right port of the XO-1.

Some deep debugging has shown that when probing the port of the hub, Open Firmware is again loading the usb,class9 fcode driver, which is the hub class driver, which results in the hub being probed again, a recursive behaviour.

Changed 2 years ago by Quozl

  • next_action changed from diagnose to review

A patch is being tested. http://dev.laptop.org/~quozl/q2f12ja.rom is a build with the patch included.

Changed 2 years ago by Quozl

Tested patch in local builds, Q2F12ja, Q3C06je, Q4D16jd.

test XO-1 XO-1.5 XO-1.75
boot to ok no devices ok ok ok
boot to ok with old usb drive port 1 ok ok ok
boot to ok with old usb drive port 2 ok ok ok
boot to ok with old usb drive port 3 ok ok ok
probe and show old usb drive port 1 ok ok ok
probe and show old usb drive port 2 ok ok ok
probe and show old usb drive port 3 ok ok ok
boot to ok with hub only ok ok ok
probe hub only ok ok ok
boot to ok with hub and mouse port 1/1 ok ok ok
boot to ok with hub and mouse port 1/2 ok ok ok
boot to ok with hub and mouse port 1/3 ok ok ok
boot to ok with hub and mouse port 1/4 ok ok ok
boot to ok with hub and mouse port 2/1 ok ok ok
boot to ok with hub and mouse port 2/2 ok ok ok
boot to ok with hub and mouse port 2/3 ok ok ok
boot to ok with hub and mouse port 2/4 ok ok ok
boot to ok with hub and mouse port 3/1 ok ok ok
boot to ok with hub and mouse port 3/2 ok ok ok
boot to ok with hub and mouse port 3/3 ok ok ok
boot to ok with hub and mouse port 3/4 ok ok ok
tiny core linux ok ok n/a
power log collector ok ok ok
power log collector via hub ok ok ok
ping with hub and ethernet port 1/1 ok ok ok
ping with hub and ethernet port 1/2 ok ok ok
ping with hub and ethernet port 1/3 ok ok ok
ping with hub and ethernet port 1/4 ok ok ok
ping with hub and ethernet port 2/1 ok ok ok
ping with hub and ethernet port 2/2 ok ok ok
ping with hub and ethernet port 2/3 ok ok ok
ping with hub and ethernet port 2/4 ok ok ok
ping with hub and ethernet port 3/1 ok ok ok
ping with hub and ethernet port 3/2 ok ok ok
ping with hub and ethernet port 3/3 ok ok ok
ping with hub and ethernet port 3/4 ok ok ok

Overall pass.

Changed 2 years ago by Quozl

http://dev.laptop.org/~quozl/q2f12jb.rom test build for community testing.

Changed 2 years ago by Quozl

Is in Q4D17.

Changed 2 years ago by Quozl

  • next_action changed from review to test in build

One positive test report received from community testing, is all. This change seems risky; we have no idea if devices in the field are happy with this change, until they are hit with it. Q4D17 includes the change, which widens the test opportunities. I'd like to hear more test reports for Q2F12jb and Q4D17.

Changed 2 years ago by Quozl

  • next_action changed from test in build to code

Q4D18 withdrew the svn 3011 change as it broke USB code scanners on XO-1.75 only. USB code scanners continue to work fine on Q2F12jb. Need to debug cause of failure on XO-1.75.

Changed 2 years ago by Quozl

  • next_action changed from code to review

Cause of Q4D17 regression found, an attempt to read a device descriptor larger than the one the device provided ... fixed in svn 3015.

  • tested with Bert's USB drive (#11521) by Mitch,
  • tested with USB 1.1 code scanner by James on XO-1.75,
  • tested with USB hub on XO-1 by James,
  • tested with USB FLASH drive with embedded hub on XO-1 by James.

Changed 2 years ago by Quozl

  • next_action changed from review to add to build

Testing has been adequate.

Changed 2 years ago by Quozl

  • next_action changed from add to build to test in build

Is in Q2F13, Q3C08 and Q4D20.

Changed 2 years ago by Quozl

  • status changed from new to closed
  • next_action changed from test in build to no action
  • resolution set to fixed
Note: See TracTickets for help on using tickets.