[Feature]USB core and xHCI tasks for USB 3.1 SuperSpeedPlus (SSP) support for Alpine Ridge on SKL

Bug #1519623 reported by XiongZhang
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
intel
Fix Released
Undecided
Unassigned
linux (Ubuntu)
Fix Released
Undecided
Tim Gardner
Xenial
Fix Released
Undecided
Tim Gardner

Bug Description

USB core expects the roothubs to support the same requests and descriptors as external hubs. As the two roothubs (USB2 and USB3) are
part of xhci we need to support the descriptor and request changes in USB3.1. In our case we need to:
1)Fill and return the new SuperSpeedPlus USB Device capability descriptor as part of the BOS (Binary device Object Store) descritptor. The speed info needed to fill this descriptor can be parsed from extended capability, supported protocol PSI lists. (see xhci 1.1 section 7.2)
2)Return the new EXT_PORT_STATUS when usb core requests a get_port_status() with new option. Can be read from xhci PORTSC register speed field, and map it to the PSI in the extended capability.Optionally check it from slot output context?
3) Check if usb core stored SSP (SuperSpeedPlus) isoc endpoint companion data with the endpoint and use it to calculate max packets and bandwidth.

Upstream:
kernel:4.4

Revision history for this message
XiongZhang (xiong-y-zhang) wrote :

this is implemented in 4.4 kernel:
1)
 90ec9247808ed6b9f072e2c4021868374b0a6d92
usb: Add USB 3.1 SuperSpeedPlus device capability descriptor
3220befddc0da1f4e09fc790a32a9bd8427e8889
usb: store the new usb 3.1 SuperSpeedPlus device capability descriptor

2)
commit 395f5409ca4336ee6ad461d3e0436bcc2d7c6309
xhci: support new USB 3.1 hub request to get extended port status

3)
commit 5693e0b77f82cddf322bdc3eb50f26d3c707f61e
xhci: Add a SuperSpeedPlus capability descriptor for xhci USB 3.1 roothub
commit 47189098f8bebe4d937945df70d3ca8e6c0b3e4d
xhci: parse xhci protocol speed ID list for usb 3.1 usage

description: updated
Revision history for this message
Tim Gardner (timg-tpi) wrote :

v4.4 is the target kernel for 16.04

Changed in intel:
status: New → Fix Released
Revision history for this message
XiongZhang (xiong-y-zhang) wrote :

v4.6 kernel contain USB 3.1 SuperSpeedPlus (SSP) support
2f6d3b6 xhci: Support extended burst isoc TRB structure used by xhci 1.1 for USB
09c352e xhci: cleanup isoc tranfers queuing code
8ef8a9f xhci: Add SuperSpeedPlus high bandwidth isoc support to xhci endpoints
def4e6f xhci: refactor and cleanup endpoint initialization.
faee822 usb: Add USB 3.1 Precision time measurement capability descriptor suppor
b37d83a usb: Parse the new USB 3.1 SuperSpeedPlus Isoc endpoint companion descri
c8b1d89 usb: Add USB3.1 SuperSpeedPlus Isoc Endpoint Companion descriptor
d785404 xhci: set slot context speed field to SuperSpeedPlus for USB 3.1 SSP dev
5da665f xhci: USB 3.1 add default Speed Attributes to SuperSpeedPlus device capa
2c0e06f xhci: set roothub speed to USB_SPEED_SUPER_PLUS for USB3.1 capable contr
0caf6b3 xhci: Make sure xhci handles USB_SPEED_SUPER_PLUS devices.
0cdd49a usb: Support USB 3.1 extended port status request
9508e3b usb: add device descriptor for usb 3.1 root hub
b231664 usb: show speed "10000" in sysfs for USB 3.1 SuperSpeedPlus devices
5f9c3a6 usb: set USB 3.1 roothub device speed to USB_SPEED_SUPER_PLUS
8a1b272 usb: define USB_SPEED_SUPER_PLUS speed for SuperSpeedPlus USB3.1 devices

one more regression fix that is not yet upsteam, for now only in usb-linus tree:
https://git.kernel.org/cgit/linux/kernel/git/gregkh/usb.git/commit/?h=usb-linus&id=59b9023c356c54e5f468029fa504461d04c0f02b

Changed in intel:
status: Fix Released → In Progress
information type: Proprietary → Public
Revision history for this message
Brad Figg (brad-figg) wrote : Missing required logs.

This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:

apport-collect 1519623

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Tim Gardner (timg-tpi)
Changed in linux (Ubuntu):
assignee: nobody → Tim Gardner (timg-tpi)
status: Incomplete → In Progress
Changed in linux (Ubuntu Xenial):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (7.9 KiB)

This bug was fixed in the package linux - 4.4.0-18.34

---------------
linux (4.4.0-18.34) xenial; urgency=low

  [ Tim Gardner ]

  * Release Tracking Bug
    - LP: #1566868

  * [i915_bpo] Fix RC6 on SKL GT3 & GT4 (LP: #1564759)
    - SAUCE: i915_bpo: drm/i915/skl: Fix rc6 based gpu/system hang
    - SAUCE: i915_bpo: drm/i915/skl: Fix spurious gpu hang with gt3/gt4 revs

  * CONFIG_ARCH_ROCKCHIP not enabled in armhf generic kernel (LP: #1566283)
    - [Config] CONFIG_ARCH_ROCKCHIP=y

  * [Feature] Memory Bandwidth Monitoring (LP: #1397880)
    - perf/x86/cqm: Fix CQM handling of grouping events into a cache_group
    - perf/x86/cqm: Fix CQM memory leak and notifier leak
    - x86/cpufeature: Carve out X86_FEATURE_*
    - Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
    - x86/topology: Create logical package id
    - perf/x86/mbm: Add Intel Memory B/W Monitoring enumeration and init
    - perf/x86/mbm: Add memory bandwidth monitoring event management
    - perf/x86/mbm: Implement RMID recycling
    - perf/x86/mbm: Add support for MBM counter overflow handling

  * User namespace mount updates (LP: #1566505)
    - SAUCE: quota: Require that qids passed to dqget() be valid and map into s_user_ns
    - SAUCE: fs: Allow superblock owner to change ownership of inodes with unmappable ids
    - SAUCE: fuse: Don't initialize user_id or group_id in mount options
    - SAUCE: cgroup: Use a new super block when mounting in a cgroup namespace
    - SAUCE: fs: fix a posible leak of allocated superblock

  * [arm64] kernel BUG at /build/linux-StrpB2/linux-4.4.0/fs/ext4/inode.c:2394!
    (LP: #1566518)
    - arm64: Honour !PTE_WRITE in set_pte_at() for kernel mappings
    - arm64: Update PTE_RDONLY in set_pte_at() for PROT_NONE permission

  * [Feature]USB core and xHCI tasks for USB 3.1 SuperSpeedPlus (SSP) support
    for Alpine Ridge on SKL (LP: #1519623)
    - usb: define USB_SPEED_SUPER_PLUS speed for SuperSpeedPlus USB3.1 devices
    - usb: set USB 3.1 roothub device speed to USB_SPEED_SUPER_PLUS
    - usb: show speed "10000" in sysfs for USB 3.1 SuperSpeedPlus devices
    - usb: add device descriptor for usb 3.1 root hub
    - usb: Support USB 3.1 extended port status request
    - xhci: Make sure xhci handles USB_SPEED_SUPER_PLUS devices.
    - xhci: set roothub speed to USB_SPEED_SUPER_PLUS for USB3.1 capable controllers
    - xhci: USB 3.1 add default Speed Attributes to SuperSpeedPlus device capability
    - xhci: set slot context speed field to SuperSpeedPlus for USB 3.1 SSP devices
    - usb: Add USB3.1 SuperSpeedPlus Isoc Endpoint Companion descriptor
    - usb: Parse the new USB 3.1 SuperSpeedPlus Isoc endpoint companion descriptor
    - usb: Add USB 3.1 Precision time measurement capability descriptor support
    - xhci: refactor and cleanup endpoint initialization.
    - xhci: Add SuperSpeedPlus high bandwidth isoc support to xhci endpoints
    - xhci: cleanup isoc tranfers queuing code
    - xhci: Support extended burst isoc TRB structure used by xhci 1.1 for USB 3.1
    - SAUCE: (noup) usb: fix regression in SuperSpeed endpoint descriptor parsing

  * wrong/missing permissions for device f...

Read more...

Changed in linux (Ubuntu Xenial):
status: Fix Committed → Fix Released
Changed in intel:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.