libre software meeting 20102010.rmll.info/img/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 ·...

27
Advanced USB 3.0 for Linux @sarahsharp Libre Software Meeting 2010

Upload: others

Post on 07-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

AdvancedUSB 3.0 for Linux

@sarahsharp

Libre Software Meeting 2010

Page 2: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Agenda

● Background● Changes in USB 3.0 communication● Host scheduling● USB Attached SCSI (UAS)

Page 3: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Background

● EHCI handles USB 2.0 devices

● EHCI lets a companion controller(OHCI or UHCI) handle USB 1.1 devices

USB device driver

USB core

EHCI hostcontroller driver

EHCI hosthardware

UHCI hosthardware

UHCI hostcontroller driver

Page 4: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Background

● xHCI handles all device speeds (USB 3.0, USB 2.0, and USB 1.1)

USB device driver

USB core

xHCI hosthardware

xHCI hostcontroller driver

Page 5: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Changes in USB communication

USB 1.1

USB 2.0

USB 3.0

Page 6: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB 2.0 communication

● Four basic endpoint types● asynchronous: bulk & control● periodic: interrupt & isochronous

● max packet size● Single direction

● Only host or device can talk

HostPC

USBdevice

1024bytes

ACK

1024bytes

ACK

1024bytes

ACK

bulkOUTEP

Page 7: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB 3.0 communication

● Still four basic endpoint types● Bi­directional wires added

● Both host and device can talk

● max packet size is the same● Devices/hosts can "burst" up to 16 packets● Faster communication

HostPC

USBdevice

1024bytes

ACK

1024bytes

ACK

1024bytes

ACK

bulkOUTEP

1024bytes

1024bytes

Page 8: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Implications for device driver writers

● Submitting many small transfers doesn't take advantage of bursts● host controller can't group 

packets into bursts

● Larger transfers are better● Submitting lists of buffers 

(scatter gather lists) is best● less processing, less 

interrupts

URB 5URB 4

URB 3URB 2

URB 1

URB

Page 9: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB scheduling

Page 10: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB scheduling

● Scheduling when packets go out over USB wires

packet packet packet packet

packet packet

packet packet packet packet

frame 199 frame 200 frame 201 frame 202

packet packetpacket packet

packet packet

Goodscheduling

Badscheduling

Page 11: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB 1.1 & 2.0 scheduling

● For older host controllers, software (OS)does the packet scheduling● EHCI, UHCI, OHCI

USB device driver

USB core

host controller driver

host hardware

scheduling

Page 12: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB 3.0 scheduling

● For newer (xHCI) host controllers, the hardware does the packet scheduling

USB device driver

USB core

xHCI host controller driver

host hardware scheduling

Page 13: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB scheduling

● Interrupt and isochronous endpoints are polled

● Device specifies minimum polling interval

● e.g. 1ms or 64ms● may specify an alternative interval in an "alt setting"

1ms interval packet

2ms interval

packet packet packet

frame 199 frame 200 frame 201 frame 202

packet packet

Page 14: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB scheduling example

● You have the schedule below, and want to add a new USB device.  Choices:● alt setting 0: polled at 2ms● alt setting 1: polled at 1ms

1ms interval packet

2ms interval

packet packet packet

frame 199 frame 200 frame 201 frame 202

packet packet

Page 15: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB scheduling example

● You have the schedule below, and want to add a new USB device.  Choices:● alt setting 0: polled at 2ms● alt setting 1: polled at 1ms

● Result: alt setting 1 won't fit, choose alt setting 0

1ms interval packet

2ms interval

packet packet packet

frame 199 frame 200 frame 201 frame 202

packet packet

2ms intervalpacket packet

Page 16: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Current way of scheduling

● Drivers pick an alternate setting

● Drivers submit a transfer with a polling interval● if that fails, they pick a 

different alt setting● works for EHCI, UHCI, 

OHCI where schedule is in software

alt setting 11ms interval

submitpacket

FAIL

alt setting 02ms interval

Page 17: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

New way of scheduling

● But schedule in xHCI hardware is set up sooner● picking an alternate 

setting may fail● drivers have to be able to 

handle this

alt setting 11ms interval

submitpacket

FAIL

Page 18: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

More changes in USB scheduling

● USB time is broken up into frames

● 1ms interval● Drivers specify the frame to start the transfer in

● urb­>start_frame● or they can send "ASAP"

1ms interval,ASAP

packet

2ms interval,start frame 200

packet packet packet

frame 199 frame 200 frame 201 frame 202

packet packet

packet packet

frame 203 frame 204

packet

Page 19: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

More changes in USB scheduling

● Drivers can specify the start_frame for every transfer

● EHCI, OHCI, and UHCI will honor that

1ms interval,ASAP

packet

2ms interval,start frame 200thenstart frame 203

packet packet packet

frame 199 frame 200 frame 201 frame 202

packet packet

packet packet

frame 203 frame 204

Page 20: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

More changes in USB scheduling

● Drivers can specify the start_frame for every transfer

● EHCI, OHCI, and UHCI will honor that

● xHCI cannot.

1ms interval,ASAP

packet

2ms interval,start frame 200thenstart frame 203

packet packet packet

frame 199 frame 200 frame 201 frame 202

packet packet

packet packet

frame 203 frame 204

Page 21: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Next GenUSB 3.0 Mass Storage Devices

Page 22: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Old Mass storage devices

● Bulk only Transport (BoT)● only one outstanding SCSI 

command● slow for spinning disks

HostPC

BoTdevice

Setup SCSI command 1

Data for command 1

Setup SCSI command 2

Page 23: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

New Mass storage devices

● USB Attached SCSI (UAS)● multiple outstanding SCSI 

commands● device can reorder 

commands, or transfer part of commands

HostPC

BoTdevice

Setup SCSI command 1

some data forcommand 2

Setup SCSI command 2

data forcommand 1

Page 24: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB Attached SCSI (UAS)

● Problem: How do you tell which SCSI command is being transferred?

● Solution: Tag the command with a "stream ID"

UAS device driver

USB core

xHCI host controller driver

SCSI command TAG SCSI layer

Stream ID

Page 25: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Implications for USB drivers

● Other USB 3.0 devices may need stream IDs● stream IDs can only be used with USB 3.0 

devices

UAS device driver

USB core

xHCI host controller driver

SCSI command TAG SCSI layer

Stream ID

Page 26: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

USB Attached SCSI (UAS)

● Work needed to support UAS:● Need new UAS driver● USB core and xHCI driver 

have to support stream IDs(added in 2.6.35)

UAS device driver

USB core

xHCI host controller driver

SCSI layer

Page 27: Libre Software Meeting 20102010.rmll.info/IMG/pdf/lsm-2010-usb3-advanced.pdf · 2010-07-10 · Libre Software Meeting 2010. Agenda ... in software alt setting 1 1ms interval submit

Questions?