TacidOS
Developers
Documentation

Decision 0099

Display and compute roles, with reviewed VM ownership

Architecture decision record 0099: Display and compute roles, with reviewed VM ownership

Status
Accepted
Date
2026-10-02

Context

A Radeon display plus two identical NVIDIA compute cards cannot be represented by one graphics profile. NVIDIA presence previously won installer detection and also selected the compute engine. A fixed /dev/nvidia0 inference grant omitted the second card and did not account for changing indices.

Prior decisions

ADR-0008 reserves privileged changes to curated paths. ADR-0023 requires physical evidence for hardware claims. ADR-0053 keeps one compositor.

Decision

Keep gpu.profile as the display/early boot role. Add gpu.computeProfile, with legacy-compatible defaults, for package acceleration and inference device classes. A reviewed display PCI address produces a DRM symlink for Aquamarine; it is not a permanent numbered DRM device. Mixed AMD/NVIDIA detection proposes AMD display and NVIDIA compute. This proposal identifies a vendor, not proof that every AMD card is integrated; the installer shows the complete configuration and --body overrides are reviewed before its existing explicit destructive confirmation.

Enable the existing curated libvirt service in workstations. Local libvirt management uses its existing Polkit/group path; it adds no Tacid root verb or agent permission. An owner-only passthrough module is opt-in and uses real PCI addresses, never vendor/device IDs. A libvirt prepare hook checks whole groups and conservatively refuses any active NVIDIA CUDA/render device usage. Libvirt managed hostdevs perform detach and reattach. The guard does not kill jobs or prove NVIDIA reset safety.

Consequences

Both compute cards initially belong to Linux. One or both may be assigned to Windows only after owner review, an explicit VM start and idleness checks. Stop inference before transitions and restart after Linux-owned devices settle. Race-free workload exclusion is still the person’s responsibility: do not launch new GPU jobs during a transition. No autonomous GPU ownership control is exposed to agents. Monitor input and peripherals are physical actions/configuration, independent of workspaces. Recovery without a reboot is pending hardware validation.

Alternatives rejected

A second host OS, a custom hypervisor, global VFIO ID binding for identical cards, automatic job termination, and a seamless switching claim without physical evidence.