Repository navigation
Docs: plan a hostcall-only IRIX 6.5 guest service - #115
Merged
Merged
Conversation
belikh
force-pushed
the
plan/guest-services
branch
from
October 26, 2026 22:43
1bdf0e9 to
0c37add
Compare
belikh
force-pushed
the
plan/guest-services
branch
from
October 26, 2026 22:43
0c37add to
1156814
Compare
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
force-pushed
the
plan/guest-services
branch
from
October 26, 2026 23:15
501af46 to
5a8f626
Compare
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
force-pushed
the
plan/guest-services
branch
from
October 26, 2026 23:16
5a8f626 to
e39ab8e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
hostcallfeature; if that feature is absentthe 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_guestdtalks to a new in-memorySTREAMhostcall service (3001).STREAM_READ/STREAM_WRITEcarry binary frames with QGA-shaped JSONcontrol messages and raw data chunks;
ENOTYETis the empty-queue poll.src/guest_stream.rsreader thread bridges frames to theexisting CI socket;
iris-ci guest-*andguest ...monitor commands.guest-run(argv-only) andguest-shell(explicit shell), opt-inallow_run/allow_shell; stdout/stderr stream over the data phase.stop unused instances. No second idle detector, no pause/resume, no
machine-stop.iris_guestinst product built with MIPSpro +gendistin the guest.v1.1
guest-ddover hostcall, with 512-byte alignment andallow_disk.image-writefor fast offline host-backed image provisioning (halted only).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-shellbelong in v1 or v1.1, raw-disk scope, offline image write,getloadavgavailability, poll budget, package defaults, QGA schemacompatibility and guest logging.
Sources in §10 separate verified from inferred; remaining IRIX checks are
getloadavg/sysmp, init/rc, the hostcall stub, and shutdown/reboot.