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
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
21333379a9
lib/ips/fifo: fix decision if AXI4 data interface is present
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
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
Daniel Krebs
912c3729d4
lib/ip: improve readability
2018-02-14 07:26:39 +01:00
Daniel Krebs
409340433d
enable -Wall, -Wextra and -Werror and fix new errors ( fixes #20 )
2018-02-13 16:04:34 +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
3047f5bb7a
vfio: only rebind pci device to VFIO driver if not already bound
2018-01-30 19:09:56 +01:00
293f496db0
pci: add function to get currently loaded kernel driver
2018-01-30 19:09:19 +01:00
Daniel Krebs
7582966e16
lib: first draft of memory manager
2018-01-30 15:13:23 +01:00
daniel-k
f14df8aa32
lib/ip: adapt to fit new config layout provided by hwdef-parse
2018-01-23 14:47:44 +01:00
daniel-k
fc98aaecb4
lib/ips/intc: C++-ify interface
2018-01-16 15:07:21 +01:00
daniel-k
e05ff515c7
lib/ips/timer: implement basic functionality
2018-01-16 15:05:37 +01:00
daniel-k
05131258d4
lib/card: use new logger
2018-01-16 14:52:09 +01:00
daniel-k
77135feebc
lib/ips/intc: use new logger
2018-01-16 14:51:45 +01:00
daniel-k
80bc9af0e7
lib/ips/intc: change waitForInterrupt() interface
...
Return -1 on failure, change type to `int`. int/2 bits should still
be enough to track overflowed interrupts.
2018-01-16 14:51:45 +01:00
daniel-k
82204990cd
lib/card: remove unused C code
2018-01-16 14:46:59 +01:00
daniel-k
f987c29d71
lib/ip: change interface: start() -> init()
2018-01-16 14:46:00 +01:00
daniel-k
687f1e5bba
lib/ips/fifo: use std:min in favor of old macro
2018-01-10 15:49:53 +01:00
daniel-k
44e78643ea
lib/log: purge remaining of old logger
2018-01-10 15:49:53 +01:00
daniel-k
09534e83a6
lib/plugin: make type an argument of constructor
2018-01-10 15:49:53 +01:00
daniel-k
3cf50db98d
logging: use new spdlog library in favor of Logger
2018-01-10 15:49:53 +01:00
daniel-k
71a54eeab6
lib/ips: implement fifo driver and adapt test
2018-01-10 11:02:08 +01:00
daniel-k
e2e78cf8b3
lib: minor cleanup
2018-01-10 11:02:08 +01:00
daniel-k
da88b15af3
lib/ip: fail making if configureJson() fails
2018-01-10 11:02:08 +01:00
daniel-k
81db98e448
lib/ip-node: implement loopback mode if available
2018-01-10 11:02:08 +01:00
daniel-k
c710a95352
lib/ip: generalize getting mapped addresses
2018-01-10 11:02:08 +01:00
daniel-k
8345a15db0
lib/card: implement IP lookup
...
Search for an initialized IP by name.
2018-01-10 11:02:08 +01:00
daniel-k
25d5552197
ips/intc: remove early return in start()
2018-01-10 11:02:08 +01:00
daniel-k
f94476b716
ip/node: rename OtherIpNode
to StreamPort
and other
to to
2018-01-10 11:02:08 +01:00
daniel-k
4d3e4dd931
ips: make irqs a list
2018-01-10 11:02:08 +01:00
daniel-k
79f37ce352
ips/switch: add C++ implementation of switch
2018-01-10 11:02:08 +01:00
daniel-k
12024d53e5
lib/ip-node: add IpNode class, IpCore which has streaming ports
2018-01-10 11:02:08 +01:00
daniel-k
f3f0f4d630
lib/ip: pass ip core by reference to factory instead of unique_ptr
2018-01-10 11:02:08 +01:00