Sebastien Bourdeauducq
542a5f934f
Revert "Require explicitly closing TcpStreams"
...
This reverts commit 671453938b
.
2022-07-08 17:56:12 +08:00
mwojcik
4bdb4c8e11
config: error instead of empty value if key not found
2022-05-19 16:48:59 +08:00
Michael Birtwell
671453938b
Require explicitly closing TcpStreams
...
Instead of automatically closing and draining the TcpStream in the Drop
implementation instead expect the user to call TcpStream::close.
Add close called to all users of TcpStream.
Document the requirement to call close on TcpListener::accept, this seems
to be the only way to get a new TcpStream at the moment.
2022-04-24 10:10:43 +08:00
pca006132
ebfeb1869f
firmware: use &CSlice for lists
2022-03-10 16:30:22 +08:00
pca006132
4132c450a5
firmware: runtime changes for exception
...
Ported from:
M-Labs/artiq-zynq#162
This includes new API for exception handling, some refactoring to avoid
code duplication for exception structures, and modified protocols to
send nested exceptions and avoid string allocation.
2022-01-26 07:16:54 +08:00
Steve Fan
4a6bea479a
Host report for async error upon kernel termination ( #1791 )
...
Closes #1644
2021-12-04 13:33:24 +08:00
occheung
de0f2d4a28
firmware: adopt endianness protocol in artiq-zynq
...
Related:
artiq-zynq: M-Labs/artiq-zynq#126
artiq: #1588
2021-09-10 13:25:12 +08:00
occheung
c800b6c8d3
runtime: update rust alloc, managed
2021-09-10 13:25:09 +08:00
pca006132
8148fdb8a7
use device endian for core device protocols ( #1591 )
2021-01-22 16:33:21 +08:00
Sebastien Bourdeauducq
90017da484
firmware: remove obsolete watchdog code ( #1458 )
2020-10-15 18:38:00 +08:00
Sebastien Bourdeauducq
dfad27125e
runtime: relax/fix TCP keepalive settings ( #1125 )
2019-12-23 19:58:10 +08:00
Sebastien Bourdeauducq
87ce24e867
runtime: refactor startup and RTIO clocking initialization
2019-06-14 15:26:30 +08:00
David Nadlinger
cd7a5a3683
firmware: Fix kernel RPC handling of zero-size values (e.g. empty arrays)
2019-03-31 18:33:44 +01:00
David Nadlinger
b4ddf4c86b
firmware: Make "unexpected reply from kernel CPU" log messages unique
...
This makes it easier to localize issues based on the log output.
2019-03-31 18:31:56 +01:00
whitequark
dd829afebd
firmware: fix another TOCTTOU race in sync/async RPC code.
2018-11-12 15:42:07 +00:00
whitequark
583bba8777
Revert "firmware: workaround for RPC failures"
...
This reverts commit 59033d2588
.
2018-11-12 15:36:36 +00:00
whitequark
0edae64afb
firmware: fix TOCTTOU race in sync/async RPC code.
...
Before this commit, the main loop in session code was laid like:
1. process_kern_queued_rpc
2. process_host_message
3. process_kern_message
If a host message (such as an RPC reply) caused the kernel to exit,
then any async RPCs would not complete, since RunFinished immediately
shuts down the kernel.
Fix this by reordering 1 and 2.
2018-11-12 15:30:59 +00:00
Sebastien Bourdeauducq
59033d2588
firmware: workaround for RPC failures
2018-11-12 19:51:54 +08:00
Sebastien Bourdeauducq
8caea0e6d3
gateware,runtime: optimize RTIO kernel interface further
...
* now pinning (TODO: atomicity)
* for inputs, merge request and timeout registers
2018-11-08 18:29:24 +08:00
Sebastien Bourdeauducq
62642957cd
runtime: fix DRTIO aux channel race condition
2018-09-19 11:16:21 +08:00
Sebastien Bourdeauducq
c8cd830118
drtio: implement get_rtio_destination_status for kernels
2018-09-15 19:11:22 +08:00
Sebastien Bourdeauducq
ae72e3a51e
firmware: add support for moninj and kern_hwreq over DRTIO switching
2018-09-14 20:26:39 +08:00
Sebastien Bourdeauducq
2fff96802b
runtime: remove support for building without RTIO
2018-09-10 23:09:02 +08:00
Sebastien Bourdeauducq
b10d3ee4b4
make RTIO clock switch optional and simplify
...
Kasli no longer has an internal RTIO clock.
Switching clocks dynamically is no longer supported.
2018-05-18 17:41:34 +08:00
whitequark
ca93b94aea
firmware: move config requests to management protocol.
...
They were only in session protocol because of historical reasons.
2018-05-16 14:32:49 +00:00
Florent Kermarrec
7fe49a78d2
firmware/runtime/session: fix compilation when no rtio core
2018-05-15 23:47:47 +02:00
whitequark
9347f6e00c
firmware: use a dedicated error type in the scheduler.
...
After this commit, error handling does not normally allocate
(session::Error::{Load,Unexpected} still allocate, but those two
are very rare).
Good riddance to libstd_artiq.
2018-05-15 14:19:44 +00:00
whitequark
479cb9a857
firmware: use dedicated error types for every protocol and thread.
...
Good riddance to io::Error::Unrecognized.
2018-05-15 13:27:23 +00:00
whitequark
26faaad2b7
firmware: remove io::Result<T, E> in favor of Result<T, impl Fail>.
...
This doesn't yet use impl Fail since std_artiq::io::Error doesn't
impl it.
2018-05-15 08:29:03 +00:00
whitequark
140ca729aa
firmware: rename io::Error::{UnexpectedEof→UnexpectedEnd}.
...
We don't even have files.
2018-05-15 08:27:45 +00:00
whitequark
5ead27f2e1
firmware: eliminate uses of std_artiq::io::{Read,Write} from runtime.
2018-05-14 19:11:57 +00:00
whitequark
cf33ba748d
firmware: eliminate non-io uses of std_artiq from runtime.
...
Just replace these with references to alloc.
2018-05-14 19:11:57 +00:00
whitequark
02b8426f60
firmware: rename libboard to libboard_misoc.
...
By analogy with libbuild_misoc. Hopefully one day it actually gets
moved to misoc...
2018-05-14 18:09:44 +00:00
whitequark
6a10d54432
firmware: migrate rpc_proto to new libio.
...
This closes an old and horrible issue in that some code in ksupport
may implicitly try to allocate and we'll never know until it crashes
at runtime inside liballoc_stub.
This also removes liballoc_stub.
This also removes ReadExt and WriteExt from libproto.
Hooray!
2018-05-14 17:26:59 +00:00
whitequark
09617c9f5e
firmware: migrate session_proto to new libio.
2018-05-14 15:17:32 +00:00
whitequark
873324d52b
firmware: don't truncate queued RPCs ( fixes #985 ).
2018-04-21 19:39:46 +00:00
whitequark
ca419aa3c2
firmware: split out libboard_artiq from libboard.
2017-12-28 07:07:00 +00:00
whitequark
d7cb4963e1
firmware: prepare config block for access from BIOS/bootloader.
...
* remove liballoc dependency from mod config,
* move mod config to libboard,
* move config sector immediately after BIOS sector.
2017-12-27 21:28:40 +00:00
whitequark
5a2cbe7088
runtime: remove borrow_mut!() in favor of backtraces.
2017-12-27 19:15:25 +00:00
whitequark
ad8fcb8b86
runtime: has_rtio -> has_rtio_core.
...
has_rtio is the cfg for the kernel CPU, has_rtio_core is the one
for the comms CPU.
Also remove a few useless #[cfg]s.
2017-11-03 15:59:59 +00:00
whitequark
2404a0d8c8
runtime: allow #[cfg(not(has_rtio))] builds.
2017-11-03 15:49:30 +00:00
whitequark
73c76ebb9a
firmware: eliminate most transmutes and document the rest. NFC.
2017-10-02 03:09:46 +00:00
whitequark
c00b3fe8cd
firmware: update smoltcp.
2017-09-24 22:57:27 +00:00
Sebastien Bourdeauducq
8399f8893d
add kernel access to non-realtime SPI buses ( #740 )
2017-06-18 12:45:07 +08:00
whitequark
b913d1d6f2
runtime: make a copy of startup/idle kernel firmware before loading.
...
Fixes #716 .
2017-04-21 16:46:40 +00:00
whitequark
0e68eaa879
runtime: print a heap dump on out-of-memory condition.
2017-04-21 14:48:10 +00:00
Sebastien Bourdeauducq
fe05aede78
firmware: DmaPlayback → DMARetrieve
2017-04-19 11:11:42 +08: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