Dezh OS RISC-V Review Demo Transcript

Mode: short

This transcript is generated by tools/demo/run_review_demo.py.

OpenSBI v1.7
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name               : riscv-virtio,qemu
Platform Features           : medeleg
Platform HART Count         : 1
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               : 317 KB
Firmware RW Offset          : 0x40000
Firmware RW Size            : 61 KB
Firmware Heap Offset        : 0x46000
Firmware Heap Size          : 37 KB (total), 2 KB (reserved), 11 KB (used), 23 KB (free)
Firmware Scratch Size       : 4096 B (total), 1400 B (used), 2696 B (free)
Runtime SBI Version         : 3.0
Standard SBI Extensions     : time,rfnc,ipi,base,hsm,srst,pmu,dbcn,fwft,legacy,dbtr,sse
Experimental SBI Extensions : none

Domain0 Name                : root
Domain0 Boot HART           : 0
Domain0 HARTs               : 0*
Domain0 Region00            : 0x0000000000100000-0x0000000000100fff M: (I,R,W) S/U: (R,W)
Domain0 Region01            : 0x0000000010000000-0x0000000010000fff M: (I,R,W) S/U: (R,W)
Domain0 Region02            : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: ()
Domain0 Region03            : 0x0000000080040000-0x000000008004ffff M: (R,W) S/U: ()
Domain0 Region04            : 0x0000000080000000-0x000000008003ffff M: (R,X) 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        : 0x0000000080200000
Domain0 Next Arg1           : 0x0000000087e00000
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

   ____            _
  |  _ \  ___  ___| |__
  | | | |/ _ \/_  / '_ \
  | |_| |  __/ / /| | | |
  |____/ \___//___|_| |_|
  Dezh OS - capability-secure - no ambient authority
  v0 - riscv64 - 126 MiB usable - 4 services

[dezh-boot] alive on bare metal (qemu virt, riscv64, S-mode)
[dezh-boot] boot contract VALIDATED
[dezh-boot] banner: dezh-kernel-boot-v0:qemu-virtio-riscv64:services=4:usable_bytes=132120576
[dezh-boot] no ambient authority: capability seeds bound to declared services only
[dezh-boot] installing trap vector + supervisor timer...
[dezh-boot] enabling Sv39 paging (U-mode confined to its own region)...
[dezh-boot] frame allocator: 28672 x 4 KiB frames (112 MiB free)
[dezh-boot] embedded user ELFs: userprog=8952 bytes, virtio-blk=82264 bytes, dezh-bench=15592 bytes, dezh-note=7080 bytes, dezh-lab=17208 bytes, dezh-calc=10440 bytes, dezh-vault=7824 bytes
[dezh-boot] install manifest v0: root=cairn block=virtio-block marker_sector=0
[dezh-boot] service registry built from boot plan (4 services)

Dezh console. Every command requires an explicit capability.
Type 'help'. The console holds: INSPECT TIME ECHO HALT SPAWN
dezh> ipc-typed-demo
[typed-ipc] demo: typed OK, BAD_REQUEST, TIMEOUT, and DENIED
    [typed-ipc] PING -> 0
  [kernel] task 0 exited (code 0)
    [typed-ipc] BADREQ -> 4
  [kernel] task 1 exited (code 0)
    [typed-ipc] RECV_TIMEOUT -> 3
  [kernel] task 0 exited (code 0)
  [kernel] DENIED send: task 0 holds no IPC capability
    [typed-ipc] no-IPC SEND -> 1
  [kernel] task 0 exited (code 0)
[typed-ipc] PASS: OK=OK, BAD_REQUEST=BAD_REQUEST, TIMEOUT=TIMEOUT, DENIED=DENIED
dezh> ipcstat
ipcstat: sends=4 receives=4 denied_sends=1 timeouts=1 queue_full=0 max_depth=1
dezh> services
[services] starting virtio-block from boot registry as task 0
  [virtio-blk-daemon] started as a long-lived U-mode driver service
  [virtio-blk-daemon] device + DMA capabilities accepted
[services] virtio-block Running (task 0)
runtime services (4 total):
  - init          Init state=Declared task=18446744073709551615 caps=0x5 grants=0x0 restarts=0 last_exit=0 started_tick=0 
  - cairn         Cairn state=Declared task=18446744073709551615 caps=0x35 grants=0x1 restarts=0 last_exit=0 started_tick=0 
  - wasm-runtime  WasmRuntime state=Declared task=18446744073709551615 caps=0x5 grants=0x0 restarts=0 last_exit=0 started_tick=0 
  - virtio-block  VirtioBlock state=Running task=0 caps=0x3d grants=0x3 restarts=0 last_exit=0 started_tick=0 
dezh> install --dry-run
Install Plan: Dezh Root v1
  [01] Probe block service        ready
  [02] Validate boot manifest     ready
  [03] Write root marker          pending
  [04] Initialize app registry    pending
  [05] Install base apps          note lab calc vault
  [06] Verify root/app state      pending
  [07] Commit install report      pending
[##------------------]  14%  probe block service          OK
[#####---------------]  28%  validate boot manifest       OK
[########------------]  42%  write root marker            dry-run
[###########---------]  57%  initialize app registry      dry-run
[##############------]  71%  install base apps            dry-run
[#################---]  85%  verify root/app state        dry-run
[####################] 100%  commit install report        dry-run
[install-v1] dry-run complete; disk not modified
dezh> install run
Install Plan: Dezh Root v1
  [01] Probe block service        ready
  [02] Validate boot manifest     ready
  [03] Write root marker          pending
  [04] Initialize app registry    pending
  [05] Install base apps          note lab calc vault
  [06] Verify root/app state      pending
  [07] Commit install report      pending
[##------------------]  14%  probe block service          OK
[#####---------------]  28%  validate boot manifest       OK
[########------------]  42%  write root marker            running
[services] resolved service virtio-block task=0; launching foreground client
  [virtio-blk-daemon] install-init: wrote marker/root metadata status=0
  [vblk-client] install-init status=0
  [kernel] task 1 exited (code 0)
[###########---------]  57%  initialize app registry      running
[services] resolved service virtio-block task=0; launching foreground client
  [installer] installed note version=0.1.0 state=Active caps=PRINT,IPC root=sector:16
  [vblk-client] app-install note status=0
  [kernel] task 1 exited (code 0)
[##############------]  71%  install base apps            running
[services] resolved service virtio-block task=0; launching foreground client
  [installer] installed lab version=0.1.0 state=Active caps=PRINT,IPC root=sector:17 ui=terminal workers=2
  [vblk-client] app-install lab status=0
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [installer] installed calc version=0.1.0 state=Active caps=PRINT,IPC root=sector:18 compute=integer
  [vblk-client] app-install calc status=0
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [installer] installed vault version=0.1.0 state=Active caps=PRINT,IPC root=sector:19 storage=PrivateValue
  [vblk-client] app-install vault status=0
  [kernel] task 1 exited (code 0)
[#################---]  85%  verify root/app state        running
[install-v1] verifying root marker, metadata, and base app registry
[services] resolved service virtio-block task=0; launching foreground client
  [virtio-blk-daemon] install-check: installed root marker found
  [vblk-client] install-check status=0
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [virtio-blk-daemon] root-status: metadata read status=0
  [vblk-client] root-status status=0
  [vblk-client] root metadata = "DEZHROOT v0 cairn_current=2 cairn_previous=3 metadata_sector=4
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [installed] note version=0.1.0 state=Active caps=PRINT,IPC root=sector:16
  [installed] lab version=0.1.0 state=Active caps=PRINT,IPC root=sector:17 ui=terminal
  [installed] calc version=0.1.0 state=Active caps=PRINT,IPC root=sector:18 compute=integer
  [installed] vault version=0.1.0 state=Active caps=PRINT,IPC root=sector:19 storage=PrivateValue
  [vblk-client] apps installed status=0
  [kernel] task 1 exited (code 0)
[####################] 100%  commit install report        OK
Install Report: Dezh Root v1
  root marker      sector 0
  root metadata    sector 4
  app registry     sectors 5..10
  private data     sectors 16..19
  required service virtio-block
  policy           no ambient authority
events:
  TICK   ACTOR      ACTION          TARGET          RESULT
  0      console    install.run     root-v1         start
  0      installer  install.dryrun  root-v1         OK
  0      console    install.run     root-v1         start
  1      console    app.install     note            start
  1      installer  app.install     note            done
  1      console    app.install     lab             start
  1      installer  app.install     lab             done
  1      console    app.install     calc            start
  1      installer  app.install     calc            done
  1      console    app.install     vault           start
  1      installer  app.install     vault           done
  1      installer  install.verify  root-v1         done
dezh> app-permissions lab
app permissions: lab
  REQUESTED  PRINT IPC
  GRANTED    PRINT IPC
  DENIED     DEVICE_VIRTIO_BLK DMA BLOCK_DIRECT MMIO
  STORAGE    service-mediated via virtio-block daemon
dezh> app-run lab
[services] resolved service virtio-block task=0; launching foreground client
  [installer] lab is installed state=Active
  [vblk-client] app-require lab status=0
  [kernel] task 1 exited (code 0)
[app-run] preparing lab private storage through virtio-block service
[services] resolved service virtio-block task=0; launching foreground client
  [lab-storage] lab-set status=0
  [vblk-client] lab-set status=0
  [kernel] task 1 exited (code 0)
[app-run] launching lab UI + workers with caps=PRINT,IPC only

  +--------------------------------------------------+
  | Dezh Lab :: installable app system probe         |
  +--------------------------------------------------+
  | UI        terminal dashboard                     |
  | Runtime   3 foreground U-mode tasks              |
  | IPC       worker -> dashboard scalar messages    |
  | Storage   private app sector via virtio service  |
  | Caps      PRINT,IPC only; no device/DMA grant    |
  +--------------------------------------------------+
  [lab-ui] waiting for worker signals
    [lab-worker] start id=1
    [lab-worker] start id=2
    [lab-worker] sent signal id=1
  [kernel] task 2 exited (code 0)
    [lab-worker] sent signal id=2
  [kernel] task 3 exited (code 0)
  [lab-ui] signal from task=2
  [lab-ui] payload=701
  [lab-ui] signal from task=3
  [lab-ui] payload=702
  [lab-ui] worker signals received=2
  [lab-ui] PASS: scheduler, IPC, installer launch, and UI path cooperated
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [lab-storage] lab-set status=0
  [vblk-client] lab-set status=0
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [lab-storage] lab-get status=0
  [vblk-client] lab-get status=0
  [vblk-client] lab value = "lab-run-complete
  [kernel] task 1 exited (code 0)
[app-run] lab exited; console returned
dezh> calc 7 + 5
[services] resolved service virtio-block task=0; launching foreground client
  [installer] calc is installed state=Active
  [vblk-client] app-require calc status=0
  [kernel] task 1 exited (code 0)
    [calc] 7 + 5 = 12
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [calc-storage] calc-set status=0
  [vblk-client] calc-set status=0
  [kernel] task 1 exited (code 0)
dezh> calc-history
[services] resolved service virtio-block task=0; launching foreground client
  [calc-storage] calc-get status=0
  [vblk-client] calc-history status=0
  [vblk-client] calc last = "7 + 5 = 12
  [kernel] task 1 exited (code 0)
dezh> vault-put demo-secret
[services] resolved service virtio-block task=0; launching foreground client
  [installer] vault is installed state=Active
  [vblk-client] app-require vault status=0
  [kernel] task 1 exited (code 0)
[services] resolved service virtio-block task=0; launching foreground client
  [vault-storage] vault-put status=0
  [vblk-client] vault-put status=0
  [kernel] task 1 exited (code 0)
dezh> vault-get
[services] resolved service virtio-block task=0; launching foreground client
  [vault-storage] vault-get status=0
  [vblk-client] vault-get status=0
  [vblk-client] vault value = "demo-secret
  [kernel] task 1 exited (code 0)
dezh> app-deny vault
[app-deny] vault has no direct block grant when launched without IPC
    [vault-deny] attempting block IPC without IPC cap
  [kernel] DENIED send: task 1 holds no IPC capability
    [vault-deny] direct block IPC denied
  [kernel] task 1 exited (code 0)
[app-deny] vault has no MMIO/device grant
    [vault-deny] attempting MMIO without device grant
  [kernel] task 1 DENIED: faulted on 0x50000000 (outside its grant) -- killing
[app-deny] vault device/block direct access denied; console survived
dezh> svc-stop virtio-block
[services] stopping virtio-block task=0 with typed STOP
  [virtio-blk-daemon] STOP received; exiting cleanly
  [kernel] task 0 exited (code 0)
  [kernel] task 1 exited (code 0)
[services] svc-stop virtio-block status=0 state=Stopped
dezh> read
[services] virtio-block unavailable: service is Stopped; use `svc-restart virtio-block`
[services] virtio-block unavailable; command failed cleanly
dezh> svc-restart virtio-block
[services] starting virtio-block from boot registry as task 0
  [virtio-blk-daemon] started as a long-lived U-mode driver service
  [virtio-blk-daemon] device + DMA capabilities accepted
[services] virtio-block Running (task 0)
[services] svc-restart virtio-block state=Running restart_count=1
dezh> write recovered
[services] resolved service virtio-block task=0; launching foreground client
  [virtio-blk-daemon] CAIRN SET via IPC status=0
  [vblk-client] cairn set via registered daemon status=0
  [kernel] task 1 exited (code 0)
dezh> read
[services] resolved service virtio-block task=0; launching foreground client
  [virtio-blk-daemon] CAIRN GET via IPC status=0
  [vblk-client] cairn get via registered daemon status=0
  [vblk-client] cairn current = "recovered
  [kernel] task 1 exited (code 0)
dezh> svc-fault-demo virtio-block
[services] resolved service virtio-block task=0; launching foreground client
  [virtio-blk-daemon] FAULT-DEMO received; exiting with fault code
  [kernel] task 0 exited (code 99)
  [kernel] task 1 exited (code 0)
[services] svc-fault-demo virtio-block request_status=0 state=Faulted last_exit=99
dezh> read
[services] virtio-block unavailable: service is Faulted; use `svc-restart virtio-block`
[services] virtio-block unavailable; command failed cleanly
dezh> svc-restart virtio-block
[services] starting virtio-block from boot registry as task 0
  [virtio-blk-daemon] started as a long-lived U-mode driver service
  [virtio-blk-daemon] device + DMA capabilities accepted
[services] virtio-block Running (task 0)
[services] svc-restart virtio-block state=Running restart_count=2
dezh> cairn-demo
[cairn-demo] F2: versioned app state, capability-gated namespaces, rollback
[cairn-demo] 1/6 two commits into ns=note (each is an object + ref move)
  [cairn] v1 store formatted: superblock sector 1600, 255 commit slots
  [cairn] commit ns=note slot=0 parent=none len=7 hash=0xa7d46f4c1e286c79 actor=task1
  [vblk-client] cairn-commit status=0
  [kernel] task 1 exited (code 0)
  [cairn] commit ns=note slot=1 parent=0 len=7 hash=0xa7d46c4c1e286760 actor=task1
  [vblk-client] cairn-commit status=0
  [kernel] task 1 exited (code 0)
[cairn-demo] 2/6 commit log for ns=note (newest first)
  [cairn] log ns=note (newest first):
    slot=1 parent=0 len=7 hash=0xa7d46c4c1e286760 actor=task1 reversible=yes
    slot=0 parent=none len=7 hash=0xa7d46f4c1e286c79 actor=task1 reversible=yes
  [vblk-client] cairn-log status=0
  [kernel] task 1 exited (code 0)
[cairn-demo] 3/6 a bad write lands
  [cairn] commit ns=note slot=2 parent=1 len=15 hash=0xc8e7037cf5e1b495 actor=task1
  [vblk-client] cairn-commit status=0
  [kernel] task 1 exited (code 0)
  [cairn] get ns=note head=2 len=15
  [vblk-client] cairn-get status=0
  [vblk-client] cairn value = "corrupted-write
  [kernel] task 1 exited (code 0)
[cairn-demo] 4/6 rollback one step restores the previous commit
  [cairn] rollback ns=note steps=1 head 2 -> 1
  [cairn] history preserved: rollback moves the ref, commits stay on disk
  [vblk-client] cairn-rollback status=0
  [kernel] task 1 exited (code 0)
  [cairn] get ns=note head=1 len=7
  [vblk-client] cairn-get status=0
  [vblk-client] cairn value = "note-v2
  [kernel] task 1 exited (code 0)
  [cairn] verify ns=note slot=1 hash MATCH 0xa7d46c4c1e286760
  [vblk-client] cairn-verify status=0
  [kernel] task 1 exited (code 0)
[cairn-demo] 5/6 cross-namespace access must be DENIED
[cairn-demo]     client holds CAIRN_NS_vault only and requests ns=note
  [cairn] DENIED: ns=note requires capability CAIRN_NS_0 sender task=1 holds caps=0x0000000000000835
  [cairn] hint: grant the namespace in the app manifest / launch caps
  [vblk-client] cairn-get status=1
  [vblk-client] DENIED by storage service (kernel-attested caps)
  [kernel] task 1 exited (code 1)
[cairn-demo] 6/6 store status
  [cairn] v1 store: commit slots used=3/255 region=sectors 1600..1855
    ns=note cap=CAIRN_NS_0 head=1 commits=2
    ns=lab cap=CAIRN_NS_1 head=none commits=0
    ns=calc cap=CAIRN_NS_2 head=none commits=0
    ns=vault cap=CAIRN_NS_3 head=none commits=0
    ns=agent cap=CAIRN_NS_4 head=none commits=0
  [vblk-client] cairn-status status=0
  [kernel] task 1 exited (code 0)
[cairn-demo] PASS: commit/log/rollback/verify OK and cross-namespace DENIED
[cairn-demo] state is on disk: after reboot, `cairn-get note` still answers
dezh> cairn-log note
  [cairn] log ns=note (newest first):
    slot=1 parent=0 len=7 hash=0xa7d46c4c1e286760 actor=task1 reversible=yes
    slot=0 parent=none len=7 hash=0xa7d46f4c1e286c79 actor=task1 reversible=yes
  [vblk-client] cairn-log status=0
  [kernel] task 1 exited (code 0)
dezh> cairn-status
  [cairn] v1 store: commit slots used=3/255 region=sectors 1600..1855
    ns=note cap=CAIRN_NS_0 head=1 commits=2
    ns=lab cap=CAIRN_NS_1 head=none commits=0
    ns=calc cap=CAIRN_NS_2 head=none commits=0
    ns=vault cap=CAIRN_NS_3 head=none commits=0
    ns=agent cap=CAIRN_NS_4 head=none commits=0
  [vblk-client] cairn-status status=0
  [kernel] task 1 exited (code 0)
dezh> halt
halting.