Commit Graph

31 Commits

Author SHA1 Message Date
Sebastien Bourdeauducq bc36bda94a perform RTIO init on comms CPU side 2016-12-09 14:16:55 +08:00
Sebastien Bourdeauducq 88ad054ab6 Merge branch 'drtio' 2016-12-03 23:25:17 +08:00
Sebastien Bourdeauducq 617f6897a4 runtime: more concise message 2016-12-03 11:17:47 +08:00
whitequark 5b7e068157 runtime: clear async RPC queue when kernel stops (fixes #631). 2016-11-29 14:00:43 +00:00
whitequark 79e70fa465 runtime: use correct ABI when accepting ARTIQ lists. 2016-11-26 07:25:22 +00:00
whitequark cd7527b701 runtime: print trace level log messages to UART during startup.
There's no way to retrieve them otherwise if the startup kernel
hangs.
2016-11-23 13:53:40 +00:00
whitequark 1d1e821a74 runtime: replace a (deliberate) memory leak with an interner. 2016-11-21 19:47:56 +00:00
whitequark feed91d8b2 runtime: buffer RPC send packets.
This brings mean RPC time from ~45ms to ~2ms.

The cause of the slowness without buffering is, primarily, that lwip
is severely pessimized by small writes, whether with Nagle on or off.
(In fact, disabling Nagle makes it function *better* on many small
writes, which begs the question of what's the point of having Nagle
there in the first place.) In practical terms, the slowness appears
only when writing a 4-byte buffer (the synchronization segment);
writing buffers of other sizes does not trigger the problem.

This all is extremely confusing and the fix is partly palliative,
but since it seems to work reliably and we're migrating off lwip
I think it is unwise to spend any more time debugging this.
2016-11-12 23:06:33 +00:00
whitequark 6fcd57a41a runtime: fix remaining async RPC bugs. 2016-11-01 10:33:57 +00:00
whitequark c1e6d4b67c runtime: fix multiple async RPC bugs. 2016-11-01 06:51:44 +00:00
whitequark 2ac85cd40f runtime: implement prototype background RPCs. 2016-10-29 21:34:25 +00:00
whitequark a8c017bfcc runtime: port ksupport to Rust. 2016-10-16 16:32:43 +00:00
whitequark 557bc4bb56 runtime: remove unnecessary buffering. 2016-10-06 17:25:43 +00:00
whitequark 3e829d0d01 Rust: unborrow cache after kernel stops. 2016-10-06 14:19:12 +00:00
whitequark e92f20546a Rust: implement exceptional RPC replies. 2016-10-06 14:08:02 +00:00
whitequark 226fa723bb Rust: implement exceptional kernel termination.
This also adjusts the way backtraces are serialized by kloader.
2016-10-06 13:42:35 +00:00
whitequark 84214ab0d1 Rust: don't panic when loading a kernel twice in same session. 2016-10-06 12:55:19 +00:00
whitequark 2ae30b5a95 Rust: aggregate kernel CPU log messages and print line by line. 2016-10-06 10:56:19 +00:00
whitequark 3362887d75 Rust: implement receiving for all RPC types. 2016-10-06 10:55:54 +00:00
whitequark 4cfc4e89b9 Rust: add basic RPC support. 2016-10-05 14:15:53 +00:00
whitequark 0a29c00fcc Rust: implement analyzer. 2016-10-05 05:59:38 +00:00
whitequark 0e2cd38135 Rust: set the SOF_KEEPALIVE flag on session sockets. 2016-10-04 06:42:09 +00:00
whitequark 2b3bc30396 Rust: implement startup kernels. 2016-10-04 06:08:08 +00:00
whitequark 0cd87af386 Rust: don't crash kernel CPU when no flash kernel is present. 2016-10-04 05:27:54 +00:00
whitequark 6bbaff81bf Rust: implement idle kernels. 2016-10-04 05:20:56 +00:00
whitequark 30e997f045 Rust: implement idle kernels and session takeover. 2016-10-02 04:37:24 +00:00
whitequark 8bced9dcb5 Rust: implement cache. 2016-10-01 18:24:53 +00:00
whitequark d825393e81 Rust: implement watchdogs. 2016-10-01 16:26:57 +00:00
whitequark 5701b2095b Rust: implement all messages used in the kernel interface. 2016-10-01 16:10:09 +00:00
whitequark b3b1ea71c5 Rust: implement basic communication with kernel CPU. 2016-10-01 04:20:27 +00:00
whitequark 9d00023401 Rust: move a few things around (NFC). 2016-09-29 20:56:35 +00:00