Daniel Krebs
7bffe82e0e
tests: add (dirty) RTDS test
2018-06-04 14:20:06 +02:00
Daniel Krebs
28143e7188
ips/rtds: add C++ version of RTDS IP
2018-06-04 14:20:06 +02:00
Daniel Krebs
a93278b74e
ips/dma: expose names of its treaming ports
2018-06-04 14:20:06 +02:00
Daniel Krebs
8e63785073
ips/dma: change interface, get byte count from {read,write}Complete()
2018-06-04 14:20:06 +02:00
Daniel Krebs
07137d73e6
lib/ip: extend dump by memory blocks
2018-06-04 14:20:06 +02:00
Daniel Krebs
fcfb3d8020
lib: change include path: must be <villas/...> now
2018-06-04 14:20:06 +02:00
Daniel Krebs
7479675361
ips/intc: remove unused code
2018-06-04 14:20:06 +02:00
Daniel Krebs
2e339b406d
lib/ips: add data fifo IP needed for stream routing
2018-06-04 14:20:06 +02:00
Daniel Krebs
a0c5acce4c
ip-node: implement connect interface and update AxiStreamSwitch implementation
2018-06-04 14:20:06 +02:00
Daniel Krebs
a1daf95202
lib/card: lookup IP by identifier
2018-06-04 14:20:06 +02:00
Daniel Krebs
967e39e36c
ip-node: add implementation of StreamGraph for automatic routing
2018-06-04 14:20:06 +02:00
Daniel Krebs
5f0d181a8e
gitignore: add some QtCreator project files
2018-06-04 14:20:06 +02:00
Daniel Krebs
ff20f624a6
thirdparty: add CLI11 and rang header-only libraries
2018-06-04 14:20:06 +02:00
Daniel Krebs
63df68480f
scripts/hwdef-parse: promote fifo to stream IP and populate all switch ports
2018-06-04 14:20:06 +02:00
Daniel Krebs
3a99bee400
scripts/non_root: also bind via pci BDF
...
Not sure if this is really needed though.
2018-06-04 13:24:57 +02:00
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
24db7ea1c0
tests/dma: update to current progress
2018-05-15 18:04:24 +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
2bfb9e2450
common/memory: expose method to dump memory graph to file
2018-05-15 18:04:24 +02:00
Daniel Krebs
e819829560
directed-graph: add dumping to dot-file (graphviz)
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
6b7d694103
common/BaseAllocator: test allocated memory for accessibility
...
Write to and read-verify allocated memory block when using allocate()
wrapper.
2018-05-15 18:04:24 +02:00
Daniel Krebs
2477ed4b4b
common/memory: provide getPciAddressSpace() for a common PCIe address space
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
cea353aa7f
directed-graph: add getters for vertices of an edge
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
29709aed7a
directed-graph: make compile with C++11 (no C++17 with CUDA)
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
68e5481d97
config: new config for changed bitstream
...
AXI-BAR0 on PCIe bridge now allows access to whole PCI address space.
2018-05-15 18:04:24 +02:00
Daniel Krebs
01803abade
hwdef-parse: parse PCI and AXI BARs
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