fix(virtio-blk): wait for a request's own completion, by time
On riscv64 a system=v3 boot never reached its prompt: Artemis's writes
"timed out" and Zuse was never confirmed (logs/20261026-134850). vblk_io()
bounded its wait by ~1M polling iterations, which on riscv64 under TCG is
about one heartbeat tick of real time -- shorter than a write that allocates
space in a sparse host image. Instrumented, the request was seen completing
just after the give-up ("used idx=409 last=408"), and every later request
then took its predecessor's completion for its own and returned before its
own I/O was done (a stale used index at each later request), reusing the
descriptor chain while the device still owned it: silent read and write
corruption from that point on. FABRIC-3.md's 2026-09-09 "request that never
gets a used-ring completion" is this same early give-up.
Now: the wait is for this request's own completion (the used index
reaching the avail index it was given), bounded by 5 s of real time on the
CPU's counter (timer_now_ns(), which needs no interrupts); a request that
truly never completes takes the disk out of service instead of letting a
later request reuse the chain.
Red (riscv64 system=v3, with temporary instrumentation): 151003, 151100 --
a timeout then dozens of stale completions each. Green: 151238, 151332 --
none; Zuse confirmed; the keyboard line answered. system=v3 with the fix:
riscv64 151438, amd64 151528, aarch64 151610, no timeouts. Accepted (v4):
151722, 151916, 152247, POST 538/538, dict_hash 0xfec8c47cfc6f437f;
test-32, 39 modules, 0 failures.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
83d3692976
commit
0dbc98c049
@@ -26,6 +26,7 @@
|
|||||||
#include "blkio.h"
|
#include "blkio.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "starkernel/arch.h"
|
#include "starkernel/arch.h"
|
||||||
|
#include "starkernel/timer.h" /* timer_now_ns(): vblk_io()'s bound */
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------
|
/* -------------------------------------------------------------------------
|
||||||
* Virtio 1.0 PCI capability structures
|
* Virtio 1.0 PCI capability structures
|
||||||
@@ -172,6 +173,18 @@ typedef struct {
|
|||||||
static VirtBlkState g_vblk;
|
static VirtBlkState g_vblk;
|
||||||
static int g_vblk_ready = 0;
|
static int g_vblk_ready = 0;
|
||||||
|
|
||||||
|
/* How long one request may take before the disk is given up on: real time,
|
||||||
|
* not loop iterations (fixed 2026-10-26: a bound of ~1M iterations was
|
||||||
|
* about 10 ms on riscv64 under TCG, shorter than a write that allocates
|
||||||
|
* space in a sparse host image, and the driver then fell one completion
|
||||||
|
* behind for good -- see vblk_io()). */
|
||||||
|
#define VBLK_IO_TIMEOUT_NS 5000000000ULL
|
||||||
|
|
||||||
|
/* Set when a request was never completed within VBLK_IO_TIMEOUT_NS: the
|
||||||
|
* device may still own the descriptor chain, so it is not reused; every
|
||||||
|
* later request fails at once. */
|
||||||
|
static int g_vblk_dead = 0;
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------
|
/* -------------------------------------------------------------------------
|
||||||
* Capability walker
|
* Capability walker
|
||||||
* Returns MMIO pointer to the virtio capability region, or NULL.
|
* Returns MMIO pointer to the virtio capability region, or NULL.
|
||||||
@@ -238,6 +251,8 @@ static int vblk_io(int write, uint64_t sector, void *buf, uint32_t nbytes) {
|
|||||||
VirtqDesc *d = s->desc;
|
VirtqDesc *d = s->desc;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
|
if (g_vblk_dead) return BLKIO_EIO;
|
||||||
|
|
||||||
/* Fill request header */
|
/* Fill request header */
|
||||||
s->req_buf->type = write ? VIRTIO_BLK_T_OUT : VIRTIO_BLK_T_IN;
|
s->req_buf->type = write ? VIRTIO_BLK_T_OUT : VIRTIO_BLK_T_IN;
|
||||||
s->req_buf->reserved = 0;
|
s->req_buf->reserved = 0;
|
||||||
@@ -278,43 +293,41 @@ static int vblk_io(int write, uint64_t sector, void *buf, uint32_t nbytes) {
|
|||||||
*doorbell = 0; /* queue index 0 */
|
*doorbell = 0; /* queue index 0 */
|
||||||
wmb();
|
wmb();
|
||||||
|
|
||||||
/* Poll until device posts a used entry.
|
/* Wait for this request's own completion: the used index reaching the
|
||||||
*
|
* avail index this request was given (one request in flight, so the
|
||||||
* FABRIC-3.md, 2026-09-09: live-caught a real request that never gets
|
* two move together). Fixed 2026-10-26 (the riscv64 v3 boot's Artemis
|
||||||
* a used-ring completion -- root cause not yet isolated (every
|
* write timeouts, logs/20261026-134850): the wait was bounded by ~1M
|
||||||
* existing bounds check, vblk_read()'s own fblock vs total_forth_
|
* polling iterations, which on riscv64 under TCG is about one heartbeat
|
||||||
* blocks and read_devblock_4k()'s own lba vs total_blkio_blocks_1k,
|
* tick of real time -- shorter than a write that allocates space in a
|
||||||
* already passed before reaching here, so it isn't a simple out-of-
|
* sparse host image. The request then completed just after the driver
|
||||||
* range request; disabling interrupts around this call was tried and
|
* had given up on it, and every later request took its predecessor's
|
||||||
* made it strictly worse -- suggests QEMU's own device-model
|
* completion for its own and returned before its own I/O was done
|
||||||
* completion here depends on guest-visible time/interrupt progress in
|
* (seen: "used idx=409 last=408" at the timeout, then a stale used
|
||||||
* this TCG configuration, not a driver-side reentrancy bug -- so that
|
* index at every later request), reusing the descriptor chain while the
|
||||||
* approach was reverted). spin was 0x2000000 (~33M); at that bound a
|
* device still owned it. Now the bound is real time, measured by the
|
||||||
* single such failure cost tens of real minutes (confirmed: 31+ CPU-
|
* CPU's own counter (timer_now_ns(), which needs no interrupts: the
|
||||||
* minutes on one boot) because blk_migration_idle_check()'s own scan
|
* disk is used before the timer runs), and a request that truly never
|
||||||
* calls this per un-cached devblock, up to ~23,000 times a boot, and
|
* completes takes the disk out of service rather than letting a later
|
||||||
* apparently more than one of those hits this failure mode. Cut by
|
* request reuse the chain. The 2026-09-09 notes (FABRIC-3.md) on a
|
||||||
* ~30x: still enormously generous for a real completion (confirmed
|
* request "that never gets a used-ring completion" describe this same
|
||||||
* live those return in a handful of iterations, not millions), but
|
* early give-up. arch_relax() stays: a tight MMIO-adjacent poll with no
|
||||||
* turns what was an effectively-unbounded stall into a fast, loud,
|
* yield hint can starve TCG's own host-side timer injection (xhci.c,
|
||||||
* logged failure instead -- callers already tolerate BLKIO_EIO
|
* xhci_wait_bit()). */
|
||||||
* (zero-fill and move on), they just couldn't afford the old wait to
|
{
|
||||||
* find that out. */
|
uint64_t t0 = timer_now_ns();
|
||||||
uint32_t spin = 0x100000u; /* ~1M iterations */
|
result = BLKIO_OK;
|
||||||
result = BLKIO_OK;
|
while (s->used->idx != s->avail_idx) {
|
||||||
while (s->used->idx == s->last_used_idx) {
|
rmb();
|
||||||
rmb();
|
arch_relax();
|
||||||
arch_relax(); /* FABRIC-3.md, 2026-09-09: xhci_wait_bit()'s own doc
|
if (timer_now_ns() - t0 > VBLK_IO_TIMEOUT_NS) {
|
||||||
* comment (xhci.c) has the full reasoning -- a tight
|
log_message(LOG_ERROR,
|
||||||
* MMIO-adjacent poll with no yield hint can starve
|
"virtio_blk: request never completed in 5 s (write=%d sector=%llu) -- "
|
||||||
* TCG's own host-side timer injection. */
|
"the disk is taken out of service",
|
||||||
if (!--spin) {
|
write, (unsigned long long)sector);
|
||||||
log_message(LOG_ERROR,
|
g_vblk_dead = 1;
|
||||||
"virtio_blk: vblk_io timed out (write=%d sector=%llu) -- "
|
result = BLKIO_EIO;
|
||||||
"queue never posted a used entry",
|
break;
|
||||||
write, (unsigned long long)sector);
|
}
|
||||||
result = BLKIO_EIO;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (result == BLKIO_OK) {
|
if (result == BLKIO_OK) {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,157 @@
|
|||||||
|
[2J[001;001H[=3h[2J[001;001H[2J[001;001H[8;042;160t[2J[001;001H[2J[001;001H[8;056;240t[2J[001;001HBdsDxe: loading Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0)
|
||||||
|
BdsDxe: starting Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0)
|
||||||
|
[2J[001;001H[=3h[2J[001;001HStarKernel UEFI Loader
|
||||||
|
Loading kernel from ESP...
|
||||||
|
[CKPT 001] Entered efi_main - ConOut live
|
||||||
|
RAW SERIAL UP
|
||||||
|
[CKPT 002] Serial (COM1) initialized
|
||||||
|
Monolithic build - kernel linked directly
|
||||||
|
Collecting boot information...
|
||||||
|
CmdLine: parsed OK
|
||||||
|
[CKPT 004] Command line parsed
|
||||||
|
[CKPT 005] Kernel stack allocation decided
|
||||||
|
[CKPT 006] Boot info collected (ACPI table located)
|
||||||
|
GOP: linear framebuffer found
|
||||||
|
[CKPT 007] GOP: linear framebuffer found
|
||||||
|
[CKPT 008] About to enter ExitBootServices retry loop
|
||||||
|
EBS...
|
||||||
|
EBS OK
|
||||||
|
Calling kernel_main (monolithic)...
|
||||||
|
|
||||||
|
|
||||||
|
_____ _ _ __ _
|
||||||
|
/ ____| | | |/ / | |
|
||||||
|
| (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| |
|
||||||
|
\___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ |
|
||||||
|
____) | || (_| | | | . \ __/ | | | | | __/ |
|
||||||
|
|_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_|
|
||||||
|
|
||||||
|
LithosAnanke v2.1.0 amd64
|
||||||
|
Architecture: amd64
|
||||||
|
Build: Oct 26 2026 15:17:20
|
||||||
|
|
||||||
|
UEFI BootServices: EXITED
|
||||||
|
Console: serial line is a 16550 at port 0x00000000000003f8 (COM1, probed)
|
||||||
|
|
||||||
|
=== StarKernel Boot Information ===
|
||||||
|
Memory map entries: 135
|
||||||
|
Total memory: 1023 MB
|
||||||
|
Usable memory: 966 MB
|
||||||
|
===================================
|
||||||
|
|
||||||
|
PMM initialized.
|
||||||
|
PMM statistics:
|
||||||
|
Total pages: 248679
|
||||||
|
Free pages : 247156
|
||||||
|
Used pages : 1523
|
||||||
|
Total MB : 971
|
||||||
|
Free MB : 965
|
||||||
|
Used MB : 5
|
||||||
|
|
||||||
|
VMM initialized (mapped RAM, CR3 switched)
|
||||||
|
VMM initialized (mapped RAM, CR3 switched)
|
||||||
|
VMM self-test: mapped OK at 0xffff800000000000
|
||||||
|
VMM self-test complete.
|
||||||
|
|
||||||
|
IDT installed.
|
||||||
|
|
||||||
|
APIC: init...
|
||||||
|
APIC: IA32_APIC_BASE MSR=0x00000000fee00900
|
||||||
|
APIC: stale-ISR drain: 0 EOI(s) issued
|
||||||
|
APIC: initialized (xAPIC MMIO, TPR=0, SIVR=0x1FF, EOI-clear)
|
||||||
|
APIC: init done
|
||||||
|
|
||||||
|
I/O APIC: init...
|
||||||
|
I/O APIC: base=0xfec00000, gsi_base=0, overrides=5
|
||||||
|
override: source=00 gsi=2 flags=0x0000
|
||||||
|
override: source=05 gsi=5 flags=0x000d
|
||||||
|
override: source=09 gsi=9 flags=0x000d
|
||||||
|
override: source=0a gsi=10 flags=0x000d
|
||||||
|
override: source=0b gsi=11 flags=0x000d
|
||||||
|
i8042: keyboard ACKed enable-scanning
|
||||||
|
i8042: IRQ1 enabled in controller config byte
|
||||||
|
I/O APIC: keyboard IRQ1 routed (masked)
|
||||||
|
|
||||||
|
Timer: init...
|
||||||
|
Timer: init start
|
||||||
|
Timer: PM_TMR_BLK discovered from FADT at port 1544
|
||||||
|
Timer: VM mode detected (hypervisor present).
|
||||||
|
Timer: HPET calibration disabled (VM-exit MMIO would poison timing).
|
||||||
|
Timer: WARNING: invariant TSC not present under hypervisor.
|
||||||
|
Timer: continuing in RELATIVE mode (no determinism guarantees).
|
||||||
|
Timer: RDTSCP not present; using RDTSC (less serialized).
|
||||||
|
Timer: CPUID frequency unavailable; trying PM Timer...
|
||||||
|
Timer: trust=1 (0=NONE,1=REL,2=ABS), TSC=2097481789 Hz
|
||||||
|
Timer: init done
|
||||||
|
|
||||||
|
Kernel heap initialized.
|
||||||
|
Heap statistics:
|
||||||
|
Total bytes: 536870872
|
||||||
|
Free bytes: 536870872
|
||||||
|
Used bytes: 0
|
||||||
|
Peak bytes: 0
|
||||||
|
Heap base addr: 24641536
|
||||||
|
Heap end addr: 561512448
|
||||||
|
|
||||||
|
Heartbeat: init...
|
||||||
|
APIC Timer: calibrating...
|
||||||
|
APIC Timer: apic_hz=1006708142, tick_hz=100, initial_count=10067081
|
||||||
|
APIC Timer: configured (masked, ready to start)
|
||||||
|
Heartbeat: init done
|
||||||
|
Kernel initialization complete.
|
||||||
|
Boot successful!
|
||||||
|
|
||||||
|
System: StarForth v4 (this build's default)
|
||||||
|
StarForth v4: one host node, the F18-derived engine
|
||||||
|
V4: capsule v4:sys:map-64.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:map-64.f18 capsule_hash=0x949eb6a1e9260e49
|
||||||
|
V4: capsule v4:sys:core.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:core.f18 capsule_hash=0xb8f167892ec18c28
|
||||||
|
V4: capsule v4:sys:input.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:input.f18 capsule_hash=0x85d3ec486d929a79
|
||||||
|
V4: capsule v4:sys:dict.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:dict.f18 capsule_hash=0x1379bd3b5de811dc
|
||||||
|
V4: capsule v4:sys:codegen.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:codegen.f18 capsule_hash=0x36d2ae84d2911b90
|
||||||
|
V4: capsule v4:sys:compile.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:compile.f18 capsule_hash=0x11145c4c2ab819d8
|
||||||
|
V4: capsule v4:sys:quit.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:quit.f18 capsule_hash=0x43cadf3b21ddbf3e
|
||||||
|
V4: capsule v4:sys:forth.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:forth.f18 capsule_hash=0x16cab4a1268b85da
|
||||||
|
V4: capsule v4:sys:numout.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:numout.f18 capsule_hash=0x85a240ad3fb2b299
|
||||||
|
V4: capsule v4:sys:words.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:words.f18 capsule_hash=0xb1d381f927d9f14e
|
||||||
|
V4: capsule v4:sys:system.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:system.f18 capsule_hash=0xd92203664c2915bd
|
||||||
|
V4: capsule v4:sys:qmath.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:qmath.f18 capsule_hash=0xdb4140713dd857f3
|
||||||
|
V4: capsule v4:sys:blocks.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:blocks.f18 capsule_hash=0x76307ef48678dc2a
|
||||||
|
V4: capsule v4:sys:log.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:log.f18 capsule_hash=0xfc6540e6b824a52b
|
||||||
|
V4: capsule v4:sys:acl.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:acl.f18 capsule_hash=0x6845aa048db7eb22
|
||||||
|
V4: capsule v4:sys:end.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:end.f18 capsule_hash=0x5ef01312c07b79cc
|
||||||
|
PARITY:V4_ROM words=2372 rom_hash=0x87b23d3ae2643c8d instructions=59145258
|
||||||
|
V4: capsule v4:forth79.4th signature: missing (unsigned)
|
||||||
|
PARITY:V4_CAPSULE name=v4:forth79.4th capsule_id=0x4055641ee17d176b capsule_hash=0x4055641ee17d176b dict_hash=0x033e1c05c09a1df8
|
||||||
|
PARITY:V4_POST tests=538 pass=538 fail=0
|
||||||
|
PARITY:V4_SYSTEM word_count=317 dict_hash=0xfec8c47cfc6f437f
|
||||||
|
PARITY:OK
|
||||||
|
POST: PASSED
|
||||||
|
PCI: init...
|
||||||
|
PCI: ECAM mapped (amd64)
|
||||||
|
virtio-blk: found device
|
||||||
|
Artemis: virtio-blk attached
|
||||||
|
Starting heartbeat...
|
||||||
|
APIC Timer: started (LVT=0x00020020 ICR=10067081)
|
||||||
|
I/O APIC: keyboard IRQ1 unmasked
|
||||||
|
Heartbeat running.
|
||||||
|
blkio_usb: MSC device ready
|
||||||
|
[38;2;255;165;0m[Hera][39m Zuse: identity confirmed from attached thumbdrive
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m [38;2;85;255;255mok> [39m3 4 + .
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m 7 ok
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m [38;2;85;255;255mok> [39m
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
UEFI firmware (version 2025.11-3ubuntu7.3 built at 15:40:26 on Sep 23 2026)
|
||||||
|
[2J[001;001H[=3h[2J[001;001H[2J[001;001H[8;031;100t[2J[001;001HBdsDxe: failed to load Boot0002 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x2,0x0): Not Found
|
||||||
|
BdsDxe: failed to load Boot0003 "UEFI QEMU QEMU USB HARDDRIVE 1-0000:00:04.0-1" from PciRoot(0x0)/Pci(0x4,0x0)/USB(0x0,0x0): Not Found
|
||||||
|
BdsDxe: loading Boot0004 "UEFI Misc Device 2" from PciRoot(0x0)/Pci(0x6,0x0)
|
||||||
|
BdsDxe: starting Boot0004 "UEFI Misc Device 2" from PciRoot(0x0)/Pci(0x6,0x0)
|
||||||
|
[2J[001;001H[=3h[2J[001;001HStarKernel UEFI Loader
|
||||||
|
Loading kernel from ESP...
|
||||||
|
[CKPT 001] Entered efi_main - ConOut live
|
||||||
|
Collecting boot information...
|
||||||
|
[CKPT 004] Command line parsed
|
||||||
|
[CKPT 005] Kernel stack allocation decided
|
||||||
|
[CKPT 006] Boot info collected (ACPI table located)
|
||||||
|
[CKPT 007] GOP: linear framebuffer found
|
||||||
|
[CKPT 008] About to enter ExitBootServices retry loop
|
||||||
|
|
||||||
|
|
||||||
|
_____ _ _ __ _
|
||||||
|
/ ____| | | |/ / | |
|
||||||
|
| (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| |
|
||||||
|
\___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ |
|
||||||
|
____) | || (_| | | | . \ __/ | | | | | __/ |
|
||||||
|
|_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_|
|
||||||
|
|
||||||
|
LithosAnanke v2.1.0 aarch64
|
||||||
|
Architecture: aarch64
|
||||||
|
Build: Oct 26 2026 15:19:14
|
||||||
|
|
||||||
|
UEFI BootServices: EXITED
|
||||||
|
Console: serial line is a PL011 at 0x0000000009000000 (no devicetree: QEMU's)
|
||||||
|
|
||||||
|
=== StarKernel Boot Information ===
|
||||||
|
Memory map entries: 108
|
||||||
|
Total memory: 4093 MB
|
||||||
|
Usable memory: 4054 MB
|
||||||
|
===================================
|
||||||
|
|
||||||
|
PMM initialized.
|
||||||
|
PMM statistics:
|
||||||
|
Total pages: 1039284
|
||||||
|
Free pages : 1037873
|
||||||
|
Used pages : 1411
|
||||||
|
Total MB : 4059
|
||||||
|
Free MB : 4054
|
||||||
|
Used MB : 5
|
||||||
|
|
||||||
|
VMM initialized (mapped RAM, CR3 switched)
|
||||||
|
VMM initialized (mapped RAM, CR3 switched)
|
||||||
|
VMM self-test: mapped OK at 0xffff800000000000
|
||||||
|
VMM self-test complete.
|
||||||
|
|
||||||
|
AArch64: running at EL1
|
||||||
|
IDT installed.
|
||||||
|
|
||||||
|
APIC: init...
|
||||||
|
PSCI: no DTB -- using HVC (QEMU virt-machine default)
|
||||||
|
GICv2: no DTB GIC node -- using QEMU virt-machine defaults
|
||||||
|
GICv2: distributor+CPU interface enabled, PPI 30
|
||||||
|
APIC: init done
|
||||||
|
|
||||||
|
Timer: init...
|
||||||
|
Timer: AArch64 generic timer initialised.
|
||||||
|
Timer: init done
|
||||||
|
|
||||||
|
Kernel heap initialized.
|
||||||
|
Heap statistics:
|
||||||
|
Total bytes: 2147483608
|
||||||
|
Free bytes: 2147483608
|
||||||
|
Used bytes: 0
|
||||||
|
Peak bytes: 0
|
||||||
|
Heap base addr: 1207959552
|
||||||
|
Heap end addr: 3355443200
|
||||||
|
|
||||||
|
Heartbeat: init...
|
||||||
|
Heartbeat: init done
|
||||||
|
Kernel initialization complete.
|
||||||
|
Boot successful!
|
||||||
|
|
||||||
|
System: StarForth v4 (this build's default)
|
||||||
|
StarForth v4: one host node, the F18-derived engine
|
||||||
|
V4: capsule v4:sys:map-64.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:map-64.f18 capsule_hash=0x949eb6a1e9260e49
|
||||||
|
V4: capsule v4:sys:core.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:core.f18 capsule_hash=0xb8f167892ec18c28
|
||||||
|
V4: capsule v4:sys:input.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:input.f18 capsule_hash=0x85d3ec486d929a79
|
||||||
|
V4: capsule v4:sys:dict.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:dict.f18 capsule_hash=0x1379bd3b5de811dc
|
||||||
|
V4: capsule v4:sys:codegen.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:codegen.f18 capsule_hash=0x36d2ae84d2911b90
|
||||||
|
V4: capsule v4:sys:compile.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:compile.f18 capsule_hash=0x11145c4c2ab819d8
|
||||||
|
V4: capsule v4:sys:quit.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:quit.f18 capsule_hash=0x43cadf3b21ddbf3e
|
||||||
|
V4: capsule v4:sys:forth.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:forth.f18 capsule_hash=0x16cab4a1268b85da
|
||||||
|
V4: capsule v4:sys:numout.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:numout.f18 capsule_hash=0x85a240ad3fb2b299
|
||||||
|
V4: capsule v4:sys:words.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:words.f18 capsule_hash=0xb1d381f927d9f14e
|
||||||
|
V4: capsule v4:sys:system.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:system.f18 capsule_hash=0xd92203664c2915bd
|
||||||
|
V4: capsule v4:sys:qmath.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:qmath.f18 capsule_hash=0xdb4140713dd857f3
|
||||||
|
V4: capsule v4:sys:blocks.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:blocks.f18 capsule_hash=0x76307ef48678dc2a
|
||||||
|
V4: capsule v4:sys:log.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:log.f18 capsule_hash=0xfc6540e6b824a52b
|
||||||
|
V4: capsule v4:sys:acl.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:acl.f18 capsule_hash=0x6845aa048db7eb22
|
||||||
|
V4: capsule v4:sys:end.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:end.f18 capsule_hash=0x5ef01312c07b79cc
|
||||||
|
PARITY:V4_ROM words=2372 rom_hash=0x87b23d3ae2643c8d instructions=59145258
|
||||||
|
V4: capsule v4:forth79.4th signature: missing (unsigned)
|
||||||
|
PARITY:V4_CAPSULE name=v4:forth79.4th capsule_id=0x4055641ee17d176b capsule_hash=0x4055641ee17d176b dict_hash=0x033e1c05c09a1df8
|
||||||
|
PARITY:V4_POST tests=538 pass=538 fail=0
|
||||||
|
PARITY:V4_SYSTEM word_count=317 dict_hash=0xfec8c47cfc6f437f
|
||||||
|
PARITY:OK
|
||||||
|
POST: PASSED
|
||||||
|
PCI: init...
|
||||||
|
virtio-blk: found device
|
||||||
|
Artemis: virtio-blk attached
|
||||||
|
Starting heartbeat...
|
||||||
|
Heartbeat running.
|
||||||
|
blkio_usb: MSC device ready
|
||||||
|
[38;2;255;165;0m[Hera][39m Zuse: identity confirmed from attached thumbdrive
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m [38;2;85;255;255mok> [39m3 4 + .
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m 7 ok
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m [38;2;85;255;255mok> [39m
|
||||||
@@ -0,0 +1,199 @@
|
|||||||
|
|
||||||
|
OpenSBI v1.8
|
||||||
|
____ _____ ____ _____
|
||||||
|
/ __ \ / ____| _ \_ _|
|
||||||
|
| | | |_ __ ___ _ __ | (___ | |_) || |
|
||||||
|
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
|
||||||
|
| |__| | |_) | __/ | | |____) | |_) || |_
|
||||||
|
\____/| .__/ \___|_| |_|_____/|____/_____|
|
||||||
|
| |
|
||||||
|
|_|
|
||||||
|
|
||||||
|
Platform Name : riscv-virtio,qemu
|
||||||
|
Platform Features : medeleg
|
||||||
|
Platform HART Count : 1
|
||||||
|
Platform HART Protection : pmp
|
||||||
|
Platform IPI Device : aclint-mswi
|
||||||
|
Platform Timer Device : aclint-mtimer @ 10000000Hz
|
||||||
|
Platform Console Device : uart8250
|
||||||
|
Platform HSM Device : ---
|
||||||
|
Platform PMU Device : ---
|
||||||
|
Platform Reboot Device : syscon-reboot
|
||||||
|
Platform Shutdown Device : syscon-poweroff
|
||||||
|
Platform Suspend Device : ---
|
||||||
|
Platform CPPC Device : ---
|
||||||
|
Firmware Base : 0x80000000
|
||||||
|
Firmware Size : 321 KB
|
||||||
|
Firmware RW Offset : 0x40000
|
||||||
|
Firmware RW Size : 65 KB
|
||||||
|
Firmware Heap Offset : 0x47000
|
||||||
|
Firmware Heap Size : 37 KB (total), 0 KB (reserved), 12 KB (used), 23 KB (free)
|
||||||
|
Firmware Scratch Size : 4096 B (total), 1464 B (used), 2632 B (free)
|
||||||
|
Runtime SBI Version : 3.0
|
||||||
|
Standard SBI Extensions : ipi,pmu,srst,sse,hsm,rfnc,fwft,time,base,legacy,dbcn,dbtr
|
||||||
|
Experimental SBI Extensions : none
|
||||||
|
|
||||||
|
Domain0 Name : root
|
||||||
|
Domain0 Boot HART : 0
|
||||||
|
Domain0 HARTs : 0*
|
||||||
|
Domain0 Region00 : 0x0000000080040000-0x000000008005ffff M: (F,R,W) S/U: ()
|
||||||
|
Domain0 Region01 : 0x0000000080000000-0x000000008003ffff M: (F,R,X) S/U: ()
|
||||||
|
Domain0 Region02 : 0x0000000000100000-0x0000000000100fff M: (I,R,W) S/U: (R,W)
|
||||||
|
Domain0 Region03 : 0x0000000010000000-0x0000000010000fff M: (I,R,W) S/U: (R,W)
|
||||||
|
Domain0 Region04 : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: ()
|
||||||
|
Domain0 Region05 : 0x000000000c400000-0x000000000c5fffff M: (I,R,W) S/U: (R,W)
|
||||||
|
Domain0 Region06 : 0x000000000c000000-0x000000000c3fffff M: (I,R,W) S/U: (R,W)
|
||||||
|
Domain0 Region07 : 0x0000000000000000-0xffffffffffffffff M: () S/U: (R,W,X)
|
||||||
|
Domain0 Next Address : 0x0000000020000000
|
||||||
|
Domain0 Next Arg1 : 0x00000000bfe00000
|
||||||
|
Domain0 Next Mode : S-mode
|
||||||
|
Domain0 SysReset : yes
|
||||||
|
Domain0 SysSuspend : yes
|
||||||
|
|
||||||
|
Boot HART ID : 0
|
||||||
|
Boot HART Domain : root
|
||||||
|
Boot HART Priv Version : v1.12
|
||||||
|
Boot HART Base ISA : rv64imafdch
|
||||||
|
Boot HART ISA Extensions : sstc,zicntr,zihpm,zicboz,zicbom,sdtrig,svadu
|
||||||
|
Boot HART PMP Count : 16
|
||||||
|
Boot HART PMP Granularity : 2 bits
|
||||||
|
Boot HART PMP Address Bits : 54
|
||||||
|
Boot HART MHPM Info : 16 (0x0007fff8)
|
||||||
|
Boot HART Debug Triggers : 2 triggers
|
||||||
|
Boot HART MIDELEG : 0x0000000000001666
|
||||||
|
Boot HART MEDELEG : 0x0000000000f4b509
|
||||||
|
[2J[004D[=3h[2J[009D[2J[004D[8;031;100t[2J[016DRISC-V EDK2 firmware version 2025.11-3ubuntu7.3
|
||||||
|
Press ESCAPE within 5 seconds for boot options ERROR: C40000002:V03051002 I0 6D33944A-EC75-4855-A54D-809C75241F6C 83FFF850
|
||||||
|
BdsDxe: failed to load Boot0001 "UEFI Misc Device" fr
|
||||||
|
om PciRoot(0x0)/Pci(0x1,0x0): Not Found
|
||||||
|
[2J[001;001H[=3h[2J[009DStarKernel UEFI Loader
|
||||||
|
Loading kernel from ESP...
|
||||||
|
[CKPT 001] Entered efi_main - ConOut live
|
||||||
|
Monolithic build - kernel linked directly
|
||||||
|
Collecting boot information...
|
||||||
|
CmdLine: parsed OK
|
||||||
|
[CKPT 004] Command line parsed
|
||||||
|
[CKPT 005] Kernel stack allocation decided
|
||||||
|
[CKPT 006] Boot info collected (ACPI table located)
|
||||||
|
GOP: linear framebuffer found
|
||||||
|
[CKPT 007] GOP: linear framebuffer found
|
||||||
|
[CKPT 008] About to enter ExitBootServices retry loop
|
||||||
|
Calling kernel_main (monolithic)...
|
||||||
|
riscv64 item 4.3.5a: satp state at kernel entry (before switch)
|
||||||
|
satp.MODE = 0x000000000000000a
|
||||||
|
satp.PPN = 0x00000000000bf868
|
||||||
|
__kernel_start = 0x00000000bdc2a678
|
||||||
|
riscv64: satp cleared -- Bare mode, explicit (item 4.3.5a)
|
||||||
|
|
||||||
|
|
||||||
|
_____ _ _ __ _
|
||||||
|
/ ____| | | |/ / | |
|
||||||
|
| (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| |
|
||||||
|
\___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ |
|
||||||
|
____) | || (_| | | | . \ __/ | | | | | __/ |
|
||||||
|
|_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_|
|
||||||
|
|
||||||
|
LithosAnanke v2.1.0 riscv64
|
||||||
|
Architecture: riscv64
|
||||||
|
Build: Oct 26 2026 15:22:42
|
||||||
|
|
||||||
|
UEFI BootServices: EXITED
|
||||||
|
Console: serial line is a 16550 at 0x0000000010000000 (no devicetree: QEMU's)
|
||||||
|
|
||||||
|
=== StarKernel Boot Information ===
|
||||||
|
Memory map entries: 100
|
||||||
|
Total memory: 1020 MB
|
||||||
|
Usable memory: 974 MB
|
||||||
|
===================================
|
||||||
|
|
||||||
|
PMM initialized.
|
||||||
|
PMM statistics:
|
||||||
|
Total pages: 250205
|
||||||
|
Free pages : 249553
|
||||||
|
Used pages : 652
|
||||||
|
Total MB : 977
|
||||||
|
Free MB : 974
|
||||||
|
Used MB : 2
|
||||||
|
|
||||||
|
VMM initialized (mapped RAM, CR3 switched)
|
||||||
|
VMM initialized (mapped RAM, CR3 switched)
|
||||||
|
VMM self-test: mapped OK at 0xffff800000000000
|
||||||
|
VMM self-test complete.
|
||||||
|
|
||||||
|
IDT installed.
|
||||||
|
|
||||||
|
APIC: init...
|
||||||
|
PLIC: no DTB PLIC node -- using QEMU virt-machine default (base=0x0c000000)
|
||||||
|
PLIC: init (S-mode context 1, threshold=0)
|
||||||
|
APIC: init done
|
||||||
|
|
||||||
|
Timer: init...
|
||||||
|
Timer: RISC-V time CSR @ 10000000 Hz (FALLBACK, no devicetree)
|
||||||
|
Timer: init done
|
||||||
|
|
||||||
|
Kernel heap initialized.
|
||||||
|
Heap statistics:
|
||||||
|
Total bytes: 536870872
|
||||||
|
Free bytes: 536870872
|
||||||
|
Used bytes: 0
|
||||||
|
Peak bytes: 0
|
||||||
|
Heap base addr: 2214588416
|
||||||
|
Heap end addr: 2751459328
|
||||||
|
|
||||||
|
Heartbeat: init...
|
||||||
|
Heartbeat: init done
|
||||||
|
Kernel initialization complete.
|
||||||
|
Boot successful!
|
||||||
|
|
||||||
|
System: StarForth v4 (this build's default)
|
||||||
|
StarForth v4: one host node, the F18-derived engine
|
||||||
|
V4: capsule v4:sys:map-64.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:map-64.f18 capsule_hash=0x949eb6a1e9260e49
|
||||||
|
V4: capsule v4:sys:core.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:core.f18 capsule_hash=0xb8f167892ec18c28
|
||||||
|
V4: capsule v4:sys:input.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:input.f18 capsule_hash=0x85d3ec486d929a79
|
||||||
|
V4: capsule v4:sys:dict.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:dict.f18 capsule_hash=0x1379bd3b5de811dc
|
||||||
|
V4: capsule v4:sys:codegen.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:codegen.f18 capsule_hash=0x36d2ae84d2911b90
|
||||||
|
V4: capsule v4:sys:compile.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:compile.f18 capsule_hash=0x11145c4c2ab819d8
|
||||||
|
V4: capsule v4:sys:quit.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:quit.f18 capsule_hash=0x43cadf3b21ddbf3e
|
||||||
|
V4: capsule v4:sys:forth.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:forth.f18 capsule_hash=0x16cab4a1268b85da
|
||||||
|
V4: capsule v4:sys:numout.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:numout.f18 capsule_hash=0x85a240ad3fb2b299
|
||||||
|
V4: capsule v4:sys:words.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:words.f18 capsule_hash=0xb1d381f927d9f14e
|
||||||
|
V4: capsule v4:sys:system.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:system.f18 capsule_hash=0xd92203664c2915bd
|
||||||
|
V4: capsule v4:sys:qmath.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:qmath.f18 capsule_hash=0xdb4140713dd857f3
|
||||||
|
V4: capsule v4:sys:blocks.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:blocks.f18 capsule_hash=0x76307ef48678dc2a
|
||||||
|
V4: capsule v4:sys:log.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:log.f18 capsule_hash=0xfc6540e6b824a52b
|
||||||
|
V4: capsule v4:sys:acl.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:acl.f18 capsule_hash=0x6845aa048db7eb22
|
||||||
|
V4: capsule v4:sys:end.f18 signature: missing (unsigned)
|
||||||
|
PARITY:V4_F18 name=v4:sys:end.f18 capsule_hash=0x5ef01312c07b79cc
|
||||||
|
PARITY:V4_ROM words=2372 rom_hash=0x87b23d3ae2643c8d instructions=59145258
|
||||||
|
V4: capsule v4:forth79.4th signature: missing (unsigned)
|
||||||
|
PARITY:V4_CAPSULE name=v4:forth79.4th capsule_id=0x4055641ee17d176b capsule_hash=0x4055641ee17d176b dict_hash=0x033e1c05c09a1df8
|
||||||
|
PARITY:V4_POST tests=538 pass=538 fail=0
|
||||||
|
PARITY:V4_SYSTEM word_count=317 dict_hash=0xfec8c47cfc6f437f
|
||||||
|
PARITY:OK
|
||||||
|
POST: PASSED
|
||||||
|
PCI: init...
|
||||||
|
virtio-blk: found device
|
||||||
|
Artemis: virtio-blk attached
|
||||||
|
Starting heartbeat...
|
||||||
|
SBI: timer armed (TIME extension)
|
||||||
|
Heartbeat running.
|
||||||
|
blkio_usb: MSC device ready
|
||||||
|
[38;2;255;165;0m[Hera][39m Zuse: identity confirmed from attached thumbdrive
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m [38;2;85;255;255mok> [39m3 4 + .
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m 7 ok
|
||||||
|
[38;2;255;165;0m[zuse@Hera][39m [38;2;85;255;255mok> [39m
|
||||||
Reference in New Issue
Block a user