Commit graph

1802 commits

Author SHA1 Message Date
bunnie
f334199ee6 commit host mode debugging 2021-08-12 23:01:34 +08:00
bunnie
a59e4f995c initial take at converting loader to do fallback instead of fail-hard 2021-08-12 03:48:11 +08:00
bunnie
192109d09a add some skeletal jtag access routines to rootkeys 2021-08-12 02:32:38 +08:00
bunnie
dc931d4a35 Merge branch 'main' into bunnie-dev 2021-08-12 02:01:57 +08:00
bunnie
1c447fabef Merge branch 'jtag-premerge' into main 2021-08-12 01:55:48 +08:00
bunnie
3d65d7d5ed add some docnotes on the resolution to the problem 2021-08-12 01:42:58 +08:00
bunnie
aaf16dcf5e light refactor to the GAM to solve a deadlock issue
This is a "no good choice" situation but there is a problem with
progress bars.

You want progress bars to update quickly, and you don't want
to have to context switch out for the entire graphics stack to
come back to you to approve the drawing of your progress bar update.

On the other hand, you don't want to short-circuit all the checks
on drawing stuff to the screen for the sake of progress bars --
right now, there are a number of checks in place to make sure you
can't draw stuff on parts of the screen you shouldn't, to avoid
fake messages and dialog boxes.

I had managed to work out a way to get a dialog box to redraw without
violating the security rules -- each redraw is checked by the defacing
routine -- however, due to the way I was computing the height of
the modal I was causing the dialog box to be resized to its largest
size and then shrunk again to fit the text every iteration. This
in essence also caused the defacement routine to run repeatedly,
which caused the GAM to also issue repeated redraw requests to
the main loop.

These redraw requests can't be serviced until the task being tracked
by the progress bar is completed. As the progress bar gets redrawn
almost a hundred times as part of the task, roughly a hundred messages
arrive in the server's queue before it can handle a single one.

This results in a deadlock situation on completion of the progress
bar, because we want to fire off a message to ourselves to go to
the next state in the Ux routine.

There are a few possible solutions to this:

1. Multi thread the heck out of the routine doing the progress bar,
so the dialog box and the slider are each in their own threads
with their own responders and then the thing doing the computation
is doing some Mutex-guarded-Arc thing.

2. Do some very unsafe bodge to allow sliders to do direct draws
that are unchecked

3. Add a check so that if the size of the dialog box doesn't change,
defacement isn't recomputed and thus redraw messages aren't sent back.

(1) doesn't work for a number of reasons -- in a general case, it's
probably OK, but it does cause a lot more memory usage (and we are
lean on memory); but more importantly, for this use case, our routine
is interacting with CSRs and those don't implement Send so you can't
pass them into a thread via a closure. You could maybe put the dialog
boxes themselves into an Arc Mutex thing but because this routine
was heavily coded to re-use the heavyweight Ux resources this becomes
a bit cumersome to code.

(2) is terrible

(3) ended up working and what is in this commit. I think it's OK
because a progress bar generally doesn't require changing the
size of a window to update its state; therefore the redraw is
deface-safe (since you aren't changing the bounds of what you were
already approved to draw in). Of course, if you have some sort
of a progress bar implementation that changes the size of the messages
reported up top so that the dialog box has to change size over and
over again, you still end up in the deadlock situation!
2021-08-12 01:25:35 +08:00
bunnie
0ccd487f5a test case now failing, now we can solve the problem faster 2021-08-11 23:22:15 +08:00
Sean Cross
45ae45a218 cargo: remove rkyv from log-server lockfile
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-11 11:00:56 +08:00
Sean Cross
e38366c99a log-server: refactor to remove rkyv and custom Strings
This removes all custom string formatting from the `log-server`.

This should improve performance, because we're not roundtripping between
various archive formats. We instead do a single copy and operate
directly on that buffer. We also now write bytes directly, as opposed to
creating intermediate strings.

This fixes a memory issue that was introduced recently.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-11 10:59:31 +08:00
bunnie
0234b4b22d add shellchat jtag debug commands 2021-08-11 06:15:23 +08:00
bunnie
799bb6050e add jtag commands, reboot after burn 2021-08-11 06:15:04 +08:00
bunnie
35e7cfe89e jtag server now reporting ID 2021-08-10 22:46:00 +08:00
bunnie
bdd70f9502 stash to figure out build issue 2021-08-10 22:41:22 +08:00
bunnie
3be03bfb8b fix debug statements 2021-08-10 22:41:15 +08:00
bunnie
e04a2e4ce0 fix debug statements 2021-08-10 18:20:50 +08:00
bunnie
5113df5eec Merge branch 'bunnie-dev' into main
Use a RefCell to solve the interior mutability issue introduced
by the &mut check introduced on MemoryRanges.
2021-08-10 18:13:33 +08:00
bunnie
4b175df36b fix multithreaded gateware verification at boot 2021-08-10 05:08:09 +08:00
bunnie
cf3ed935e7 add staging location lockout and xous-names completion checking 2021-08-10 04:30:45 +08:00
bunnie
184bb8405f getting closer to a finalized flow. 2021-08-10 03:04:03 +08:00
bunnie
352b725f7a add an abort option to the initialization flow 2021-08-10 02:48:32 +08:00
bunnie
29f7cbe53b refactor main menu to give options for rootkey operations 2021-08-10 01:54:35 +08:00
bunnie
7edc119472 clean up debug spew 2021-08-09 14:06:54 +08:00
bunnie
04dc6a4c2b refactor engine-sha512 to be named sha2
this makes patch.crates-io much easier to debug, we now
have the hardware hasher working in all the places i expect it to.
2021-08-09 04:40:33 +08:00
bunnie
ec6a3fd1a3 self-signing working, but the patch to use the SHA hash engine seems to be disregarded... 2021-08-09 03:27:43 +08:00
bunnie
b332f07d99
Update flash.md 2021-08-08 01:53:52 +08:00
bunnie
bc6ec8caf4 initial key provisioning demo working 2021-08-07 22:21:49 +08:00
Sean Cross
9b4333802d vscode: specify platform for vscode support
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 17:51:47 +08:00
Sean Cross
fa2a841f8a kernel: fix hosted mode exception support
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 17:51:24 +08:00
Sean Cross
32eb3c202c xous: add exception handler support
This has been tested end-to-end. We now have exception handler support.

There is a potential issue when passing messages to our own process in
an exception handler. This will need to be investigated.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 17:48:17 +08:00
Sean Cross
6985fda7ba kernel: get exceptions fully working
This finishes work with exceptions such that they now actually work.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 17:47:44 +08:00
Sean Cross
9bba083e2e kernel: remove debug print from mem.rs
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 13:05:23 +08:00
Sean Cross
15c9eadc4c kernel: riscv: re-fix mem warnings
The previous approach did not work, and broke everything. This fixes it
properly.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 13:02:16 +08:00
Sean Cross
b6f706411b kernel: gdb_server: fix clippy warnings
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:55:22 +08:00
Sean Cross
68f5e81d3f kernel: riscv: fix warnings in process
Fix clippy warnings in the `process.rs` file.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:54:43 +08:00
Sean Cross
dbd34318ce Revert "kernel: fix remaining clippy warnings"
This appears to have broken things.

This reverts commit 8b0dd3630c.
2021-08-06 12:51:40 +08:00
Sean Cross
5dbf6a9964 xous: definitions: derive Debug on ExceptionType
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:35:55 +08:00
Sean Cross
9b48c0a2ee xous-ipc: remove most clippy warnings
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:21:42 +08:00
Sean Cross
b3cb5ff40a xous-rs: remove all remaining clippy warnings
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:21:24 +08:00
Sean Cross
c2bc966020 xous: locale: remove unnecessary &static lifetime
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:04:41 +08:00
Sean Cross
e900912e58 xous: stringbuffer: fix clippy warnings
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:04:21 +08:00
Sean Cross
6d7660b76a loader: debug: fix minor clippy warning
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:55:56 +08:00
Sean Cross
8b0dd3630c kernel: fix remaining clippy warnings
This removes all remaining clippy warnings from inside the kernel.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:43:34 +08:00
Sean Cross
0a6a1f2edd kernel: syscall: ignore final Clippy warning
This warning is due to some debug information that is currently unused.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:39:09 +08:00
Sean Cross
cc8dc49dba kernel: riscv: refactor irqs to support exceptions
This fixes the exception handler so that it can support user-defined
exceptions. Additionally, kernel mode errors are called out now.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:37:27 +08:00
Sean Cross
19f68edbb4 kernel: riscv: allow exceptions with NULL pc
When the program counter is NULL, we can still get exceptions. This
happens when we jump to an invalid address, for example.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:34:50 +08:00
Sean Cross
08b787a03e kernel: debug: fix remaining clippy lints
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:34:30 +08:00
Sean Cross
c7ff0ceb21 kernel: mem: fix remaining clippy lints
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:32:52 +08:00
Sean Cross
d27a2eb27e kernel: mem: use iter instead of array access
This compresses the entirety of the memory range finder into a single
statement. As a result, duplicate code is removed and we can elide more
range checks.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:30:29 +08:00
Sean Cross
9dc4fcbf55 kernel: services: fix all clippy warnings
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 10:16:29 +08:00