Commit Graph

123 Commits

Author SHA1 Message Date
Adam Jesionowski
d803859470 Merge "Re-map SMC UART and PLIC."
GitOrigin-RevId: 04a0dadc27218e9dfba4440c42630a5b34ab0c56
2022-10-06 18:38:42 +00:00
Lun Dong
0d610d1ca6 MLCoordinator: Increase ITCM size to 1M
Increase ITCM size to 1M.

BUG: 214092253
Change-Id: I6762b5b12ea268c43f558a31d8fce3725cb2bf22
GitOrigin-RevId: 6b520a0c77d33c38bf774b127a1cc76d5f7165fd
2022-10-06 18:38:35 +00:00
Adam Jesionowski
4ed5fc91fd Use CSR initialization for clearing ITCM.
Clears the ITCM in one go before loading an ELF file using the
hardware initialization CSRs.
DTCM is not cleared as it's temporarily larger than the CSRs can fit.

Tested manually.

Change-Id: Ie4620508404cebc8724771eb579c873fcc0cf0ee
GitOrigin-RevId: ef5de7003c22a1871ab0f74a23fce34593b73fe1
2022-10-06 18:38:28 +00:00
Marcin Witkowski
af833e8d19 sel4-sys: fix x86_64 target
There is small caveat, as the scratch register had to be
changed (rbx -> r14) as llvm is using it _for something_.
In practice, it should not change anything, though.

sel4test test suites with MCS disabled are passing.
There is bug in mainline with doesn't allow to compile
seL4 kernel with -DLibSel4FunctionAttributes=public so
MCS enabled kernel cannot be tested.

Change-Id: I66271277ceb6d6242ddec1225590f8911f09e946
GitOrigin-RevId: ca33ffff9ed9e52ed101270feb836d33f7a69d00
2022-10-06 18:38:22 +00:00
Marcin Witkowski
679f4e7acb sel4-sys: add support for aarch64
Add file with basic definitions needed for aarch64 target and
reorganize ARM files a bit.

Change-Id: I50336b2271bcc9ba63bcf48ca65d79ecca401f13
GitOrigin-RevId: 2b0143ebaaafdabb02a3b68da695d65b17e5a303
2022-10-06 18:38:15 +00:00
Marcin Witkowski
28f8a9d63d sel4-sys: fix aarch32 target
This fixes compiling and using sel4-sys for arm32 architecture --
tested on sabrelite seL4 taget.  There is some #[cfg(...)] ifology,
but that maybe could be partially moved to Cargo.toml using
feature dependency.

To fix TLS there is need to pass some rustc flags, but it seems that
it's impossible to do with build.rs, so currently it's only passed
by CMake when building for sel4test.

Additionally, the order of XML files had to be changed as the
syscalls identifiers were generated in wrong order.

Change-Id: I94d65284989b0e99d7b1843165ec88aa1a994be3
GitOrigin-RevId: b39b93e534a2df2b0b141f1b0dafa2f963827c28
2022-10-06 18:38:08 +00:00
Sam Leffler
9d2f298efa Add sel4-config build helper for syncing crates to an seL4 kernel build.
sel4-config is a build helper for keeping a crate's features in sync
with an seL4 kernel. sel4_config::get_sel4_features parses a gen_config.h
artifact from an seL4 build and returns the intersection of the feature
set with the features listed in the caller's Cargo.toml.

Change sel4-sys to use sel4-config to collect features (instead of
depending only on features from Cargo.toml). sel4-sys finds the directory
with kernel artifacts using an SEL4_OUT_DIR environment variable. If
that's not set it falls back to ${ROOTDIR}/out/kata/kernel.

Change workspace crates to use resolver="2" to deal with cargo's
mishandling of dependent features (target build of serde polluted by
std build-dep indirect through cargo_toml).

While here make sel4-sys fall back to ${ROOTDIR}/kata/kernel when SEL4_DIR
is not set in the environment.

Change-Id: I47cf2eab4aa8cd2e502f741738f587c222e94716
GitOrigin-RevId: b661f0b78c0bfe70861965a420d25add8a128cb7
2022-10-06 18:38:00 +00:00
Sam Leffler
164a27b601 sel4-sys: documentation cleanups
Change-Id: Ic6a2440c492f2c1ca5a034cf2abfe4015ce3deaa
GitOrigin-RevId: 97ede65dfb940af050cbb7e5e9a4e99703ab7931
2022-10-06 18:37:52 +00:00
Sam Leffler
36f2577a40 rust.cmake: fixups
- add a default TARGET argument for RustAddLibrary and remove TARGET
  params from the calls--we were already overriding any specified
  TARGET and all the specified TARGETS had bitrot'd
- make CARGO_OPTIONS a CACHE variable so it's scope-independent and
  set the variable to avoid duplicate options (which cargo rejects)

Change-Id: I37eaa421d99834deeb87242aa9acea7e49bed8e3
GitOrigin-RevId: c667372e2961cd052b358abce9602cc888e46daf
2022-10-06 18:37:45 +00:00
Sam Leffler
840c348e94 rust.cmake: force Rust TLS model to local-exec
Rust's tls-model must be consistent with what CAmkES uses or the ipc
buffer used by sel4-sys for system calls will not be found.

Change-Id: I79fde1c08013544959ca7d037c806ce2093391f8
GitOrigin-RevId: 1da18875c28107ca2dab127990cd973b4ffafb6f
2022-10-06 18:37:38 +00:00
Sam Leffler
222aeda532 sel4-sys: use static_assertions
- use the static_assertions crate instead of the hand-rolled hack
- set edition (worked before only 'cuz there were no dependencies)

Change-Id: Iad7ee4ec16e7c8a9fd5d97963e0b6b465a18c559
GitOrigin-RevId: 599eb6e6c154118fe4967edd32369bc69c9c4faa
2022-10-06 18:37:30 +00:00
Sam Leffler
8d7b9fecf7 processmanager: enable seL4 MCS support
Change-Id: Ifa716124c0f965c48375c2fd8944a4134d3a8306
GitOrigin-RevId: 5f723fa77db0c2ff7d63b5470ec09f8da8d2f1e5
2022-10-06 18:37:24 +00:00
Adam Jesionowski
4db610b909 Merge "Add continuous run mode."
GitOrigin-RevId: 64cd0a116569996c4573d6bb8f11d29644678de3
2022-10-06 18:37:16 +00:00
Adam Jesionowski
17ad8e19ef Merge "Rename kata-ml-core kata-vec-core."
GitOrigin-RevId: 061514fe640b164bb9206b477c8d6e46aa2e5fd2
2022-10-06 18:37:08 +00:00
Sam Leffler
3c29f1cd57 sel4-sys: fix MCS support for risc-v
- add missing MCS defs needed by kata-os-rootserver
- add arch object types to seL4_ObjectType so it effectively replaces
  seL4_ArchObjectType
- add seL4_ObjectTypeCount so kata-os-rootserver can construct
  CDL_ObjectType like the C code
- add trait to convert seL4_ObjectType -> seL4_Word for passing
  syscall arguments
- fix feature flag check

Change-Id: Ia4f8656c360aee4e792dca9b55c4d55cac7f43a8
GitOrigin-RevId: 101fe3d373f1179ba8d64d7536f360a7d5723d9e
2022-10-06 18:37:00 +00:00
Sam Leffler
b5a2cdb8a7 Merge "processmanager: add MCS config knob"
GitOrigin-RevId: 15bb0b52de990f0c556fc577ad0c902750d30ed9
2022-10-06 18:36:51 +00:00
Adam Jesionowski
acdd562e40 Implement Rust MLCore driver and remove C driver.
This change adds the kata-ml-core crate. vc_top is generated
programatically, with the script going to be reviewed next if the format here
looks good. The library replaces the VectorCoreDriver c-code.

Change-Id: Id3f083e2498ea29481db49af5e87d47fe8414a71
GitOrigin-RevId: 40d43b0288e995d215997fc8973e18a41a4d5844
2022-10-06 18:36:43 +00:00
Sam Leffler
a9bdb64616 system.camkes: track flash layout change for kata-os-rootserver
Change-Id: I975ab1278e3552ffff91029fd10e5c214bafaabf
GitOrigin-RevId: c03f2465562c9f5e103b3dac6857fbdfabb18e29
2022-10-06 18:36:36 +00:00
Sam Leffler
75ca0a4254 sel4-sys: expose struct internals for generated shared types
Make the structs generated for shared types expose access to the internal
seL4_Words. This is important for capdl parsing that had no way to
convert CDL_CapData_Guard to an seL4_Word (for passing to the kernel).

While here do some minor cleanups of generated code (there are many
opportunities).

Change-Id: I179df84f3e863da4a82675a989c4faeb38f3f669
GitOrigin-RevId: d5ab16a05ab9e85ee45227278c7a776f77821369
2022-10-06 18:36:26 +00:00
Sam Leffler
0548098405 sel4-sys: fix pointer mutability in syscall stubs
Change-Id: I2c3139f7c3fb0d0390970f0a388a8ee5bc692bd3
GitOrigin-RevId: ac3853a5ea171e9948aad70b036757ece1aea657
2022-10-06 18:36:16 +00:00
Sam Leffler
06f2d60e94 sel4-sys: fix seL4_BootInfo definitions
- do not pack struct's, the C code does not
- replace the explicit padding in seL4_UntypedDesc (which was wrong) with the rust alignment idiom
- correct initThreadCNodeSizeBits type
- add extended header defs

Change-Id: I4a3fcbe470dd0a18b3c9b1ccf8af9634076e89fb
GitOrigin-RevId: f99eeed563d2d430381f0ad1a5fbe096a13c68f0
2022-10-06 18:36:09 +00:00
Sam Leffler
1048e6f765 sel4-sys: fix invocation label numbering
Cannot assigned field numbers to the enum members; must let the
compiler do this based on the kernel configuration. Fixes numbering of
architecture-specific labels (e.g. RISCVUnmap).

Change-Id: Ie38fad38fe66c8cc8ddb460ff7c851140b6b9d25
GitOrigin-RevId: 5f7fc5be679aa9bfed39293cd08dfaead0d3d07a
2022-10-06 18:36:01 +00:00
Sam Leffler
c36bae9f1f sel4-sys: merge more stuff from capdl
Change-Id: If7a7b4ab4e6fee1d0df3fd5f6e84ccdfaca6275b
GitOrigin-RevId: 2db9e128e347c19030d280141949e4831681e6c7
2022-10-06 18:35:54 +00:00
Sam Leffler
87caf7e4a8 sel4-sys: add helper for seL4_UntypedDesc
Change-Id: I2bb3d0c5278d316ed02eecf7385e80f769dbad4d
GitOrigin-RevId: 185f323a36b70c3d15751b3bab090742fb2e367d
2022-10-06 18:35:46 +00:00
Sam Leffler
82ed381ddb sel4-sys: change syscall stubs to return seL4_Result
Change-Id: I60e53a7ab8a96bddc0833aeb581f8bbecc8e20d5
GitOrigin-RevId: 5ee752094a7562c0e07b5abb22b5fc4fac3e7294
2022-10-06 18:35:39 +00:00
Sam Leffler
f31340b0bc sel4-sys: root thread slot assignments are const, not static
Change-Id: I7ac579a313f94fa4c194f1a608ca3098f792aab0
GitOrigin-RevId: 9bdb59a84dd54aff0a4ce074cf5b127c0fd8b658
2022-10-06 18:35:32 +00:00
Sam Leffler
77f71b6de7 Fix rust build breakage caused by bare-io package being yanked.
Didn't find an explanation for why all versions of bare-io were yanked
but core2 has the Cursor support and is by the same author.

Change-Id: Id27adaa568a8e1b7b5825c8f81aa489a96675969
GitOrigin-RevId: 7fb8950938c9536a9c795b246d240fca756b3499
2022-10-06 18:35:19 +00:00
Adam Jesionowski
39f9eac9c3 Unify DTCM and mem sections.
Move getting the return code and fault registers into Rust and out from
the C driver. This means extending the DTCM to cover memory previously
covered by `mem`.

Change-Id: I9d1ad8e9823445ad7dd476ef05f128a29567999b
GitOrigin-RevId: 21bc1ee544d39d6b4a2ff963aaae7c145fdd7fa9
2022-10-06 18:35:08 +00:00
Adam Jesionowski
3185f9f503 Load ELF in MLCoordinator.
Rather than using the Renode ELF loader, this CL moves that capability
into the ML Coordinator. The ELF is memory mapped in eflash instead. We
create MMIO buffers for the MLCoordinator to access. The ELF information
is gathered from the header. The ITCM and DTCM data is copied over to
the vector core.

Next steps are to integrate the load with the execute and to re-map the
return codes and fault registers into Rust code.

Change-Id: I3fc266feb262966318bb451888df146703a03579
GitOrigin-RevId: 8db55b58f86918b8c37d436f1d9f359afdd2a3ea
2022-10-06 18:35:00 +00:00
Julian Mullings-Black
3bda869f20 Remove symlink to seL4 kernel for sel4-sys build
- delete the symlink called "seL4"
- remove the manually specified SEL4_DIR environment variable from
Cargo.toml and move to .cargo/config.toml

bug: 202428321

Change-Id: I4f54b730e627a8445560e0e5e7bc056ab7e19062
GitOrigin-RevId: 17743c7034a37ac2dc0d036f405096213888f584
2022-10-06 18:34:51 +00:00
Cindy Liu
b620ca4c74 Merge "kata:VectorCoreDriver: Read vector core return code and fault register"
GitOrigin-RevId: 105a1d3296ae2e255326a9370428ace309b331f2
2022-10-06 18:34:38 +00:00
Matt Harvey
05becc9125 Loop in UART driver rx_watermark until rx_empty
If rx_buf filled during the handling of an rx_watermark with the FIFO
nonempty, the rx_watermark would be acknowledged, and there would be no
subsequent interrupt to post to the semaphore blocking the next receive.
(Non-rate-limited ZMODEM uploads easily caused this condition.)

This change ensures each handling of an rx_watermark interrupt
completely empties the FIFO. It is likely stopgap until the simulated
UART can provide an rx_timeout interrupt.

Change-Id: If828bac470ee0e667e0e011b11a7a9aee1d47210
GitOrigin-RevId: 7123bcb0fcca9e39c35f4b67088b581cdf2fb50d
2022-10-06 18:34:30 +00:00
Matt Harvey
6f942b860a Merge "Makes UART driver never read FIFO_STATUS.RXLVL"
GitOrigin-RevId: 3ccf8d334a7e73c5647a9733cde9d2cea94c568a
2022-10-06 18:34:20 +00:00
Matt Harvey
61fbe78415 Merge "Removes extra nesting around LOCK blocks"
GitOrigin-RevId: ced5b4310539398d3425b43fe0b66e35ad5d73b2
2022-10-06 18:34:11 +00:00
Matt Harvey
31946b70ed Ignores __pycache__ files
sel4-sys has been producing __pycache__ files in the source tree, as the
Python interpreter normally locates them next to the corresponding
sources.

This change ignores them, following the precedent set for Rust target/
directories.

Change-Id: Iac2e4c14788f13e1844c1241764918628226aedb
GitOrigin-RevId: 4d4a9f95698d4d5d0fd36996cc154300573adfc8
2022-10-06 18:34:04 +00:00
Matt Harvey
46260515d5 Merge "UART driver additional check for rx_empty"
GitOrigin-RevId: a800f10ebaa2759bcab14ca0a8da49350f54a6f9
2022-10-06 18:33:53 +00:00
Matt Harvey
201f5cf609 Merge "Nits from change 11042"
GitOrigin-RevId: d01d882d7b46ef080e509c153e5f690a9bd68a8b
2022-10-06 18:33:39 +00:00
Matt Harvey
97fccf9c95 Forces logging off during ZMODEM uploads
With logging on, the Rust logger trace messages do indeed cause the
sender to abort near the beginning of the upload.

Change-Id: I9ed150db1ad557034d1aefcc99385d771be3edd5
GitOrigin-RevId: 3815d6b21db1dc4978b19fc9b4307007d03e4b12
2022-10-06 18:33:31 +00:00
Matt Harvey
c26d79fff8 Makes ZMODEM crate use BufRead
Using a buffered reader instead of the byte-at-a-time implementation
avoids doing a syscall for each byte.

Change-Id: Ia7bc42e4836593f358ff964962c910f8c94b6f8e
GitOrigin-RevId: e70697d398b07d6de6f03d1d0a4b5204139bc59a
2022-10-06 18:33:20 +00:00
Sam Leffler
a91f8f7916 kata-proc-interface: marshal bundle_id params correctly
Over-optimized the marhaling logic--we Need to convert &str's to CString's
to get the trailing \0 (same lesson learned doing StorageManager).

Change-Id: I97e8d35947dcb32989dc68f11dd422433c00aa02
GitOrigin-RevId: c775bfc3c568ee3dcae32928a422c5178495e77f
2022-10-06 18:33:07 +00:00
Sam Leffler
0e3ca70769 sel4-sys: fix reference to __sel4_ipc_buffer
Change-Id: I6521cfc2693b949ca2f288ac4465bd5032ecaf26
GitOrigin-RevId: bb9bc2359a57d62d75d250861a0c128218c333f5
2022-10-06 18:32:59 +00:00
Sam Leffler
3f4e3fb7f0 Merge changes I3cf10baa,I0062e20b
* changes:
  kata-storage-interface: add back From trait to streamline return processing
  Revert "StorageManager: streamline kata_storage_* routines"

GitOrigin-RevId: 051c4f2b1529e448f70acc4d4e2779f4d9c50e70
2022-10-06 18:32:51 +00:00
Sam Leffler
e23e5907d0 Merge changes Ic0ca4ab4,If1c494aa,I56701b4a,Ia7ff0097,I13812a9f, ...
* changes:
  Replace SeL4Debug with direct syscalls.
  sel4-sys: fix conditional syscall numbering
  sel4-sys: use target_arch &co to select target architecture
  kata-os-common: add sel4-sys support for riscv32
  kata-os-common: cleanup sel4-sys before bringing in local changes
  kata-os-common: pristine import of sel4-sys-0.0.28 (-seL4 submodule)

GitOrigin-RevId: 36ee1d4f9e521b60fdc6b91f2581413b55882fca
2022-10-06 18:32:43 +00:00
Matt Harvey
4faa2e4c82 Implements BufRead in kata_io
Reading one byte at a time in a loop causes excessive syscalls. For
example, ZMODEM needs to do this when finding the end of each frame.
This change copies parts of std::io needed to wrap a Read in a BufReader
so that the read will be done eagerly.

It enables buffered UART reads for the whole DebugConsole at the point
where its single Read object is initialized.

Change-Id: I19935ca02333bc74d9b581d384a1854968ac5329
GitOrigin-RevId: 1aa80e036561a6a18e79dbf28bcab240efe80cd1
2022-10-06 18:32:11 +00:00
Matt Harvey
d70003982c Merge "Aligns UART API with Rust Read and Write"
GitOrigin-RevId: df407ae4bddb75b1bc43c35062947679c2b10c3a
2022-10-06 18:31:59 +00:00
Henry Herman
d6f8c7bced Merge "kata: Update vctop plic assignment"
GitOrigin-RevId: 77d97528f2b1c3ce1c17201ff031169626fe12a6
2022-10-06 18:31:51 +00:00
Cindy Liu
53dc1a2031 kata:MLCoorinator: Retrieve vc_top execution return
Create a new VectorCoreReturnInterface for the connection from the
VectorCoreDriver to MlCoordinator. Retrieve the return code and fault
from the finish IRQ handler back to MlCoordinator. It can be served as
the hook for the continuous run.

Change-Id: I6346cca0bc372e5b3a80d70b333d42ba768e822f
GitOrigin-RevId: bae4ab68418ce7ac9d4ac5ebb86bb6e55993b7cd
2022-10-06 18:31:42 +00:00
Sam Leffler
7310343cf9 StorageManager: streamline kata_storage_* routines
- convert &str's directly to C strings (w/o passing through
  CString::new); this eliminates the need for cstr_core::CString
  but potentially permits strings with embedded \0's
- add a From trait to streamline return handling

Change-Id: Ia854aaa297708e47abf310697954c4c18cafc14e
GitOrigin-RevId: b4fd9f6a67f9e460ed46274e18cf506bade818b4
2022-10-06 18:31:34 +00:00
Sam Leffler
6f1ebaeb44 StorageManager: more rust cleanups
- add From traits for mapping return status
- no more need for StorageError::Success w/ switch to Result's
- narrow unsafe blocks where possible

Change-Id: I92e0666e2651eb3647ac4e351d14bf55bc76bbb0
GitOrigin-RevId: 24416448d1c326632f556e224fcca7ac38397dc6
2022-10-06 18:31:23 +00:00
Sam Leffler
5929f8c932 ProcessManager: cleanup interfaces
- kata-proc-common =>'s kata-proc-interface
- use explicit import's
- add kata_proc_* & kata_pkg_* stub wrappers to hide C calls
- hide RAW_BUNDLE_ID_DATA_SIZE, not needed after stub additions
- add From traits to cleanup return handling
- narrow unsafe blocks

Note: removed some less-useful trace calls to enable ?-op usage

Change-Id: Iefe704654f5d286648c94c13a88573baaa434ecb
GitOrigin-RevId: 1639da7ea59653c1d1d22a9c1dab9c05aaf409df
2022-10-06 18:31:11 +00:00