Mutex<Heap>::lock() gives inner mutability so ditch the RefCell that came
from the original Cortex-M code.
Change-Id: Ib0a29069fd63fd87bd94d68439bfeb433c26db8b
GitOrigin-RevId: bbb505f98c8f1614a81090f58f9445a956697690
The preboot code still sends kernel logging to the 16550. A later change
will also port this to OpenTitan or find another alternative.
Change-Id: Ifbf296e2ba9c6b354dd94d4a0640a2105e177fc9
GitOrigin-RevId: 4226974521b31f8ff8cfa21d8d1fcb19290c8265
- the RELEASE setting is a boolean, correct cmake check
- explicitly force log-level=0 & debug=true in cargo profile.dev entries
NB: to switch between RELEASE + non-RELEASE builds do "m clean",
change easy-settings.cmake, then "m kata"
Change-Id: If56cd855a9f30313e264a808c0c12df0532194a0
GitOrigin-RevId: b15be5feba41a19a71ff86f00fee0b7bd0942049
Sprinkle seL4_Yield's in the tx/rx polling loops so other work in the
DebugConsole component happens. This is a band-aid for the driver not
using interrupts.
Change-Id: I600fdc2b01d60b18bb70e80adbfde9b1c348a194
GitOrigin-RevId: f2e90519f53b78a3ee2b42ca4613b1ea34cd4133
Replace LockedHeap with a purpose-built equivalent. This works around
issues where rust_oom was undefined for certain build configs and
facilitates future sel4 integration (e.g. to use dynamically allocated
memory instead of bss).
Change-Id: I54f779ef794104ad1ae95590812d1cd49b4a3734
GitOrigin-RevId: 83474c02e6b6957946fbca4a9aa090bf3c4dbfdc
- add a linked_list_allocator::LockedHeap instance to each component that
might want to allocate memory and init the allocator with a fixed-size
memory block in the component post_init hook
- add an alloc_test shell command that exercises the allocator
This does not dynamically add memory or support sharing memory between
components; this is an intermediate step to simplify bringing in crates
that want to allocate memory (e.g. hashbrown)..
Change-Id: Idaf11fb5d4999218c75bf932133df24de35e3053
GitOrigin-RevId: 7c9b14bf9463239ce030c374b58a140f0835759e
To write s3L4 for OpenTitan matcha, we want to depend on generated C
header files for definitions of MMIO sizes, offsets, masks, bit
meanings, etc.
To make these header files available to the seL4 build, this change adds
a make prerequisite for the kata build to run regtool.py with output
going to out/kata/opentitan-gen.
In CAmkES CMake files, the INCLUDE attribute can be used to add to the
include path, and this change also does that for the UartDriver
component. (The implementation will be left for a later change, since an
initial straighforwrd attempt saw writes still going to the 16550.)
Change-Id: If7e7e206ddcf625b8f5a45dc6486693cab7c51e2
GitOrigin-RevId: 018b9ddf9cde2389fb9f39553095d955705cb7a0
This only serves to confuse the cmake build tools into using the wrong
definitions, instead of the ones used in apps/system/rust.cmake.
Change-Id: Iaed204a8f8a9ae5fc2233dc4f9147ba6cf6a9a25
GitOrigin-RevId: 290682ee7b8eb7ad00a52f72c0f6e3be08e88673
This turns on "fat" LTO for builds even in dev mode so that we can keep our
binaries size down. It's not a total solution, but eliminates the "kitchen sink"
effect that building Rust static libs has, allowing us to keep our dependencies
down a bit.
Change-Id: I5fb071d7cdb7b9964b2af25d8137944593bd065c
GitOrigin-RevId: fe7f105307e042c211be5d031870d6161d71e27c
- new ProcessManager component (aka kata-process-manager)
NB: interfaces/ProcessManagerBindings.h is manually generated by cbindgen
for the moment; e.g.
cargo install cbindgen;
cd components/ProcessManager; cbindgen -c cbindgen.toml \
-o ../../interfaces/ProcessManagerBindings.h kata-proc-common
Change-Id: I153c6b193c6ba8e376b87a2563dc8543753f0b42
GitOrigin-RevId: 18c354f14cbec6ce01c020136fe9aefd88248ee9
- add a SeL4Debug component that wraps seL4DebugPutString and seL4DumpScheduler
system calls that are marked static inline (so not callable from rust)
- connect seL4Debug to the DebugConsole and add a "ps" command to the shell
that uses sel4DumpScheduler to print the tcb's on the console; e.g.
KATA_PROMPT> ps
Dumping all tcbs!
Name State IP Prio Core
--------------------------------------------------------------------------------------
sel4debug:sel4debug running 0x1017e 254 0
sel4debug:fault_handler blocked on recv 0x1046e 255 0
sel4debug:control blocked on recv 0x1046e 254 0
drv:uart blocked on recv 0x11dc4 254 0
drv:fault_handler blocked on recv 0x105d4 255 0
drv:control blocked on recv 0x105d4 254 0
debug_console:fault_handler blocked on recv 0x10840 255 0
debug_console:control blocked on reply 0x12808 254 0
idle_thread idle 0 0 0
rootserver inactive 0x10558 255 0
Change-Id: I48496ec0002e3307aaeb5c779319d4beb87ae56b
GitOrigin-RevId: 8665f609bdb7efd3b814b4f40abf08c5dd1e863d
ML Coordinator needs to be able to load and unload models, which means verifying
and creating any necessary transfer buffers and other data structures.
First draft just keeps track of model references.
ML Coordinator needs to be able to execute models. Actual execution is
abstracted away from ExecutiveInterface.
Deletes fake_executive and moves to this file in the test section, as
this is currently the only user.
Change-Id: Ib2de5bc5761ccffe244e0bc0a02c6d2805cc00c6
GitOrigin-RevId: dc4de0085b36094ec6ac10c3a7f4fe0c8dff1627
Create some common data types and a fake executive. The fake executive
can either return an error (emulating execution failing) or a slice of
memory (emulating a correct result).
Change-Id: Id57f3ea3ee8db64b8921bf7446bcdf143d0daf49
GitOrigin-RevId: e266431d90864c0cd15567221acfa28a02c85a63
This also adds a skeleton for the DebugConsole CLI taking IO from a UART
via some Rust wrapper functions, also defined in this change
(kata-uart-client).
Change-Id: I56856c14992010483da58c45f6550c0a4c9987b0
GitOrigin-RevId: e1b2d65ed3a7f627a9f7377caa407151fc943864
This should give us a root task that simply says "Hello, World!" on start. This
is just a stand-in for what will come next.
Change-Id: I402c311d1c89a047dfaa12ab64d880bb1dea00b7
GitOrigin-RevId: aeeb8bc1f8175888d272ff7283df244fb94cc888