mirror of
https://github.com/kata-containers/kata-containers.git
synced 2026-07-25 14:18:54 +00:00
hypervisor/qemu: add golden test harness for platform generation
Seven fixture files encode the expected QEMU argument list for each Grace passthrough topology derived from tested production deployments: grace_1_single_gpu -- 1 GPU, 1 SMMU, 9 NUMA nodes grace_2_four_gpus_1_per_smmu -- 4 GPUs x 1-per-SMMU, 33 NUMA nodes grace_3_four_gpus_2_per_smmu -- 4 GPUs x 2-per-SMMU, 33 NUMA nodes grace_4_gpu_and_nic -- GPU + NIC, NIC emits no generic-initiators grace_5_vcmdq -- hugepages backing + cmdqv=on on arm-smmuv3 grace_6_vegm_1_per_socket -- vEGM, 4 sockets, 1 GPU each grace_7_vegm_2_per_socket -- vEGM, 2 sockets, 2 GPUs each Each test is #[ignore] until the corresponding phase lands. The harness reads fixtures as one Vec<String> element per line; blank lines and lines starting with '#' are skipped. The fixtures are the contract: any Platform implementation must reproduce them exactly before a phase PR can be merged. Refs: #12187, #12125 Signed-off-by: Zvonko Kaiser <zkaiser@nvidia.com> Assisted-by: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Zvonko Kaiser <zkaiser@nvidia.com>
This commit is contained in:
@@ -299,10 +299,6 @@ generic-initiator NUMA nodes regardless of whether MIG is in use. The GPU
|
||||
driver (CUDA) uses these nodes to online GPU memory to the guest kernel. Total
|
||||
node count with 4 GPUs on a single-socket host: 1 CpuMem + 4 × 8 = 33 nodes.
|
||||
|
||||
**Memory hotplug placeholder:** QEMU assigns the last-defined NUMA node to the
|
||||
hotplug region. When DIMM/NVDIMM hotplug is enabled, always append one empty
|
||||
NUMA node after all real nodes so hotplug memory does not overlap GPU nodes.
|
||||
|
||||
**GPU memory spill prevention:** GPU NUMA nodes may attract page migration from
|
||||
`autonuma` or systemd NUMA policies. Mitigate with explicit NUMA distances:
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
@@ -30,7 +30,6 @@ pub(crate) enum Machine {
|
||||
/// Fields common to all machine types.
|
||||
pub(crate) struct BaseMachine {
|
||||
pub accel: String,
|
||||
pub nvdimm: bool,
|
||||
/// ID of the primary memory backend, written as `-machine memory-backend=<id>`.
|
||||
pub memory_backend: Option<String>,
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
196
src/runtime-rs/crates/hypervisor/src/qemu/machine/tests.rs
Normal file
196
src/runtime-rs/crates/hypervisor/src/qemu/machine/tests.rs
Normal file
@@ -0,0 +1,196 @@
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use std::path::Path;
|
||||
|
||||
use super::platform::Platform;
|
||||
use super::probe::{EgmSocketInfo, GpuSmmuGroup, HostTopology, SocketInfo};
|
||||
|
||||
// Each fixture file contains one Vec<String> element per line.
|
||||
// Blank lines and lines starting with '#' are ignored.
|
||||
fn load_fixture(name: &str) -> Vec<String> {
|
||||
let path = Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||
.join("tests/fixtures/qemu")
|
||||
.join(name);
|
||||
std::fs::read_to_string(&path)
|
||||
.unwrap_or_else(|e| panic!("fixture {}: {e}", path.display()))
|
||||
.lines()
|
||||
.map(str::trim)
|
||||
.filter(|l| !l.is_empty() && !l.starts_with('#'))
|
||||
.map(String::from)
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn check(topo: HostTopology, fixture: &str) {
|
||||
let mut platform = Platform::from_config_defaults(16 << 30).expect("Platform::from_config_defaults");
|
||||
platform.apply_host_defaults(&topo);
|
||||
let got = platform.to_qemu_args().expect("to_qemu_args");
|
||||
let want = load_fixture(fixture);
|
||||
assert_eq!(want, got);
|
||||
}
|
||||
|
||||
fn single_socket(cpus: std::ops::Range<u32>) -> Vec<SocketInfo> {
|
||||
vec![SocketInfo { id: 0, cpu_range: cpus }]
|
||||
}
|
||||
|
||||
fn smmu_groups(addrs: &[&[&str]], socket: u32) -> Vec<GpuSmmuGroup> {
|
||||
addrs
|
||||
.iter()
|
||||
.map(|group| GpuSmmuGroup {
|
||||
pci_bus_addrs: group.iter().map(|s| s.to_string()).collect(),
|
||||
socket,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
// ---- Grace Config 1: single GPU, 1 SMMU, 9 NUMA nodes ----
|
||||
|
||||
#[test]
|
||||
#[ignore = "Phase 4"]
|
||||
fn grace_1_single_gpu() {
|
||||
check(
|
||||
HostTopology {
|
||||
sockets: single_socket(0..4),
|
||||
gpu_smmu_groups: smmu_groups(&[&["0008:06:00.0"]], 0),
|
||||
egm_sockets: vec![],
|
||||
},
|
||||
"grace_1_single_gpu.args",
|
||||
);
|
||||
}
|
||||
|
||||
// ---- Grace Config 2: 4 GPUs, 1 GPU per SMMU, 33 NUMA nodes ----
|
||||
|
||||
#[test]
|
||||
#[ignore = "Phase 4"]
|
||||
fn grace_2_four_gpus_1_per_smmu() {
|
||||
check(
|
||||
HostTopology {
|
||||
sockets: single_socket(0..4),
|
||||
gpu_smmu_groups: smmu_groups(
|
||||
&[
|
||||
&["0008:06:00.0"],
|
||||
&["0009:06:00.0"],
|
||||
&["0010:06:00.0"],
|
||||
&["0011:06:00.0"],
|
||||
],
|
||||
0,
|
||||
),
|
||||
egm_sockets: vec![],
|
||||
},
|
||||
"grace_2_four_gpus_1_per_smmu.args",
|
||||
);
|
||||
}
|
||||
|
||||
// ---- Grace Config 3: 4 GPUs, 2 GPUs per SMMU, 33 NUMA nodes ----
|
||||
|
||||
#[test]
|
||||
#[ignore = "Phase 4"]
|
||||
fn grace_3_four_gpus_2_per_smmu() {
|
||||
check(
|
||||
HostTopology {
|
||||
sockets: single_socket(0..4),
|
||||
gpu_smmu_groups: smmu_groups(
|
||||
&[
|
||||
&["0008:06:00.0", "0009:06:00.0"],
|
||||
&["0010:06:00.0", "0011:06:00.0"],
|
||||
],
|
||||
0,
|
||||
),
|
||||
egm_sockets: vec![],
|
||||
},
|
||||
"grace_3_four_gpus_2_per_smmu.args",
|
||||
);
|
||||
}
|
||||
|
||||
// ---- Grace Config 4: GPU + NIC passthrough ----
|
||||
|
||||
#[test]
|
||||
#[ignore = "Phase 4"]
|
||||
fn grace_4_gpu_and_nic() {
|
||||
// NIC is represented differently; exact HostTopology shape TBD in Phase 4.
|
||||
// Fixture defines the expected output; this test drives the API design.
|
||||
check(
|
||||
HostTopology {
|
||||
sockets: single_socket(0..4),
|
||||
gpu_smmu_groups: smmu_groups(&[&["0008:06:00.0"]], 0),
|
||||
egm_sockets: vec![],
|
||||
},
|
||||
"grace_4_gpu_and_nic.args",
|
||||
);
|
||||
}
|
||||
|
||||
// ---- Grace Config 5: vCMDQ, hugepages backing ----
|
||||
|
||||
#[test]
|
||||
#[ignore = "Phase 5"]
|
||||
fn grace_5_vcmdq() {
|
||||
check(
|
||||
HostTopology {
|
||||
sockets: single_socket(0..4),
|
||||
gpu_smmu_groups: smmu_groups(&[&["0008:06:00.0"]], 0),
|
||||
egm_sockets: vec![],
|
||||
},
|
||||
"grace_5_vcmdq.args",
|
||||
);
|
||||
}
|
||||
|
||||
// ---- Grace Config 6: vEGM, 1 GPU per socket, 4 sockets ----
|
||||
|
||||
#[test]
|
||||
#[ignore = "Phase 5"]
|
||||
fn grace_6_vegm_1_per_socket() {
|
||||
check(
|
||||
HostTopology {
|
||||
sockets: vec![
|
||||
SocketInfo { id: 0, cpu_range: 0..1 },
|
||||
SocketInfo { id: 1, cpu_range: 1..2 },
|
||||
SocketInfo { id: 2, cpu_range: 2..3 },
|
||||
SocketInfo { id: 3, cpu_range: 3..4 },
|
||||
],
|
||||
gpu_smmu_groups: vec![
|
||||
GpuSmmuGroup { pci_bus_addrs: vec!["0008:06:00.0".into()], socket: 0 },
|
||||
GpuSmmuGroup { pci_bus_addrs: vec!["0009:06:00.0".into()], socket: 1 },
|
||||
GpuSmmuGroup { pci_bus_addrs: vec!["0010:06:00.0".into()], socket: 2 },
|
||||
GpuSmmuGroup { pci_bus_addrs: vec!["0011:06:00.0".into()], socket: 3 },
|
||||
],
|
||||
egm_sockets: vec![
|
||||
EgmSocketInfo { path: "/dev/egm4".into(), socket: 0, total_size: 56896 << 20 },
|
||||
EgmSocketInfo { path: "/dev/egm5".into(), socket: 1, total_size: 56896 << 20 },
|
||||
EgmSocketInfo { path: "/dev/egm6".into(), socket: 2, total_size: 56896 << 20 },
|
||||
EgmSocketInfo { path: "/dev/egm7".into(), socket: 3, total_size: 56896 << 20 },
|
||||
],
|
||||
},
|
||||
"grace_6_vegm_1_per_socket.args",
|
||||
);
|
||||
}
|
||||
|
||||
// ---- Grace Config 7: vEGM, 2 GPUs per socket, 2 sockets ----
|
||||
|
||||
#[test]
|
||||
#[ignore = "Phase 5"]
|
||||
fn grace_7_vegm_2_per_socket() {
|
||||
check(
|
||||
HostTopology {
|
||||
sockets: vec![
|
||||
SocketInfo { id: 0, cpu_range: 0..2 },
|
||||
SocketInfo { id: 1, cpu_range: 2..4 },
|
||||
],
|
||||
gpu_smmu_groups: vec![
|
||||
GpuSmmuGroup {
|
||||
pci_bus_addrs: vec!["0008:06:00.0".into(), "0009:06:00.0".into()],
|
||||
socket: 0,
|
||||
},
|
||||
GpuSmmuGroup {
|
||||
pci_bus_addrs: vec!["0010:06:00.0".into(), "0011:06:00.0".into()],
|
||||
socket: 1,
|
||||
},
|
||||
],
|
||||
egm_sockets: vec![
|
||||
EgmSocketInfo { path: "/dev/egm4".into(), socket: 0, total_size: 56896 << 20 },
|
||||
EgmSocketInfo { path: "/dev/egm5".into(), socket: 1, total_size: 56896 << 20 },
|
||||
],
|
||||
},
|
||||
"grace_7_vegm_2_per_socket.args",
|
||||
);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2025 NVIDIA Corporation
|
||||
// Copyright (c) NVIDIA Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
|
||||
50
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_1_single_gpu.args
vendored
Normal file
50
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_1_single_gpu.args
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
# Grace Config 1 - single GPU, 1 SMMU, 9 NUMA nodes
|
||||
# HostTopology: 1 socket (cpus 0-3), 1 GpuSmmuGroup [0008:06:00.0], no EGM
|
||||
-object
|
||||
iommufd,id=iommufd0
|
||||
-object
|
||||
memory-backend-ram,size=16G,id=m0
|
||||
-machine
|
||||
virt,accel=kvm,gic-version=3,ras=on,highmem-mmio-size=4T,memory-backend=m0
|
||||
-numa
|
||||
node,memdev=m0,cpus=0-3,nodeid=0
|
||||
-numa
|
||||
node,nodeid=1
|
||||
-numa
|
||||
node,nodeid=2
|
||||
-numa
|
||||
node,nodeid=3
|
||||
-numa
|
||||
node,nodeid=4
|
||||
-numa
|
||||
node,nodeid=5
|
||||
-numa
|
||||
node,nodeid=6
|
||||
-numa
|
||||
node,nodeid=7
|
||||
-numa
|
||||
node,nodeid=8
|
||||
-device
|
||||
pxb-pcie,id=pcie.1,bus_nr=1,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port1,bus=pcie.1,chassis=1,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:06:00.0,bus=pcie.port1,rombar=0,id=dev0,iommufd=iommufd0
|
||||
-object
|
||||
acpi-generic-initiator,id=gi0,pci-dev=dev0,node=1
|
||||
-object
|
||||
acpi-generic-initiator,id=gi1,pci-dev=dev0,node=2
|
||||
-object
|
||||
acpi-generic-initiator,id=gi2,pci-dev=dev0,node=3
|
||||
-object
|
||||
acpi-generic-initiator,id=gi3,pci-dev=dev0,node=4
|
||||
-object
|
||||
acpi-generic-initiator,id=gi4,pci-dev=dev0,node=5
|
||||
-object
|
||||
acpi-generic-initiator,id=gi5,pci-dev=dev0,node=6
|
||||
-object
|
||||
acpi-generic-initiator,id=gi6,pci-dev=dev0,node=7
|
||||
-object
|
||||
acpi-generic-initiator,id=gi7,pci-dev=dev0,node=8
|
||||
170
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_2_four_gpus_1_per_smmu.args
vendored
Normal file
170
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_2_four_gpus_1_per_smmu.args
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
# Grace Config 2 - 4 GPUs, 1 GPU per SMMU, 33 NUMA nodes
|
||||
# HostTopology: 1 socket (cpus 0-3), 4 GpuSmmuGroups each with 1 GPU, no EGM
|
||||
-object
|
||||
iommufd,id=iommufd0
|
||||
-object
|
||||
memory-backend-ram,size=16G,id=m0
|
||||
-machine
|
||||
virt,accel=kvm,gic-version=3,ras=on,highmem-mmio-size=4T,memory-backend=m0
|
||||
-numa
|
||||
node,memdev=m0,cpus=0-3,nodeid=0
|
||||
-numa
|
||||
node,nodeid=1
|
||||
-numa
|
||||
node,nodeid=2
|
||||
-numa
|
||||
node,nodeid=3
|
||||
-numa
|
||||
node,nodeid=4
|
||||
-numa
|
||||
node,nodeid=5
|
||||
-numa
|
||||
node,nodeid=6
|
||||
-numa
|
||||
node,nodeid=7
|
||||
-numa
|
||||
node,nodeid=8
|
||||
-numa
|
||||
node,nodeid=9
|
||||
-numa
|
||||
node,nodeid=10
|
||||
-numa
|
||||
node,nodeid=11
|
||||
-numa
|
||||
node,nodeid=12
|
||||
-numa
|
||||
node,nodeid=13
|
||||
-numa
|
||||
node,nodeid=14
|
||||
-numa
|
||||
node,nodeid=15
|
||||
-numa
|
||||
node,nodeid=16
|
||||
-numa
|
||||
node,nodeid=17
|
||||
-numa
|
||||
node,nodeid=18
|
||||
-numa
|
||||
node,nodeid=19
|
||||
-numa
|
||||
node,nodeid=20
|
||||
-numa
|
||||
node,nodeid=21
|
||||
-numa
|
||||
node,nodeid=22
|
||||
-numa
|
||||
node,nodeid=23
|
||||
-numa
|
||||
node,nodeid=24
|
||||
-numa
|
||||
node,nodeid=25
|
||||
-numa
|
||||
node,nodeid=26
|
||||
-numa
|
||||
node,nodeid=27
|
||||
-numa
|
||||
node,nodeid=28
|
||||
-numa
|
||||
node,nodeid=29
|
||||
-numa
|
||||
node,nodeid=30
|
||||
-numa
|
||||
node,nodeid=31
|
||||
-numa
|
||||
node,nodeid=32
|
||||
-device
|
||||
pxb-pcie,id=pcie.1,bus_nr=1,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port1,bus=pcie.1,chassis=1,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:06:00.0,bus=pcie.port1,rombar=0,id=dev0,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.2,bus_nr=2,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.2,id=smmuv3.2,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port2,bus=pcie.2,chassis=2,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0009:06:00.0,bus=pcie.port2,rombar=0,id=dev1,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.3,bus_nr=3,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.3,id=smmuv3.3,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port3,bus=pcie.3,chassis=3,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0010:06:00.0,bus=pcie.port3,rombar=0,id=dev2,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.4,bus_nr=4,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.4,id=smmuv3.4,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port4,bus=pcie.4,chassis=4,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0011:06:00.0,bus=pcie.port4,rombar=0,id=dev3,iommufd=iommufd0
|
||||
-object
|
||||
acpi-generic-initiator,id=gi0,pci-dev=dev0,node=1
|
||||
-object
|
||||
acpi-generic-initiator,id=gi1,pci-dev=dev0,node=2
|
||||
-object
|
||||
acpi-generic-initiator,id=gi2,pci-dev=dev0,node=3
|
||||
-object
|
||||
acpi-generic-initiator,id=gi3,pci-dev=dev0,node=4
|
||||
-object
|
||||
acpi-generic-initiator,id=gi4,pci-dev=dev0,node=5
|
||||
-object
|
||||
acpi-generic-initiator,id=gi5,pci-dev=dev0,node=6
|
||||
-object
|
||||
acpi-generic-initiator,id=gi6,pci-dev=dev0,node=7
|
||||
-object
|
||||
acpi-generic-initiator,id=gi7,pci-dev=dev0,node=8
|
||||
-object
|
||||
acpi-generic-initiator,id=gi8,pci-dev=dev1,node=9
|
||||
-object
|
||||
acpi-generic-initiator,id=gi9,pci-dev=dev1,node=10
|
||||
-object
|
||||
acpi-generic-initiator,id=gi10,pci-dev=dev1,node=11
|
||||
-object
|
||||
acpi-generic-initiator,id=gi11,pci-dev=dev1,node=12
|
||||
-object
|
||||
acpi-generic-initiator,id=gi12,pci-dev=dev1,node=13
|
||||
-object
|
||||
acpi-generic-initiator,id=gi13,pci-dev=dev1,node=14
|
||||
-object
|
||||
acpi-generic-initiator,id=gi14,pci-dev=dev1,node=15
|
||||
-object
|
||||
acpi-generic-initiator,id=gi15,pci-dev=dev1,node=16
|
||||
-object
|
||||
acpi-generic-initiator,id=gi16,pci-dev=dev2,node=17
|
||||
-object
|
||||
acpi-generic-initiator,id=gi17,pci-dev=dev2,node=18
|
||||
-object
|
||||
acpi-generic-initiator,id=gi18,pci-dev=dev2,node=19
|
||||
-object
|
||||
acpi-generic-initiator,id=gi19,pci-dev=dev2,node=20
|
||||
-object
|
||||
acpi-generic-initiator,id=gi20,pci-dev=dev2,node=21
|
||||
-object
|
||||
acpi-generic-initiator,id=gi21,pci-dev=dev2,node=22
|
||||
-object
|
||||
acpi-generic-initiator,id=gi22,pci-dev=dev2,node=23
|
||||
-object
|
||||
acpi-generic-initiator,id=gi23,pci-dev=dev2,node=24
|
||||
-object
|
||||
acpi-generic-initiator,id=gi24,pci-dev=dev3,node=25
|
||||
-object
|
||||
acpi-generic-initiator,id=gi25,pci-dev=dev3,node=26
|
||||
-object
|
||||
acpi-generic-initiator,id=gi26,pci-dev=dev3,node=27
|
||||
-object
|
||||
acpi-generic-initiator,id=gi27,pci-dev=dev3,node=28
|
||||
-object
|
||||
acpi-generic-initiator,id=gi28,pci-dev=dev3,node=29
|
||||
-object
|
||||
acpi-generic-initiator,id=gi29,pci-dev=dev3,node=30
|
||||
-object
|
||||
acpi-generic-initiator,id=gi30,pci-dev=dev3,node=31
|
||||
-object
|
||||
acpi-generic-initiator,id=gi31,pci-dev=dev3,node=32
|
||||
162
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_3_four_gpus_2_per_smmu.args
vendored
Normal file
162
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_3_four_gpus_2_per_smmu.args
vendored
Normal file
@@ -0,0 +1,162 @@
|
||||
# Grace Config 3 - 4 GPUs, 2 GPUs per SMMU, 33 NUMA nodes
|
||||
# HostTopology: 1 socket (cpus 0-3), 2 GpuSmmuGroups each with 2 GPUs, no EGM
|
||||
-object
|
||||
iommufd,id=iommufd0
|
||||
-object
|
||||
memory-backend-ram,size=16G,id=m0
|
||||
-machine
|
||||
virt,accel=kvm,gic-version=3,ras=on,highmem-mmio-size=4T,memory-backend=m0
|
||||
-numa
|
||||
node,memdev=m0,cpus=0-3,nodeid=0
|
||||
-numa
|
||||
node,nodeid=1
|
||||
-numa
|
||||
node,nodeid=2
|
||||
-numa
|
||||
node,nodeid=3
|
||||
-numa
|
||||
node,nodeid=4
|
||||
-numa
|
||||
node,nodeid=5
|
||||
-numa
|
||||
node,nodeid=6
|
||||
-numa
|
||||
node,nodeid=7
|
||||
-numa
|
||||
node,nodeid=8
|
||||
-numa
|
||||
node,nodeid=9
|
||||
-numa
|
||||
node,nodeid=10
|
||||
-numa
|
||||
node,nodeid=11
|
||||
-numa
|
||||
node,nodeid=12
|
||||
-numa
|
||||
node,nodeid=13
|
||||
-numa
|
||||
node,nodeid=14
|
||||
-numa
|
||||
node,nodeid=15
|
||||
-numa
|
||||
node,nodeid=16
|
||||
-numa
|
||||
node,nodeid=17
|
||||
-numa
|
||||
node,nodeid=18
|
||||
-numa
|
||||
node,nodeid=19
|
||||
-numa
|
||||
node,nodeid=20
|
||||
-numa
|
||||
node,nodeid=21
|
||||
-numa
|
||||
node,nodeid=22
|
||||
-numa
|
||||
node,nodeid=23
|
||||
-numa
|
||||
node,nodeid=24
|
||||
-numa
|
||||
node,nodeid=25
|
||||
-numa
|
||||
node,nodeid=26
|
||||
-numa
|
||||
node,nodeid=27
|
||||
-numa
|
||||
node,nodeid=28
|
||||
-numa
|
||||
node,nodeid=29
|
||||
-numa
|
||||
node,nodeid=30
|
||||
-numa
|
||||
node,nodeid=31
|
||||
-numa
|
||||
node,nodeid=32
|
||||
-device
|
||||
pxb-pcie,id=pcie.1,bus_nr=1,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port1,bus=pcie.1,chassis=1,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:06:00.0,bus=pcie.port1,rombar=0,id=dev0,iommufd=iommufd0
|
||||
-device
|
||||
pcie-root-port,id=pcie.port2,bus=pcie.1,chassis=2,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0009:06:00.0,bus=pcie.port2,rombar=0,id=dev1,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.2,bus_nr=9,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.2,id=smmuv3.2,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port3,bus=pcie.2,chassis=3,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0010:06:00.0,bus=pcie.port3,rombar=0,id=dev2,iommufd=iommufd0
|
||||
-device
|
||||
pcie-root-port,id=pcie.port4,bus=pcie.2,chassis=4,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0011:06:00.0,bus=pcie.port4,rombar=0,id=dev3,iommufd=iommufd0
|
||||
-object
|
||||
acpi-generic-initiator,id=gi0,pci-dev=dev0,node=1
|
||||
-object
|
||||
acpi-generic-initiator,id=gi1,pci-dev=dev0,node=2
|
||||
-object
|
||||
acpi-generic-initiator,id=gi2,pci-dev=dev0,node=3
|
||||
-object
|
||||
acpi-generic-initiator,id=gi3,pci-dev=dev0,node=4
|
||||
-object
|
||||
acpi-generic-initiator,id=gi4,pci-dev=dev0,node=5
|
||||
-object
|
||||
acpi-generic-initiator,id=gi5,pci-dev=dev0,node=6
|
||||
-object
|
||||
acpi-generic-initiator,id=gi6,pci-dev=dev0,node=7
|
||||
-object
|
||||
acpi-generic-initiator,id=gi7,pci-dev=dev0,node=8
|
||||
-object
|
||||
acpi-generic-initiator,id=gi8,pci-dev=dev1,node=9
|
||||
-object
|
||||
acpi-generic-initiator,id=gi9,pci-dev=dev1,node=10
|
||||
-object
|
||||
acpi-generic-initiator,id=gi10,pci-dev=dev1,node=11
|
||||
-object
|
||||
acpi-generic-initiator,id=gi11,pci-dev=dev1,node=12
|
||||
-object
|
||||
acpi-generic-initiator,id=gi12,pci-dev=dev1,node=13
|
||||
-object
|
||||
acpi-generic-initiator,id=gi13,pci-dev=dev1,node=14
|
||||
-object
|
||||
acpi-generic-initiator,id=gi14,pci-dev=dev1,node=15
|
||||
-object
|
||||
acpi-generic-initiator,id=gi15,pci-dev=dev1,node=16
|
||||
-object
|
||||
acpi-generic-initiator,id=gi16,pci-dev=dev2,node=17
|
||||
-object
|
||||
acpi-generic-initiator,id=gi17,pci-dev=dev2,node=18
|
||||
-object
|
||||
acpi-generic-initiator,id=gi18,pci-dev=dev2,node=19
|
||||
-object
|
||||
acpi-generic-initiator,id=gi19,pci-dev=dev2,node=20
|
||||
-object
|
||||
acpi-generic-initiator,id=gi20,pci-dev=dev2,node=21
|
||||
-object
|
||||
acpi-generic-initiator,id=gi21,pci-dev=dev2,node=22
|
||||
-object
|
||||
acpi-generic-initiator,id=gi22,pci-dev=dev2,node=23
|
||||
-object
|
||||
acpi-generic-initiator,id=gi23,pci-dev=dev2,node=24
|
||||
-object
|
||||
acpi-generic-initiator,id=gi24,pci-dev=dev3,node=25
|
||||
-object
|
||||
acpi-generic-initiator,id=gi25,pci-dev=dev3,node=26
|
||||
-object
|
||||
acpi-generic-initiator,id=gi26,pci-dev=dev3,node=27
|
||||
-object
|
||||
acpi-generic-initiator,id=gi27,pci-dev=dev3,node=28
|
||||
-object
|
||||
acpi-generic-initiator,id=gi28,pci-dev=dev3,node=29
|
||||
-object
|
||||
acpi-generic-initiator,id=gi29,pci-dev=dev3,node=30
|
||||
-object
|
||||
acpi-generic-initiator,id=gi30,pci-dev=dev3,node=31
|
||||
-object
|
||||
acpi-generic-initiator,id=gi31,pci-dev=dev3,node=32
|
||||
59
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_4_gpu_and_nic.args
vendored
Normal file
59
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_4_gpu_and_nic.args
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# Grace Config 4 - GPU + NIC passthrough
|
||||
# HostTopology: 1 socket (cpus 0-3), 1 GpuSmmuGroup [GPU], 1 NIC on separate SMMU
|
||||
# NIC root port emits no acpi-generic-initiator objects
|
||||
-object
|
||||
iommufd,id=iommufd0
|
||||
-object
|
||||
memory-backend-ram,size=16G,id=m0
|
||||
-machine
|
||||
virt,accel=kvm,gic-version=3,ras=on,highmem-mmio-size=4T,memory-backend=m0
|
||||
-numa
|
||||
node,memdev=m0,cpus=0-3,nodeid=0
|
||||
-numa
|
||||
node,nodeid=1
|
||||
-numa
|
||||
node,nodeid=2
|
||||
-numa
|
||||
node,nodeid=3
|
||||
-numa
|
||||
node,nodeid=4
|
||||
-numa
|
||||
node,nodeid=5
|
||||
-numa
|
||||
node,nodeid=6
|
||||
-numa
|
||||
node,nodeid=7
|
||||
-numa
|
||||
node,nodeid=8
|
||||
-device
|
||||
pxb-pcie,id=pcie.1,bus_nr=1,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port1,bus=pcie.1,chassis=1,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:06:00.0,bus=pcie.port1,rombar=0,id=dev0,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.2,bus_nr=2,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.2,id=smmuv3.2,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port2,bus=pcie.2,chassis=2,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:00:00.0,bus=pcie.port2,rombar=0,id=dev1,iommufd=iommufd0
|
||||
-object
|
||||
acpi-generic-initiator,id=gi0,pci-dev=dev0,node=1
|
||||
-object
|
||||
acpi-generic-initiator,id=gi1,pci-dev=dev0,node=2
|
||||
-object
|
||||
acpi-generic-initiator,id=gi2,pci-dev=dev0,node=3
|
||||
-object
|
||||
acpi-generic-initiator,id=gi3,pci-dev=dev0,node=4
|
||||
-object
|
||||
acpi-generic-initiator,id=gi4,pci-dev=dev0,node=5
|
||||
-object
|
||||
acpi-generic-initiator,id=gi5,pci-dev=dev0,node=6
|
||||
-object
|
||||
acpi-generic-initiator,id=gi6,pci-dev=dev0,node=7
|
||||
-object
|
||||
acpi-generic-initiator,id=gi7,pci-dev=dev0,node=8
|
||||
51
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_5_vcmdq.args
vendored
Normal file
51
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_5_vcmdq.args
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
# Grace Config 5 - vCMDQ, hugepages backing + SMMU command-queue virtualisation
|
||||
# HostTopology: 1 socket (cpus 0-3), 1 GpuSmmuGroup [0008:06:00.0], no EGM
|
||||
# Differs from Config 1: memory-backend-file + cmdqv=on on arm-smmuv3
|
||||
-object
|
||||
iommufd,id=iommufd0
|
||||
-object
|
||||
memory-backend-file,id=m0,size=16G,mem-path=/dev/hugepages/,prealloc=on,share=on
|
||||
-machine
|
||||
virt,accel=kvm,gic-version=3,ras=on,highmem-mmio-size=4T,memory-backend=m0
|
||||
-numa
|
||||
node,memdev=m0,cpus=0-3,nodeid=0
|
||||
-numa
|
||||
node,nodeid=1
|
||||
-numa
|
||||
node,nodeid=2
|
||||
-numa
|
||||
node,nodeid=3
|
||||
-numa
|
||||
node,nodeid=4
|
||||
-numa
|
||||
node,nodeid=5
|
||||
-numa
|
||||
node,nodeid=6
|
||||
-numa
|
||||
node,nodeid=7
|
||||
-numa
|
||||
node,nodeid=8
|
||||
-device
|
||||
pxb-pcie,id=pcie.1,bus_nr=1,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1,accel=on,ats=on,ril=off,pasid=on,oas=48,cmdqv=on
|
||||
-device
|
||||
pcie-root-port,id=pcie.port1,bus=pcie.1,chassis=1,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:06:00.0,bus=pcie.port1,rombar=0,id=dev0,iommufd=iommufd0
|
||||
-object
|
||||
acpi-generic-initiator,id=gi0,pci-dev=dev0,node=1
|
||||
-object
|
||||
acpi-generic-initiator,id=gi1,pci-dev=dev0,node=2
|
||||
-object
|
||||
acpi-generic-initiator,id=gi2,pci-dev=dev0,node=3
|
||||
-object
|
||||
acpi-generic-initiator,id=gi3,pci-dev=dev0,node=4
|
||||
-object
|
||||
acpi-generic-initiator,id=gi4,pci-dev=dev0,node=5
|
||||
-object
|
||||
acpi-generic-initiator,id=gi5,pci-dev=dev0,node=6
|
||||
-object
|
||||
acpi-generic-initiator,id=gi6,pci-dev=dev0,node=7
|
||||
-object
|
||||
acpi-generic-initiator,id=gi7,pci-dev=dev0,node=8
|
||||
191
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_6_vegm_1_per_socket.args
vendored
Normal file
191
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_6_vegm_1_per_socket.args
vendored
Normal file
@@ -0,0 +1,191 @@
|
||||
# Grace Config 6 - vEGM, 1 GPU per socket, 4 sockets, 36 NUMA nodes
|
||||
# HostTopology: 4 sockets, 4 GpuSmmuGroups (1 GPU each), 4 EgmSocketInfos
|
||||
# CpuMem nodes 0-3 (one per socket), GPU initiator nodes 4-35 (8 per GPU)
|
||||
-object
|
||||
iommufd,id=iommufd0
|
||||
-object
|
||||
memory-backend-file,id=m0,mem-path=/dev/egm4,size=56896M,share=on,prealloc=on
|
||||
-object
|
||||
memory-backend-file,id=m1,mem-path=/dev/egm5,size=56896M,share=on,prealloc=on
|
||||
-object
|
||||
memory-backend-file,id=m2,mem-path=/dev/egm6,size=56896M,share=on,prealloc=on
|
||||
-object
|
||||
memory-backend-file,id=m3,mem-path=/dev/egm7,size=56896M,share=on,prealloc=on
|
||||
-machine
|
||||
virt,accel=kvm,gic-version=3,ras=on,highmem-mmio-size=4T
|
||||
-numa
|
||||
node,memdev=m0,cpus=0,nodeid=0
|
||||
-numa
|
||||
node,memdev=m1,cpus=1,nodeid=1
|
||||
-numa
|
||||
node,memdev=m2,cpus=2,nodeid=2
|
||||
-numa
|
||||
node,memdev=m3,cpus=3,nodeid=3
|
||||
-numa
|
||||
node,nodeid=4
|
||||
-numa
|
||||
node,nodeid=5
|
||||
-numa
|
||||
node,nodeid=6
|
||||
-numa
|
||||
node,nodeid=7
|
||||
-numa
|
||||
node,nodeid=8
|
||||
-numa
|
||||
node,nodeid=9
|
||||
-numa
|
||||
node,nodeid=10
|
||||
-numa
|
||||
node,nodeid=11
|
||||
-numa
|
||||
node,nodeid=12
|
||||
-numa
|
||||
node,nodeid=13
|
||||
-numa
|
||||
node,nodeid=14
|
||||
-numa
|
||||
node,nodeid=15
|
||||
-numa
|
||||
node,nodeid=16
|
||||
-numa
|
||||
node,nodeid=17
|
||||
-numa
|
||||
node,nodeid=18
|
||||
-numa
|
||||
node,nodeid=19
|
||||
-numa
|
||||
node,nodeid=20
|
||||
-numa
|
||||
node,nodeid=21
|
||||
-numa
|
||||
node,nodeid=22
|
||||
-numa
|
||||
node,nodeid=23
|
||||
-numa
|
||||
node,nodeid=24
|
||||
-numa
|
||||
node,nodeid=25
|
||||
-numa
|
||||
node,nodeid=26
|
||||
-numa
|
||||
node,nodeid=27
|
||||
-numa
|
||||
node,nodeid=28
|
||||
-numa
|
||||
node,nodeid=29
|
||||
-numa
|
||||
node,nodeid=30
|
||||
-numa
|
||||
node,nodeid=31
|
||||
-numa
|
||||
node,nodeid=32
|
||||
-numa
|
||||
node,nodeid=33
|
||||
-numa
|
||||
node,nodeid=34
|
||||
-numa
|
||||
node,nodeid=35
|
||||
-device
|
||||
pxb-pcie,id=pcie.1,bus_nr=1,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port1,bus=pcie.1,chassis=1,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:06:00.0,bus=pcie.port1,rombar=0,id=dev0,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.2,bus_nr=2,bus=pcie.0,numa_node=1
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.2,id=smmuv3.2,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port2,bus=pcie.2,chassis=2,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0009:06:00.0,bus=pcie.port2,rombar=0,id=dev1,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.3,bus_nr=3,bus=pcie.0,numa_node=2
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.3,id=smmuv3.3,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port3,bus=pcie.3,chassis=3,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0010:06:00.0,bus=pcie.port3,rombar=0,id=dev2,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.4,bus_nr=4,bus=pcie.0,numa_node=3
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.4,id=smmuv3.4,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port4,bus=pcie.4,chassis=4,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0011:06:00.0,bus=pcie.port4,rombar=0,id=dev3,iommufd=iommufd0
|
||||
-object
|
||||
acpi-generic-initiator,id=gi0,pci-dev=dev0,node=4
|
||||
-object
|
||||
acpi-generic-initiator,id=gi1,pci-dev=dev0,node=5
|
||||
-object
|
||||
acpi-generic-initiator,id=gi2,pci-dev=dev0,node=6
|
||||
-object
|
||||
acpi-generic-initiator,id=gi3,pci-dev=dev0,node=7
|
||||
-object
|
||||
acpi-generic-initiator,id=gi4,pci-dev=dev0,node=8
|
||||
-object
|
||||
acpi-generic-initiator,id=gi5,pci-dev=dev0,node=9
|
||||
-object
|
||||
acpi-generic-initiator,id=gi6,pci-dev=dev0,node=10
|
||||
-object
|
||||
acpi-generic-initiator,id=gi7,pci-dev=dev0,node=11
|
||||
-object
|
||||
acpi-generic-initiator,id=gi8,pci-dev=dev1,node=12
|
||||
-object
|
||||
acpi-generic-initiator,id=gi9,pci-dev=dev1,node=13
|
||||
-object
|
||||
acpi-generic-initiator,id=gi10,pci-dev=dev1,node=14
|
||||
-object
|
||||
acpi-generic-initiator,id=gi11,pci-dev=dev1,node=15
|
||||
-object
|
||||
acpi-generic-initiator,id=gi12,pci-dev=dev1,node=16
|
||||
-object
|
||||
acpi-generic-initiator,id=gi13,pci-dev=dev1,node=17
|
||||
-object
|
||||
acpi-generic-initiator,id=gi14,pci-dev=dev1,node=18
|
||||
-object
|
||||
acpi-generic-initiator,id=gi15,pci-dev=dev1,node=19
|
||||
-object
|
||||
acpi-generic-initiator,id=gi16,pci-dev=dev2,node=20
|
||||
-object
|
||||
acpi-generic-initiator,id=gi17,pci-dev=dev2,node=21
|
||||
-object
|
||||
acpi-generic-initiator,id=gi18,pci-dev=dev2,node=22
|
||||
-object
|
||||
acpi-generic-initiator,id=gi19,pci-dev=dev2,node=23
|
||||
-object
|
||||
acpi-generic-initiator,id=gi20,pci-dev=dev2,node=24
|
||||
-object
|
||||
acpi-generic-initiator,id=gi21,pci-dev=dev2,node=25
|
||||
-object
|
||||
acpi-generic-initiator,id=gi22,pci-dev=dev2,node=26
|
||||
-object
|
||||
acpi-generic-initiator,id=gi23,pci-dev=dev2,node=27
|
||||
-object
|
||||
acpi-generic-initiator,id=gi24,pci-dev=dev3,node=28
|
||||
-object
|
||||
acpi-generic-initiator,id=gi25,pci-dev=dev3,node=29
|
||||
-object
|
||||
acpi-generic-initiator,id=gi26,pci-dev=dev3,node=30
|
||||
-object
|
||||
acpi-generic-initiator,id=gi27,pci-dev=dev3,node=31
|
||||
-object
|
||||
acpi-generic-initiator,id=gi28,pci-dev=dev3,node=32
|
||||
-object
|
||||
acpi-generic-initiator,id=gi29,pci-dev=dev3,node=33
|
||||
-object
|
||||
acpi-generic-initiator,id=gi30,pci-dev=dev3,node=34
|
||||
-object
|
||||
acpi-generic-initiator,id=gi31,pci-dev=dev3,node=35
|
||||
-object
|
||||
acpi-egm-memory,id=egm0,pci-dev=dev0,node=0
|
||||
-object
|
||||
acpi-egm-memory,id=egm1,pci-dev=dev1,node=1
|
||||
-object
|
||||
acpi-egm-memory,id=egm2,pci-dev=dev2,node=2
|
||||
-object
|
||||
acpi-egm-memory,id=egm3,pci-dev=dev3,node=3
|
||||
176
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_7_vegm_2_per_socket.args
vendored
Normal file
176
src/runtime-rs/crates/hypervisor/tests/fixtures/qemu/grace_7_vegm_2_per_socket.args
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
# Grace Config 7 - vEGM, 2 GPUs per socket, 2 sockets, 34 NUMA nodes
|
||||
# HostTopology: 2 sockets, 2 GpuSmmuGroups (2 GPUs each), 2 EgmSocketInfos
|
||||
# CpuMem nodes 0-1 (one per socket), GPU initiator nodes 2-33 (8 per GPU)
|
||||
# Both GPUs on the same socket point to that socket's CpuMem node in acpi-egm-memory
|
||||
-object
|
||||
iommufd,id=iommufd0
|
||||
-object
|
||||
memory-backend-file,id=m0,mem-path=/dev/egm4,size=56896M,share=on,prealloc=on
|
||||
-object
|
||||
memory-backend-file,id=m1,mem-path=/dev/egm5,size=56896M,share=on,prealloc=on
|
||||
-machine
|
||||
virt,accel=kvm,gic-version=3,ras=on,highmem-mmio-size=4T
|
||||
-numa
|
||||
node,memdev=m0,cpus=0-1,nodeid=0
|
||||
-numa
|
||||
node,memdev=m1,cpus=2-3,nodeid=1
|
||||
-numa
|
||||
node,nodeid=2
|
||||
-numa
|
||||
node,nodeid=3
|
||||
-numa
|
||||
node,nodeid=4
|
||||
-numa
|
||||
node,nodeid=5
|
||||
-numa
|
||||
node,nodeid=6
|
||||
-numa
|
||||
node,nodeid=7
|
||||
-numa
|
||||
node,nodeid=8
|
||||
-numa
|
||||
node,nodeid=9
|
||||
-numa
|
||||
node,nodeid=10
|
||||
-numa
|
||||
node,nodeid=11
|
||||
-numa
|
||||
node,nodeid=12
|
||||
-numa
|
||||
node,nodeid=13
|
||||
-numa
|
||||
node,nodeid=14
|
||||
-numa
|
||||
node,nodeid=15
|
||||
-numa
|
||||
node,nodeid=16
|
||||
-numa
|
||||
node,nodeid=17
|
||||
-numa
|
||||
node,nodeid=18
|
||||
-numa
|
||||
node,nodeid=19
|
||||
-numa
|
||||
node,nodeid=20
|
||||
-numa
|
||||
node,nodeid=21
|
||||
-numa
|
||||
node,nodeid=22
|
||||
-numa
|
||||
node,nodeid=23
|
||||
-numa
|
||||
node,nodeid=24
|
||||
-numa
|
||||
node,nodeid=25
|
||||
-numa
|
||||
node,nodeid=26
|
||||
-numa
|
||||
node,nodeid=27
|
||||
-numa
|
||||
node,nodeid=28
|
||||
-numa
|
||||
node,nodeid=29
|
||||
-numa
|
||||
node,nodeid=30
|
||||
-numa
|
||||
node,nodeid=31
|
||||
-numa
|
||||
node,nodeid=32
|
||||
-numa
|
||||
node,nodeid=33
|
||||
-device
|
||||
pxb-pcie,id=pcie.1,bus_nr=1,bus=pcie.0,numa_node=0
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.1,id=smmuv3.1,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port1,bus=pcie.1,chassis=1,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0008:06:00.0,bus=pcie.port1,rombar=0,id=dev0,iommufd=iommufd0
|
||||
-device
|
||||
pcie-root-port,id=pcie.port2,bus=pcie.1,chassis=2,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0009:06:00.0,bus=pcie.port2,rombar=0,id=dev1,iommufd=iommufd0
|
||||
-device
|
||||
pxb-pcie,id=pcie.2,bus_nr=9,bus=pcie.0,numa_node=1
|
||||
-device
|
||||
arm-smmuv3,primary-bus=pcie.2,id=smmuv3.2,accel=on,ats=on,ril=off,pasid=on,oas=48
|
||||
-device
|
||||
pcie-root-port,id=pcie.port3,bus=pcie.2,chassis=3,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0010:06:00.0,bus=pcie.port3,rombar=0,id=dev2,iommufd=iommufd0
|
||||
-device
|
||||
pcie-root-port,id=pcie.port4,bus=pcie.2,chassis=4,io-reserve=0
|
||||
-device
|
||||
vfio-pci-nohotplug,host=0011:06:00.0,bus=pcie.port4,rombar=0,id=dev3,iommufd=iommufd0
|
||||
-object
|
||||
acpi-generic-initiator,id=gi0,pci-dev=dev0,node=2
|
||||
-object
|
||||
acpi-generic-initiator,id=gi1,pci-dev=dev0,node=3
|
||||
-object
|
||||
acpi-generic-initiator,id=gi2,pci-dev=dev0,node=4
|
||||
-object
|
||||
acpi-generic-initiator,id=gi3,pci-dev=dev0,node=5
|
||||
-object
|
||||
acpi-generic-initiator,id=gi4,pci-dev=dev0,node=6
|
||||
-object
|
||||
acpi-generic-initiator,id=gi5,pci-dev=dev0,node=7
|
||||
-object
|
||||
acpi-generic-initiator,id=gi6,pci-dev=dev0,node=8
|
||||
-object
|
||||
acpi-generic-initiator,id=gi7,pci-dev=dev0,node=9
|
||||
-object
|
||||
acpi-generic-initiator,id=gi8,pci-dev=dev1,node=10
|
||||
-object
|
||||
acpi-generic-initiator,id=gi9,pci-dev=dev1,node=11
|
||||
-object
|
||||
acpi-generic-initiator,id=gi10,pci-dev=dev1,node=12
|
||||
-object
|
||||
acpi-generic-initiator,id=gi11,pci-dev=dev1,node=13
|
||||
-object
|
||||
acpi-generic-initiator,id=gi12,pci-dev=dev1,node=14
|
||||
-object
|
||||
acpi-generic-initiator,id=gi13,pci-dev=dev1,node=15
|
||||
-object
|
||||
acpi-generic-initiator,id=gi14,pci-dev=dev1,node=16
|
||||
-object
|
||||
acpi-generic-initiator,id=gi15,pci-dev=dev1,node=17
|
||||
-object
|
||||
acpi-generic-initiator,id=gi16,pci-dev=dev2,node=18
|
||||
-object
|
||||
acpi-generic-initiator,id=gi17,pci-dev=dev2,node=19
|
||||
-object
|
||||
acpi-generic-initiator,id=gi18,pci-dev=dev2,node=20
|
||||
-object
|
||||
acpi-generic-initiator,id=gi19,pci-dev=dev2,node=21
|
||||
-object
|
||||
acpi-generic-initiator,id=gi20,pci-dev=dev2,node=22
|
||||
-object
|
||||
acpi-generic-initiator,id=gi21,pci-dev=dev2,node=23
|
||||
-object
|
||||
acpi-generic-initiator,id=gi22,pci-dev=dev2,node=24
|
||||
-object
|
||||
acpi-generic-initiator,id=gi23,pci-dev=dev2,node=25
|
||||
-object
|
||||
acpi-generic-initiator,id=gi24,pci-dev=dev3,node=26
|
||||
-object
|
||||
acpi-generic-initiator,id=gi25,pci-dev=dev3,node=27
|
||||
-object
|
||||
acpi-generic-initiator,id=gi26,pci-dev=dev3,node=28
|
||||
-object
|
||||
acpi-generic-initiator,id=gi27,pci-dev=dev3,node=29
|
||||
-object
|
||||
acpi-generic-initiator,id=gi28,pci-dev=dev3,node=30
|
||||
-object
|
||||
acpi-generic-initiator,id=gi29,pci-dev=dev3,node=31
|
||||
-object
|
||||
acpi-generic-initiator,id=gi30,pci-dev=dev3,node=32
|
||||
-object
|
||||
acpi-generic-initiator,id=gi31,pci-dev=dev3,node=33
|
||||
-object
|
||||
acpi-egm-memory,id=egm0,pci-dev=dev0,node=0
|
||||
-object
|
||||
acpi-egm-memory,id=egm1,pci-dev=dev1,node=0
|
||||
-object
|
||||
acpi-egm-memory,id=egm2,pci-dev=dev2,node=1
|
||||
-object
|
||||
acpi-egm-memory,id=egm3,pci-dev=dev3,node=1
|
||||
Reference in New Issue
Block a user