Skip to content

GPU and PCIe passthrough ​

AtomOS exposes physical PCIe devices to guests when the host firmware, IOMMU, and device grouping allow safe assignment. The common case is whole-GPU passthrough (one or more cards dedicated to a VM). Partitioning technologies (vGPU, MIG, SR-IOV) are separate capabilities—confirm per release before planning capacity.

PCI passthrough overview ​

Passthrough gives a guest direct access to hardware (typically NVIDIA/AMD GPUs, sometimes other accelerators). The hypervisor binds the device via VFIO after IOMMU isolation.

mermaid
flowchart TB
  HW[Physical GPU / PCIe device]
  IOMMU[VT-d / AMD-Vi IOMMU groups]
  VFIO[VFIO driver binding]
  VM[KVM guest with native driver]
  HW --> IOMMU --> VFIO --> VM

Host prerequisites ​

RequirementAction
CPU virtualizationVT-x / AMD-V enabled in firmware
IOMMUIntel VT-d or AMD AMD-Vi enabled
KernelIOMMU boot parameters per distro docs (validate on AlmaLinux 9 host)
Device visibilitysudo atomos-cli --pci-list and lspci -nn on the host
IsolationAll functions in the IOMMU group that must move together (GPU + audio function on same card)

Validate before purchase

Record vendor:device IDs from lspci -nn (for example 10de:24b0) for every GPU you plan to pass through. Match them in the VM spec.

IOMMU groups and safety ​

  • Devices in the same IOMMU group cannot be isolated from one another for DMA purposes.
  • Passing through one function often requires passing related functions or using ACS-capable topologies.
  • Do not assume a cloud or nested-virt instance exposes usable IOMMU for passthrough—validate on bare metal for production GPU workloads (Hardware).

Guest configuration ​

  1. Create a VM with adequate CPU, memory, and NUMA awareness for GPU workloads.
  2. Request devices in the pledge/spec using PCI identifiers (see example below).
  3. Install vendor guest drivers (NVIDIA, AMD, etc.) inside the VM.
  4. Run representative AI/ML, CUDA, or graphics tests before production cutover.

Example request fragment ​

json
{
  "pci": [{ "vendor": "10de", "model": "24b0", "quantity": 1 }]
}
FieldMeaning
vendorPCI vendor ID (hex, without 0x)
modelPCI device ID (hex)
quantityNumber of matching devices to assign

Use IDs from lspci or atomos-cli --pci-list on the target host—IDs differ by SKU and slot.

Migration, HA, and maintenance limits ​

TopicTypical constraint
Live migrationNot supported for guests with assigned physical GPUs—plan stop or recreate on another GPU host
Host failure recoveryRecreate requires free GPU with matching IDs on a peer (Availability)
Planned maintenanceShutdown guest; drain GPU host like any non-migratable workload
Driver updatesHost and guest driver upgrades may need coordinated reboots

Document GPU-backed VMs explicitly in runbooks (Availability & recovery).

GPU partitioning: vGPU, MIG, SR-IOV (distinct from passthrough) ​

These technologies slice or virtualize accelerator capacity. They are not the same as whole-device passthrough and must be checked per AtomOS release and hardware generation.

TechnologyIdeaDocumentation status
NVIDIA vGPULicensed virtual GPU profiles on supported datacenter cardsPlanned / unverified in public AtomOS docs—not GA unless confirmed for your build
NVIDIA MIGHardware partitions on A100/H100 class GPUsPlanned / unverified — confirm with Elemento
SR-IOVVirtual functions on NICs or some acceleratorsPlanned / unverified for general GPU SR-IOV — confirm per device and release
AMD MxGPUAMD virtualized GPUPlanned / unverified — confirm with Elemento

Do not assume GA

If a sales conversation or lab demo mentioned vGPU or MIG, still verify package availability, licensing, and Electros specfile fields on the exact release you deploy. Until verified, plan whole-GPU passthrough only.

  1. Confirm GPU visibility on the host; record vendor and device IDs.
  2. Enable IOMMU; review PCIe groups; isolate required functions.
  3. Create a test VM with the PCI fragment and install guest drivers.
  4. Benchmark a representative workload.
  5. Record migration and HA exclusions in your operational docs.
  6. If you need shared GPU capacity across many VMs, open a capacity planning discussion with Elemento before relying on partitioning features.