Browse Prior Art Database

Method for passing user-space buffers to hardware devices

IP.com Disclosure Number: IPCOM000239756D
Publication Date: 2014-Dec-01
Document File: 3 page(s) / 265K

Publishing Venue

The IP.com Prior Art Database

Abstract

A Multicore processor has specialized I/O hardware accelerators. These accelerator devices works for specialized application like cryptography, pattern-matching etc. The devices often process work units enqueued from user-space programs. E.g., for pattern-matching operations or for cryptographic operations, the user space application program invokes kernel drivers. The device drivers typically get all their memory from the kernel heap (e.g. using APIs such as kmalloc). The application memory buffers carved from kernel provided memory are not guaranteed to be physically contiguous beyond page-size boundary (defined by OS and CPU Architecture). Before using these buffers as request/response to/from the devices, the driver must convert buffer virtual addresses to I/O physical addresses. Further the devices require that the request and response buffer address spaces visible to them must be contiguous (individually). The continuity requirement of I/O physical address for the device means that device drivers cannot directly send the application buffer to the device without taking any extra steps. For each device request/response transaction, the kernel driver allocates DMA-able buffers for request & response. The application provided buffer is copied into a new DMA-able request buffer as shown in figure 1. After the device responds back, the response DMA buffer is copied back to application response buffer. This approach has overhead of additional DMA buffer pool management in kernel and multiple memory copies per device transaction. The solution presents a method to avoid buffer copy operations per device transaction.

This text was extracted from a Microsoft Word document.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 52% of the total text.

Method for passing user-space buffers to hardware devices

Abstract

A Multicore processor has specialized I/O hardware accelerators. These accelerator devices works for specialized application like cryptography, pattern-matching etc. The devices often process work units enqueued from user-space programs. E.g., for pattern-matching operations or for cryptographic operations, the user space application program invokes kernel drivers. The device drivers typically get all their memory from the kernel heap (e.g. using APIs such as kmalloc). The application memory buffers carved from kernel provided memory are not guaranteed to be physically contiguous beyond page-size boundary (defined by OS and CPU Architecture). Before using these buffers as request/response to/from the devices, the driver must convert buffer virtual addresses to I/O physical addresses. Further the devices require that the request and response buffer address spaces visible to them must be contiguous (individually).

The continuity requirement of I/O physical address for the device means that device drivers cannot directly send the application buffer to the device without taking any extra steps. For each device request/response transaction, the kernel driver allocates DMA-able buffers for request & response. The application provided buffer is copied into a new DMA-able request buffer as shown in figure 1. After the device responds back, the response DMA buffer is copied back to application response buffer. This approach has overhead of additional D...