History log of /seL4-camkes-master/projects/camkes-tool/libsel4camkes/include/camkes/dma.h
Revision Date Author Comments
# b7257d7f 11-May-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes,dma: Support different cache attribs

Support registering DMA memory that is both cached and uncached and then
return memory with correct cache attributes when alloc is called.


# e6dbea22 28-Apr-2020 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4camkes,DMA: Allow multiple allocation pools

Calls to camkes_dma_init with different allocation pools will
add the pools to the allocator to allocate from.


# fbd3eae3 26-Jun-2019 Damon Lee <Damon.Lee@data61.csiro.au>

libsel4camkes: Move ELF section externs to sources

Instead of leaving the ELF section extern declarations in header files
where it could be redefined each time it's included, we move the
declarations to the .c files.


# 3d9f760f 25-Apr-2019 Damon Lee <Damon.Lee@data61.csiro.au>

trivial: style changed files in libsel4camkes

The style checker was only run over the files that were changed in the
refactoring of CAmkES connector template functionality into
libsel4camkes.


# b27be95b 25-Apr-2019 Damon Lee <Damon.Lee@data61.csiro.au>

libsel4camkes: Update DMA init prototype

This commit follows from the previous DMA changes. The commit removes
the to_paddr and to_cptr arguments as there is no longer any need to
pass in functions from component.common.c. The paddr- and cptr-related
functions now exist inside libsel4camkes.


# 87985673 09-Apr-2019 Damon Lee <Damon.Lee@data61.csiro.au>

libsel4camkes: Add dma_frame_t struct to dma.h

This commit adds a new struct to the DMA header in libsel4camkes. The
struct is used to describe the frames backing that are backing a DMA
pool in a CAmkES component.


# 8b2ec3e6 20-Jun-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix licenses


# 4fd601e5 22-Aug-2016 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Access to caps to frames backing dma pool


# 009f61a4 13-Dec-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Remove camkes_dma_page_alloc and camkes_dma_page_free.

These functions have been deprecated for some time and I am not aware of any
outstanding active uses of them.


# 56ea1b20 13-Dec-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Fix: remove references to deprecated functions.


# bacfebce 27-Oct-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Refactored parser init commit.


# 2c005251 11-Mar-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Make the DMA allocator agnostic to page size.

This commit adjusts the API for the DMA allocator to allow the caller to
specify the page size used in the mappings backing the DMA pool. It also allows
the caller to instruct the allocator itself to automatically determine the page
size. The purpose of this is to future proof this code against potential
changes to allow the DMA pool to be backed with large frames. No users are
expected to be manually calling the DMA initialisation function, so this is not
expected to have any user-visible effects.


# 26733ff6 10-Mar-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Use some more attributes to help out fancier compilers.


# 68085cbf 09-Mar-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Mark older DMA functions as deprecated.


# 14afa31e 23-Feb-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Allow page-colocated DMA allocations.

The previous allocation scheme was overly conservative and rounded all DMA
allocations up to page boundaries as a security precaution. This extra step
actually serves no purpose in a system without an IOMMU, where a misconfigured
DMA request is going to access incorrect memory physically anyway. The effect
of this commit should be permitting more DMA allocations with a smaller pool.


# 92178c24 20-Feb-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Add profiling functionality to the DMA allocator.


# d38d8c8e 16-Feb-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Support DMA allocations of greater than 4K.

This commit implements a more complex free list structure in the DMA allocator
in order to locate physically contiguous frames. There is no guarantee
virtually contiguous pages within the DMA pool will be backed by physically
contiguous frames, but if the CapDL initialiser has provided us with this, we
can satisfy caller allocation requests of greater than 4K.


# 2d348014 04-Feb-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Separate IO functionality from DMA.

Prior to this commit, the DMA allocator functions incorrectly presumed that the
user would want to use ps_io functions to lookup DMA pages by their physical
address. These functions are actually intended to be used to lookup the virtual
addresses of memory-mapped IO devices. This commit separates this functionality
into a separate file and extends IO access functionality to cover IO ports as
well. This is primarily for interaction with libplatsupport. If you are not
using libplatsupport infrastructure, it will probably be simply to directly
invoke CAmkES interface functions.


# 7fd4fe5a 27-Jan-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4camkes: Restructure DMA allocator to book-keep in-place.

This commit restructures how the DMA allocator tracks its free list internally,
by using a link-list constructed with pointers in the DMA pages themselves. The
main purpose of this is to have a cleaner API and reduce confusion from callers
and unnecessary memory usage.


# 4add7c49 19-Jan-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Merge DMA support from 'development'.

This commit contains the changes to implement support for DMA as well as some
auxiliary changes to how we implement dataports. Specifically, DMA pools can
now be created as described in the docs and allocated from. Memory allocated
from this pool can be reverse looked up to get its physical address(es).

A linker script is introduced in this commit, which is actually part of the (to
come) support for large frames. DMA pools, stacks, IPC buffers and dataports
all end up in specific custom sections. The dataport change that comes as part
of this commit is that we now define dataports in the connection templates (as
opposed to just declaring them there and then defining them in the component
template). This is a little cleaner, though it doesn't remove all dataport code
from the component template.

As of this commit, the dataport declaration the user sees is only tagged as
weak if they have used the 'maybe' keyword. If this is the case, they are
expected to check at runtime whether the dataport is connected or not.