Device catalog
A device is a PCI model exported to a QEMU host over vfio-user. This page lists device kinds and configuration facts; the PCI/BAR interface, model coverage and guest driver requirements are described in chapter 4, and the device adapter contract is in Device adapters.
Device kinds
Device |
kind |
Description |
Model details |
|---|---|---|---|
|
|
gem5 MI300X performance model; one GPU per process |
|
|
|
QEMU |
|
Declared device kind |
|
Extension point with a custom |
resources/devices/gpu/mi300x.yamlprovides themi300xandmi300x-aarch64templates; the latter overrides only the gem5 binary.resources/devices/pci/qemu-edu.yamlprovides theqemu-eduandqemu-edu-aarch64templates; the former needs a QEMU built with vfio-user support.
Device fields
Field |
Required |
Description |
|---|---|---|
|
yes |
Built-in |
|
no |
Defaults to the |
|
no |
Selects a template; count expands one entry into several device processes |
|
for gem5-mi300x |
gem5 configuration file; |
|
except gem5-mi300x |
gem5-mi300x defaults to |
|
no |
Overrides the adapter command; such commands need |
|
for gem5-mi300x |
Exactly one region named |
|
no |
vendor_id, device_id, msix_vectors and rom; MI300X values must match the hardware when set |
|
no |
Adapter-specific arguments, see Device adapters |
|
no |
modprobe parameters and cmdline hints; cmdline requires a vHost image or kernel |
|
no |
Host-side option ROM, exposed as the vfio-user client romfile |
Launch and readiness contract
The built-in
gem5-mi300xandqemu-deviceadapters generate the launch command; a declared device kind providesargvorcommand.Every device process starts before its host. Readiness probes run in order: the output log marker (
ready_log, by default the MI300X listener line for gem5), socket existence, and QMP negotiation forqemu-device.A ready device hands a lease to each host that depends on it; the device exits when its last lease is released after the host stops.
Every device program must stay in the foreground, keep its resource users in its process group and keep inherited file descriptors open.
The host template passes
pci.romas the vfio-user clientromfile, which the guest can read through the device ROM BAR; the launcher checks that the file exists before allocating session resources.
Devices and the memory pool
Device regions follow guest RAM in declaration order. A region's full name combines the device id and the region name, for example
mi300x-0.vram.MI300X defaults to 16 GiB VRAM and
gpu-8overrides each device to 8 GiB;qemu-eduhas no private region.Region sizes, offsets and alignment are written to
layout.jsonin the session directory; the arithmetic is in Single-machine topologies.
Choosing a device
For the GPU performance model and the
amdgpudriver path, usegem5-mi300x; samples are single-gpu machine and gpu-8 machine.To validate the vfio-user device path or option ROM, use the
qemu-deviceedusample in qemu-device machine.For a custom launch command, declare a device kind and provide
ready_log; no repository sample uses this path yet, and the contract is in Device adapters.Model details are in chapter 4: PCI/BAR in MI300X PCI interface, the performance model in MI300X model, QEMU functional devices in QEMU device models, and driver requirements in Guest driver requirements.