Skip to content

Transfer USB OHCI data via subsystem interface (SIF) DMA #17

@frno7

Description

@frno7

USB OHCI bounce buffers are currently allocated in input/output processor (IOP) local memory. This simple approach supports basic USB devices such as keyboards, but there are two severe drawbacks:

  1. IOP local memory is limited to 2 MiB, of which only 256 KiB is available for all connected USB device drivers in total. See the implementation details in commit e85d170. Many complex USB device drivers need much larger buffers to operate. For example, commit 0b3a20c reduces the memory requirements for wireless rt2x00 devices. In addition, mass storage device drivers may busy-loop waiting for buffer memory to become available. This is inefficient and a potential deadlock.

  2. Bounce buffers for USB OHCI data is very slow, and relies on misuse of kernel interfaces. The drivers drivers/usb/host/ohci-sm501.c and drivers/usb/host/ohci-tmio.c seem to do this too, and they appear to be unmaintained.

Is it possible to transfer USB OHCI data via subsystem interface (SIF) DMA, for main memory buffers?

See also #2 and #11.

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is neededquestionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions