1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00
Commit graph

315 commits

Author SHA1 Message Date
Daniel Krebs
5097827757 fix include paths, use <villas/...> style 2018-06-04 13:24:57 +02:00
Daniel Krebs
c15189b74b common/memory: implement freeing for LinearAllocator
This is still very simple. Only really free memory, when all allocation
have been deallocated so we only need to keep track of the current
number of allocations.
2018-05-16 11:27:03 +02:00
Daniel Krebs
d2384abb9d cmake: only build GPU library if CUDA is present 2018-05-16 10:58:18 +02:00
Daniel Krebs
13fd3f3c2a gpu: implement basic GPU plugin that can do DMA to and from its memory
Using CUDA, memory can be allocated on the GPU and shared to peers on
the PCIe bus such as the FPGA. Furthermore, the DMA on the GPU can also
be used to read and write to/from other memory on the PCIe bus, such as
BRAM on the FPGA.
2018-05-15 18:15:17 +02:00
Daniel Krebs
7dcdfaccd9 ips/dma: let user deal with making memory accessible to DMA
It is probably too costly to do (and verify) it on every read
or write. Furthermore, the user knows better how to make a certain
memory available to the DMA.
2018-05-15 18:04:24 +02:00
Daniel Krebs
f823dde0f4 card: don't try to create a VFIO mapping if IOMMU is disabled
In this case, VFIO cannot create DMA mappings.
2018-05-15 18:04:24 +02:00
Daniel Krebs
f644a9faa8 ips/pcie: move BAR0 mapping from card into PCIe IP 2018-05-15 18:04:24 +02:00
Daniel Krebs
89b5169a6e ips/pcie: parse AXI/PCI BARs and create mappings to/from PCIe address space
This is used for translations that don't use VFIO which used to bridge
the PCIe address space by creating direct mappings from process VA to
the FPGA. When we want to communicate directly via PCIe without the
involvment of the CPU/VFIO, we need the proper translations that are
configured in the FPGA hardware.
2018-05-15 18:04:24 +02:00
Daniel Krebs
364b137156 fpga/card: make pci device a class member (needed later) 2018-05-15 18:04:24 +02:00
Daniel Krebs
8f3833bc73 ips/dma: rename pingpong to memcpy and always connect loopback 2018-05-15 18:04:24 +02:00
Daniel Krebs
c818c242f3 kernel/pci: fix unitialized memory 2018-05-15 18:04:24 +02:00
Daniel Krebs
ad820a3618 kernel/pci: parse BAR regions 2018-05-15 18:04:24 +02:00
Daniel Krebs
1b2e7d312e common/memory: add host DMA memory allocator using udmabuf 2018-05-15 18:04:24 +02:00
Daniel Krebs
1470490747 common/memory: provide findPath() to get a path of address spaces 2018-05-15 18:04:24 +02:00
Daniel Krebs
218008955e common/memory: fix memory translation merging 2018-05-15 18:04:24 +02:00
Daniel Krebs
105f47d2d0 common/memory: add check-callback to getPath() to select desired path
This is a workaround until we have a better heuristic (maybe shortest
path?) to choose between multiple paths in the graph. Since the (abstract)
graph has no idea about memory translations, getPath() may even yield
paths that are no valid translation because a pair of inbound/outbound
edges must not neccessarily share a common address window, but from the
perspective of the abstract graph present a valid path.
The callback function is used by the MemoryManager to verify if a path
candidate represents a valid translation.
2018-05-15 18:04:24 +02:00
Daniel Krebs
3f71793327 gpu: add gdrcopy submodule 2018-05-15 18:04:24 +02:00
Daniel Krebs
d81fc6fe11 gpu: add empty library for GPU-related stuff 2018-05-15 18:04:24 +02:00
Daniel Krebs
9490594167 allocator: properly remove memory block from memory graph 2018-05-15 18:04:24 +02:00
Daniel Krebs
5b8f573337 json: parse 64bit numbers, this is required for numbers > 2^31
Our current JSON library jansson only parses signed integers, so
it cannot correctly parse numbers between 2^31 and 2^32 into a
32 bit type.
2018-05-15 18:04:24 +02:00
Daniel Krebs
c3993a22c6 vfio: IOMMU group is always 0 if no IOMMU is present 2018-05-15 18:04:24 +02:00
Daniel Krebs
80386d1085 vfio: correctly set container on group 2018-05-15 18:04:24 +02:00
Daniel Krebs
b6ff452e53 vfio: minor refactoring 2018-05-15 18:04:24 +02:00
Daniel Krebs
94ba899b21 vfio: track if IOMMU is enabled to prepare for non-IOMMU mode 2018-05-15 18:04:24 +02:00
Daniel Krebs
1f42f5bb63 common/cmake: add spdlog include and compatibility include (villas/...) 2018-05-15 18:03:36 +02:00
Daniel Krebs
9870749546 lib/common: move plugin, utils and memory stuf into common library 2018-04-23 10:07:40 +02:00
Daniel Krebs
3e505c74bf ips/bram: add block RAM IP and use it with DMA test 2018-04-13 15:35:41 +02:00
Daniel Krebs
5242b87e4c lib/memory: rework allocators to make them extensible and more abstract
This is change renders memory allocators only dependend on an address
space id that they are managing, allowing easy implementation of other
algorithms and instantiation in memory IP blocks.
2018-04-13 15:35:41 +02:00
Daniel Krebs
ae2bd2a41d lib/ip: alias type for memory block name and cache addres space IDs in IP 2018-04-13 15:35:41 +02:00
cc3e042949 Merge branch 'develop' into 'feature/packaging'
# Conflicts:
#   CMakeLists.txt
2018-04-05 11:43:33 +02:00
3f5bef34b3 added pkg-config file and CMake configuration for building RPM packages 2018-04-05 11:29:16 +02:00
Daniel Krebs
8954e65b4f kernel/vfio: some more cleanup 2018-03-26 16:45:54 +02:00
Daniel Krebs
192aa10627 kernel/vfio: fix check for vfio extensions 2018-03-26 16:17:51 +02:00
Daniel Krebs
ce7e6b36d5 kernel/vfio: check if all required kernel modules are loaded 2018-03-26 16:17:44 +02:00
Daniel Krebs
507ea77ad6 ips/dma: add (simple) DMA driver 2018-03-26 16:17:26 +02:00
Daniel Krebs
4f6694420f lib: remove old and unused C files 2018-03-26 16:17:26 +02:00
Daniel Krebs
f025f5dcc7 lib/ip: read base addresses from JSON into unsigned integer
This caused sign extension for addresses with the MSB set which is
obviously wrong since this is an address and not a number. With
Jansson, there seems to be now other way since it only supports
reading (signed) integers.
2018-03-26 16:17:26 +02:00
Daniel Krebs
aa1592ae2b utils: read_random() now returns the number of bytes written 2018-03-26 16:17:26 +02:00
Daniel Krebs
2724622787 kernel/pci: make some arguments const and fix debug output 2018-03-26 16:17:26 +02:00
Daniel Krebs
60882f1086 lib/memory: implement memory handling with allocators and blocks
This commit is 2/2 of a series of patches and not working on its own.
2018-03-26 16:17:20 +02:00
Daniel Krebs
b01a50184c kernel/vfio: port to C++
This commit is 1/2 of a series of patches and not working on its own.
2018-03-26 16:16:42 +02:00
Daniel Krebs
64a89c2981 lib/ip: add debug output for 2-stage initialization 2018-02-14 16:45:41 +01:00
Daniel Krebs
676fd9171c lib/ip: make logger a class member of IpCore
Logging is used everywhere and there's no justification of the clutter
and runtime overhead of `aut logger = getLogger();` everywhere.
2018-02-14 16:04:33 +01:00
Daniel Krebs
aa2b0b324f lib/ips/pcie: use cached address space id and supply interface to create mapping 2018-02-14 14:34:03 +01:00
Daniel Krebs
36259d00e0 lib/ip: save address space ids for each bus master interface 2018-02-14 14:34:03 +01:00
Daniel Krebs
5d99f11a34 lib/ip: move definition of getBaseAddr() back to header
This is a one-liner, so IMO increases readability.
2018-02-14 14:34:03 +01:00
Daniel Krebs
e8ef3e4380 lib/memory-manager: pass strings as const reference 2018-02-14 14:34:03 +01:00
Daniel Krebs
6cb3b77c7a ips/intc: don't fail if setting IRQ affinity is not possible
This is the case when the application is not executed as root which is
now possible, with the drawback that we cannot set the IRQ affinity
anymore.
2018-02-14 14:32:07 +01:00
Daniel Krebs
e2ce250288 lib: remove leftover (warning) compiler options
These are now set in the root CMakeLists.txt
2018-02-14 10:06:55 +01:00
Daniel Krebs
5940dcc0e5 lib/ips/fifo: remove useless code and old cruft 2018-02-14 07:28:25 +01:00