fix(repl): the bring-up build's prompt waits for a line instead of answering itself without end

Built with EMERGENCY_CONSOLE_ENABLED=1 and booted with no identity logged
in, the prompt printed "ok>  ok" without end, 1.4 million times in 200
seconds (logs/20261013-210442).  sk_console_readline() gave up at once
whenever no identity was present.  The production build answers that by
going silent until a login; the bring-up build, which needs no login,
took it as an empty line and asked again.  The give-up is now the
production build's only.

Found rehearsing boards/BRINGUP.md; it predates the console change of
c9519173 (the image built from the commit before that did the same).

The riscv64 bring-up build, no thumbdrive, three lines typed
(logs/20261013-235129): one prompt that waits, and 3, 56 and 81.
Acceptance of the production build, one QEMU at a time: amd64
(-235255), aarch64 (-235411), riscv64 (-235620) to the zuse prompt, no
unknown word, hash 0x08873e0f44b7cb2a on all three.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-13 23:57:29 -04:00
co-authored by Claude Opus 5.5
parent c95191736e
commit 9772ee8b68
10 changed files with 36654 additions and 9 deletions
+8 -9
View File
@@ -71,22 +71,21 @@ port, `kernel/src/arch/armv7` (entry, MMU, GIC, private timer); and the four fil
`__int128` or have no ARMv7 branch (`boards/zynq7020/README.md` names them). It is the host for
the v4 mesh, so it also waits on A6.
### 1.6 Found in rehearsal, 2026-10-13: the bring-up build floods its prompt
### 1.6 Found in rehearsal, and fixed, 2026-10-13: the bring-up build flooded its prompt
Built with `EMERGENCY_CONSOLE_ENABLED=1` and booted with nothing typed, the Mars image prints
`ok> ok` without end: 1.4 million times in 200 seconds, through U-Boot in QEMU. Under the
usual QEMU firmware the first prompt waits, a typed line is answered, and then the same flood
begins. The image built from the commit before the console change does the same, so it is
not the serial line. **Not found yet, and it blocks a usable prompt on every board's bring-up
build.** The production build, which waits for a login, does not show it: the three-ISA
acceptance boots reach one `zuse@Hera` prompt and stop there.
Built with `EMERGENCY_CONSOLE_ENABLED=1` and booted with no thumbdrive, the prompt printed
`ok> ok` without end: 1.4 million times in 200 seconds. The line reader
(`kernel/src/repl.c`, `sk_console_readline()`) gave up at once whenever no identity was logged
in, which the production build answers by going silent; the bring-up build took it as an
empty line and asked again. It now gives up only in the production build. Rehearsed on
riscv64 (`logs/20261013-235129`): one prompt, which waits, and three typed lines answered.
### 1.7 What I would close before the bench day
In this order, each as a design for approval first:
1. ~~R1 and M1: a console that finds its UART from the devicetree, and does nothing when
there is none.~~ Done 2026-10-13. Then 1.6, the flood.
there is none.~~ Done 2026-10-13, and 1.6, the flood.
2. A6: the v4 switch in the board images. The v4 node needs only a console to reach a prompt;
it has no login, no fleet and no disk to wait for, so it is the shorter road to a first
prompt on each board.