2
0
mirror of https://github.com/m-labs/artiq.git synced 2025-01-23 09:06:42 +08:00
Commit Graph

161 Commits

Author SHA1 Message Date
whitequark
0e68eaa879 runtime: print a heap dump on out-of-memory condition. 2017-04-21 14:48:10 +00:00
whitequark
db494967c5 firmware use Rust 0.18.0. 2017-04-19 09:38:24 +00:00
fe05aede78 firmware: DmaPlayback → DMARetrieve 2017-04-19 11:11:42 +08:00
e8f7f8ef9c DMA: speed up playback
Time reduced from 1.53µs to 1.37µs.
2017-04-19 10:59:12 +08:00
whitequark
41c4de4556 DMA: add API for a much faster replay using handles. 2017-04-18 08:20:12 +00:00
whitequark
c6e8d5c901 runtime: allow setting UART log level explicitly.
This is way more convenient than commenting out parts
of session.rs when debugging.
2017-04-15 08:27:18 +00:00
whitequark
0531dc45c3 DMA: erase trace before re-recording it.
Or we could needlessly OOM replacing a large trace.
2017-04-15 07:48:02 +00:00
whitequark
9dfe9c1248 DMA: improve recording performance.
This commit moves DMA serialization code to the kernel CPU
(to cope with the existence of rtio_output_wide) and batches
the resulting sequences. This results in less data being transferred
between kernel and comms CPUs (24 octets with one pointer before,
18 octets with no pointers now, for the common case of rtio_output),
but most importantly reduces cache flushes, which now happen
once per 64k octets.

On average, it now takes about 15us to record a single RTIO event
in a DMA trace.

Fixes #712.
2017-04-15 07:29:52 +00:00
whitequark
ea753bed17 runtime: advise to set panic_reboot=1 on panic. 2017-04-15 07:29:36 +00:00
whitequark
296dc3b0c4 artiq_coreboot: allow hot-rebooting the device. 2017-04-11 03:24:24 +00:00
whitequark
14ae1cc100 runtime: advance now on DMA replay.
Fixes #700.
2017-04-05 18:34:36 +00:00
5e3aef45dc drtio: support collision/replace + detect sequence errors at satellite 2017-04-06 01:06:56 +08:00
whitequark
391660e545 gateware: simplify the CRI arbiter to use a plain mux. 2017-04-05 15:09:19 +00:00
008678b741 drtio: add infrastructure for reporting busy/collision errors 2017-04-02 23:45:55 +08:00
0a687b7902 drtio: report satellite errors through firmware 2017-04-01 12:18:00 +08:00
whitequark
d04d7ed120 runtime: show a more informative message for interrupted sessions.
Fixes #690.
2017-03-29 03:36:49 +00:00
whitequark
948ed6fb0a Extract core device management interface from session interface (#691). 2017-03-29 03:36:21 +00:00
2c3f720301 runtime: report asynchronous RTIO errors (collision, busy) in log. Closes #681 2017-03-27 17:14:14 +08:00
b74d6fb9ba make collision and busy asynchronous errors, and simplify CPU/gateware handshake for output errors and reads 2017-03-27 16:32:23 +08:00
f5aa73b8fa satman: unbreak after c586035c 2017-03-15 17:26:09 +08:00
whitequark
c586035caa runtime: add an option to reboot after a panic. 2017-03-14 09:02:28 +00:00
whitequark
80c75ed505 firmware: fix for unwinder update. 2017-03-14 08:50:32 +00:00
whitequark
5bbb05362b runtime: update smoltcp. 2017-03-07 11:36:28 +00:00
whitequark
d52723d5bc runtime: allow setting log level in configuration. 2017-03-07 11:36:28 +00:00
whitequark
795a3e24d8 artiq_coreboot: block until hotswap image is actually received. 2017-03-07 11:36:28 +00:00
whitequark
b0cdef3211 firmware: implement hotswap through artiq_coreboot tool. 2017-03-06 16:01:28 +00:00
whitequark
98454e9bda runtime: remove unnecessary dcache flush.
Data cache is write-through, so sending data to DMA doesn't need
a flush.
2017-03-04 09:46:55 +00:00
whitequark
924ae73000 firmware: fix DMA trace alignment and flush caches. 2017-03-04 09:40:22 +00:00
whitequark
30ac42de3f ksupport: fix an exception safety issue.
Raising from inside a recv! will never send an acknowledgement.
2017-03-04 09:40:22 +00:00
1e6a33b586 rtio: handle input timeout in gateware
The information passed by the runtime will be used by the DRTIO core
to poll the remote side appropriately.
2017-03-03 17:37:47 +08:00
whitequark
4f94709e9f firmware: move packet dumps to the DEBUG log level. 2017-03-03 06:11:35 +00:00
whitequark
e8c093deb3 Allow changing runtime log level without recompilation.
This shouldn't affect performance much, as the log crate guards
every log statement with a branch, adding just two instructions.
2017-03-03 06:06:26 +00:00
whitequark
fe77fcc45f firmware: fix a warning. 2017-03-03 05:35:28 +00:00
whitequark
3070a2fac1 runtime: fix more bugs in DMA trace encoder. 2017-03-03 05:15:54 +00:00
0b4922e0f4 dma: request RTIO control 2017-03-01 18:59:45 +08:00
whitequark
a4ece19614 Implement DMA playback. 2017-02-28 21:28:40 +00:00
7481eaff52 moninj: use smaller network buffer 2017-02-27 11:44:29 +08:00
whitequark
88bf7d2233 firmware: specialize protocol read/write functions.
Before this commit, proto::io::{read,write}_* functions were taking
a &mut {Read,Write}. This means a lot of virtual dispatch.
After this commit, all these functions are specialized for
the specific IO trait.

This could be achieved with just changing the signature from
  fn read_x(reader: &mut Read)
to
  fn read_x<R: Read>(reader: &mut R)
but the functions were also grouped into ReadExt and WriteExt
traits as a refactoring.

Initially, it was expected that the generic traits from
the byteorder crate could be used, but they require endianness
to be specified on every call and thus aren't very ergonomic.
They also lack the equivalent to our read_string and read_bytes.

Thus, it seems fine to just define a slightly different extension
trait.

This also optimized the test_rpc_timing test: 1.7ms→1.2ms.
2017-02-26 18:24:37 +00:00
dff23293c7 Merge branch 'master' of github.com:m-labs/artiq 2017-02-27 01:05:40 +08:00
whitequark
5d3b00cf12 Implement recording of DMA traces on the core device. 2017-02-26 02:50:20 +00:00
whitequark
a07bd918f0 firmware: use Rust naming conventions for enum variants. 2017-02-25 22:34:11 +00:00
whitequark
2a81819eb0 firmware: restructure to avoid #[path = "..."] mod ...;
Such code is fragile, introduces mess in dependencies, and
inflates compile times.
2017-02-25 17:54:14 +00:00
whitequark
d04e611232 firmware, compiler: rename rpc functions to be more consistent. 2017-02-25 14:12:58 +00:00
98be556143 drtioaux: fix compiler warnings 2017-02-25 12:18:57 +08:00
5a16660aa2 runtime: new moninj protocol, TCP-based, with DRTIO support 2017-02-25 12:07:00 +08:00
7d568b4bac style 2017-02-25 12:06:12 +08:00
whitequark
13c6e96760 firmware: implement dyld::Library::rebind. 2017-02-25 00:10:40 +00:00
whitequark
04ad267055 firmware: rewrite the dynamic linker in Rust. 2017-02-24 18:57:29 +00:00
whitequark
907589fb58 satman: simplify Makefile. 2017-02-23 10:29:25 +00:00
whitequark
623a605d3b satman: refactor type conversions. 2017-02-23 08:59:27 +00:00