Skip to content

Docs: plan a hostcall-only IRIX 6.5 guest service - #115

Merged
belikh merged 5 commits into
mainfrom
plan/guest-services
Oct 26, 2026
Merged

belikh merged 5 commits into
mainfrom
plan/guest-services

Conversation

@belikh

@belikh belikh commented Oct 26, 2026 •

Copy link
Copy Markdown

Planning only; no code in this PR.

The plan is now hostcall-only. The guest service runs only in an IRIX 6.5
guest under IRIS built with the hostcall feature; if that feature is absent
the host disables the service with a clear message and the agent exits. There
is no serial, TCP, Seeq, NFS or scratch control fallback, and the agent does
not pretend to work on real IRIX or another emulator.

Recommended v1

  • iris_guestd talks to a new in-memory STREAM hostcall service (3001).
    STREAM_READ/STREAM_WRITE carry binary frames with QGA-shaped JSON
    control messages and raw data chunks; ENOTYET is the empty-queue poll.
  • Host side: src/guest_stream.rs reader thread bridges frames to the
    existing CI socket; iris-ci guest-* and guest ... monitor commands.
  • guest-run (argv-only) and guest-shell (explicit shell), opt-in
    allow_run/allow_shell; stdout/stderr stream over the data phase.
  • Lifecycle policy: observe idle-park counters and guest load, then cleanly
    stop unused instances. No second idle detector, no pause/resume, no
    machine-stop.
  • One iris_guest inst product built with MIPSpro + gendist in the guest.

v1.1

  • Raw-disk guest-dd over hostcall, with 512-byte alignment and allow_disk.
  • image-write for fast offline host-backed image provisioning (halted only).
  • Headless profile with a local action allowlist.
  • Optional stdin/file transfer and poll backoff if measurements require it.

The 2 % settled-getty CPU is already solved by the shipped idle detector; the
plan is explicit that the agent is lifecycle/telemetry/automation, and that its
1 ms active / 50 ms idle poll must be measured against idle-pause.

Effort: v1 12–14 engineer-days; v1.1 5–7.

Open questions are in §9: hostcall in every fleet build, whether guest-run/
guest-shell belong in v1 or v1.1, raw-disk scope, offline image write,
getloadavg availability, poll budget, package defaults, QGA schema
compatibility and guest logging.

Sources in §10 separate verified from inferred; remaining IRIX checks are
getloadavg/sysmp, init/rc, the hostcall stub, and shutdown/reboot.

@belikh
belikh force-pushed the plan/guest-services branch from 1bdf0e9 to 0c37add Compare October 26, 2026 22:43
@belikh
belikh force-pushed the plan/guest-services branch from 0c37add to 1156814 Compare October 26, 2026 22:43
The fork is used mainly for headless builds and tests. Put the headless profile in v1 (a fixed xdm/amstart stop), make the fleet/stop policy the primary value, and resolve the eight open questions for that use case. Desktop management, exec/file and QGA wire compatibility stay out.
Headless development wants stdin/stdout/exit status without console scraping. Add guest-run and guest-shell: an opt-in, argv-first streaming pipe over GuestLink, with bulk data through NFS/scratch or the TCP data path and a separate exec/file security boundary. QGA's non-streaming guest-exec is not the shape.
Serial stays the control/lifecycle channel. guest-run and guest-shell carry data over a derived 127.0.0.1 forward to the guest's one-shot, token-authenticated listener; 10 Mbps SEEQ is enough for logs and small pipes, with NFS/scratch for bulk and hostcall or a new device if that is not enough.
@belikh
belikh force-pushed the plan/guest-services branch from 501af46 to 5a8f626 Compare October 26, 2026 23:15
Rewrite the plan around the in-memory STREAM hostcall service (3001). The agent polls STREAM_READ for control and data, the host bridges frames to the existing CI socket, and guest-run/guest-shell plus raw-disk dd use the binary data phase. A build without hostcall disables the service and the agent exits; there is no serial, TCP, Seeq, NFS or scratch fallback. Re-estimate v1 and v1.1 and carry the QGA research, idle analysis, packaging, lifecycle policy and security forward.
@belikh
belikh force-pushed the plan/guest-services branch from 5a8f626 to e39ab8e Compare October 26, 2026 23:16
@belikh belikh changed the title Docs: plan an IRIX 6.5 guest service Docs: plan a hostcall-only IRIX 6.5 guest service Oct 26, 2026
@belikh
belikh merged commit 7af30e7 into main Oct 26, 2026
7 checks passed
@belikh
belikh deleted the plan/guest-services branch October 26, 2026 23:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant