Skip to content

Commit

Permalink
habanalabs: add command buffer module
Browse files Browse the repository at this point in the history
This patch adds the command buffer (CB) module, which allows the user to
create and destroy CBs and to map them to the user's process
address-space.

A command buffer is a memory blocks that reside in DMA-able address-space
and is physically contiguous so it can be accessed by the device without
MMU translation. The command buffer memory is allocated using the
coherent DMA API.

When creating a new CB, the IOCTL returns a handle of it, and the
user-space process needs to use that handle to mmap the buffer to get a VA
in the user's address-space.

Before destroying (freeing) a CB, the user must unmap the CB's VA using the
CB handle.

Each CB has a reference counter, which tracks its usage in command
submissions and also its mmaps (only a single mmap is allowed).

The driver maintains a pool of pre-allocated CBs in order to reduce
latency during command submissions. In case the pool is empty, the driver
will go to the slow-path of allocating a new CB, i.e. calling
dma_alloc_coherent.

Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Oded Gabbay authored and Greg Kroah-Hartman committed Feb 18, 2019
1 parent 0861e41 commit be5d926
Showing 8 changed files with 738 additions and 2 deletions.
3 changes: 2 additions & 1 deletion drivers/misc/habanalabs/Makefile
Original file line number Diff line number Diff line change
@@ -4,7 +4,8 @@

obj-m := habanalabs.o

habanalabs-y := habanalabs_drv.o device.o context.o asid.o
habanalabs-y := habanalabs_drv.o device.o context.o asid.o habanalabs_ioctl.o \
command_buffer.o

include $(src)/goya/Makefile
habanalabs-y += $(HL_GOYA_FILES)
Loading

0 comments on commit be5d926

Please sign in to comment.