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
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
9490594167
allocator: properly remove memory block from memory graph
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
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
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
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
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
5940dcc0e5
lib/ips/fifo: remove useless code and old cruft
2018-02-14 07:28:25 +01:00
Daniel Krebs
3a8e332b42
lib/vlnv: add != operator and minor cleanup
2018-02-14 07:28:25 +01:00
Daniel Krebs
817d206243
lib/ip: formatting cleanup and more comments
2018-02-14 07:28:25 +01:00
Daniel Krebs
41e90bfda0
lib/ip: cleanup operators
2018-02-14 07:28:25 +01:00
Daniel Krebs
503d6b7f07
lib/ip: cleanup formatting and comments of IpCore's member variables
2018-02-14 07:28:25 +01:00
Daniel Krebs
e93b31bbf1
lib/ips: make use of MemoryManager and new config layout
2018-02-14 07:28:25 +01:00
Daniel Krebs
ef5f6fa3a8
lib/card: use memory manager to store vfio mapping
2018-02-14 07:27:37 +01:00
Daniel Krebs
5b0013b335
lib/card: add IP lookup by VLNV
2018-02-14 07:27:37 +01:00
Daniel Krebs
c3382b9e18
lib/card: pass string as const reference to lookupIp()
2018-02-14 07:27:37 +01:00
Daniel Krebs
95e29f2706
memory-manager: allow for traversing address spaces
...
Major rework of the memory manager. Adds a memory translation class to
resolve addresses across address spaces and extents the memory manager
in order to do so.
2018-02-14 07:27:37 +01:00
Daniel Krebs
035c6f8b2a
lib/kernel/vfio: add function to get size of device memory region
2018-02-14 07:27:37 +01:00
Daniel Krebs
33ba634d87
lib/directed-graph: add findVertex() and minor refactoring
2018-02-14 07:27:37 +01:00
Daniel Krebs
02e873e8ff
lib/ip: remove dependency graph
...
Replace by static list of VLNVs that will be initialized first.
2018-02-14 07:27:37 +01:00
f621cfc984
Merge branch 'fix/directed_graph_loop_detection_bug' into 'develop'
...
directed-graph: fix bug in loop detection
See merge request acs/public/villas/VILLASfpga-code!1
2018-02-14 07:22:59 +01:00
Daniel Krebs
409340433d
enable -Wall, -Wextra and -Werror and fix new errors ( fixes #20 )
2018-02-13 16:04:34 +01:00
Daniel Krebs
6dab50824b
directed-graph: fix bug in loop detection
2018-02-13 09:54:31 +01:00
8206f867a5
logging: use similar log style in all modules
2018-01-31 20:24:11 +01:00
1b6d0d7700
Merge branch 'feature/hw-testing' into feature/cpp ( closes #14 and #15 )
2018-01-30 19:38:49 +01:00
Daniel Krebs
5a7989d552
lib/memory-manager: start implementation using DirectedGraph
2018-01-30 19:16:59 +01:00
Daniel Krebs
ba7531ac46
lib/graph: allow stringifying of vertex and edge derived types
...
This yields nices debug messages and a much nice dump().
2018-01-30 19:16:59 +01:00
Daniel Krebs
22ce8f2b3f
lib/graph: slightly change interface to allow for custom edges
2018-01-30 19:16:59 +01:00
Daniel Krebs
201bbde4b6
lib/graph: move identifiers into classes
2018-01-30 19:16:59 +01:00
293f496db0
pci: add function to get currently loaded kernel driver
2018-01-30 19:09:19 +01:00
Daniel Krebs
27c67f206e
lib/graph: add path-finding with loop detection and corresponding unittest
2018-01-30 17:28:42 +01:00
Daniel Krebs
ec8e9a1cd1
lib/ip-node: remove dangling function prototype
2018-01-30 15:13:23 +01:00