This commit defines a set of YAML rules that result in the same set of logical checks as the existing hardcoded virt-host-validate implementation does. Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> --- tools/host-validate/rules/builtin.yaml | 20 + tools/host-validate/rules/cpu.yaml | 50 ++ tools/host-validate/rules/freebsd-kernel.yaml | 77 +++ tools/host-validate/rules/linux-acpi.yaml | 39 ++ tools/host-validate/rules/linux-cgroups.yaml | 470 ++++++++++++++++++ tools/host-validate/rules/linux-cpu.yaml | 134 +++++ tools/host-validate/rules/linux-devices.yaml | 71 +++ tools/host-validate/rules/linux-iommu.yaml | 113 +++++ .../host-validate/rules/linux-namespaces.yaml | 119 +++++ tools/host-validate/rules/linux-pci.yaml | 10 + 10 files changed, 1103 insertions(+) create mode 100644 tools/host-validate/rules/builtin.yaml create mode 100644 tools/host-validate/rules/cpu.yaml create mode 100644 tools/host-validate/rules/freebsd-kernel.yaml create mode 100644 tools/host-validate/rules/linux-acpi.yaml create mode 100644 tools/host-validate/rules/linux-cgroups.yaml create mode 100644 tools/host-validate/rules/linux-cpu.yaml create mode 100644 tools/host-validate/rules/linux-devices.yaml create mode 100644 tools/host-validate/rules/linux-iommu.yaml create mode 100644 tools/host-validate/rules/linux-namespaces.yaml create mode 100644 tools/host-validate/rules/linux-pci.yaml diff --git a/tools/host-validate/rules/builtin.yaml b/tools/host-validate/rules/builtin.yaml new file mode 100644 index 0000000000..f69b069e09 --- /dev/null +++ b/tools/host-validate/rules/builtin.yaml @@ -0,0 +1,20 @@ +# +# Define boilerplate to activate various built-in facts +# + +facts: +- name: libvirt.driver + value: + builtin: {} +- name: cpu.arch + value: + builtin: {} +- name: os.kernel + value: + builtin: {} +- name: os.release + value: + builtin: {} +- name: os.version + value: + builtin: {} diff --git a/tools/host-validate/rules/cpu.yaml b/tools/host-validate/rules/cpu.yaml new file mode 100644 index 0000000000..5af61b1ea1 --- /dev/null +++ b/tools/host-validate/rules/cpu.yaml @@ -0,0 +1,50 @@ +# +# Define facts related to host CPU properties +# + +facts: +- name: cpu.family.x86 + value: + bool: + any: + expressions: + - fact: + name: cpu.arch + value: x86_64 + - fact: + name: cpu.arch + value: i386 + - fact: + name: cpu.arch + value: i486 + - fact: + name: cpu.arch + value: i586 + - fact: + name: cpu.arch + value: i686 +- name: cpu.family.arm + value: + bool: + any: + expressions: + - fact: + name: cpu.arch + value: aarch64 + - fact: + name: cpu.arch + value: armv6 + - fact: + name: cpu.arch + value: armv7 +- name: cpu.family.s390 + value: + bool: + any: + expressions: + - fact: + name: cpu.arch + value: s390 + - fact: + name: cpu.arch + value: s390x diff --git a/tools/host-validate/rules/freebsd-kernel.yaml b/tools/host-validate/rules/freebsd-kernel.yaml new file mode 100644 index 0000000000..345e78dbc2 --- /dev/null +++ b/tools/host-validate/rules/freebsd-kernel.yaml @@ -0,0 +1,77 @@ +# +# Define facts related to BHyve on FreeBSD +# + +facts: +- name: os.kmod + filter: + fact: + name: os.kernel + value: FreeBSD + value: + command: + name: kldstat + parse: + set: + separator: \n + skiphead: 1 + skiptail: 1 + regex: \s+\d+\s+\d+\s+0x[0-9a-f]+\s+[0-9a-f]+\s+(\w+) + match: 1 +- name: kmod.vmm + filter: + fact: + name: libvirt.driver.bhyve + value: "true" + report: + message: BHyve VMs can be run + hint: + message: load the 'vmm' kernel module + value: + bool: + fact: + name: os.kmod.vmm + value: "true" +- name: kmod.if_tap + filter: + fact: + name: libvirt.driver.bhyve + value: "true" + report: + message: BHyve VMs can use networking + hint: + message: load the 'if_tap' kernel module + value: + bool: + fact: + name: os.kmod.if_tap + value: "true" +- name: kmod.if_bridge + filter: + fact: + name: libvirt.driver.bhyve + value: "true" + report: + message: BHyve VMs can use bridged network + hint: + message: load the 'if_bridge' kernel module + value: + bool: + fact: + name: os.kmod.if_bridge + value: "true" +- name: kmod.nmdm + filter: + fact: + name: libvirt.driver.bhyve + value: "true" + report: + message: BHyve VMs can use nmdm console + level: warn + hint: + message: load the 'nmdm' kernel module + value: + bool: + fact: + name: os.kmod.nmdm + value: "true" diff --git a/tools/host-validate/rules/linux-acpi.yaml b/tools/host-validate/rules/linux-acpi.yaml new file mode 100644 index 0000000000..cad324dd96 --- /dev/null +++ b/tools/host-validate/rules/linux-acpi.yaml @@ -0,0 +1,39 @@ +# +# Define facts for interesting ACPI tables on the host +# + +facts: +- name: cpu.acpi.dmar + filter: + all: + expressions: + - fact: + name: cpu.family.x86 + value: "true" + - fact: + name: cpu.vendor.intel + value: "true" + - fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/firmware/acpi/tables/DMAR +- name: cpu.acpi.ivrs + filter: + all: + expressions: + - fact: + name: cpu.family.x86 + value: "true" + - fact: + name: cpu.vendor.amd + value: "true" + - fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/firmware/acpi/tables/IVRS diff --git a/tools/host-validate/rules/linux-cgroups.yaml b/tools/host-validate/rules/linux-cgroups.yaml new file mode 100644 index 0000000000..e886bccd17 --- /dev/null +++ b/tools/host-validate/rules/linux-cgroups.yaml @@ -0,0 +1,470 @@ +# +# Define facts for Linux control cgroups v1/v2 +# + +facts: +- name: os.cgroup.controller + filter: + fact: + name: os.kernel + value: Linux + value: + file: + path: /proc/cgroups + parse: + set: + separator: \n + skiphead: 1 + skiptail: 1 + regex: ^(\w+) + match: 1 +- name: os.cgroup.v2only + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/cgroup.subtree_control +- name: os.cgroup.v2hybrid + filter: + fact: + name: os.kernel + value: Linux + value: + file: + path: /sys/fs/cgroup/unified/cgroup.controllers + ignoreMissing: true + parse: + whitespace: trim + set: + skiphead: 0 + skiptail: 0 + separator: ' ' +- name: os.cgroup.mount.v2 + filter: + fact: + name: os.kernel + value: Linux + value: + file: + path: /sys/fs/cgroup/cgroup.controllers + ignoreMissing: true + parse: + whitespace: trim + set: + skiphead: 0 + skiptail: 0 + separator: ' ' +- name: os.cgroup.mount.v1.blkio + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/blkio/cgroup.procs +- name: os.cgroup.mount.v1.cpu + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/cpu/cgroup.procs +- name: os.cgroup.mount.v1.cpuacct + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/cpuacct/cgroup.procs +- name: os.cgroup.mount.v1.cpuset + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/cpuset/cgroup.procs +- name: os.cgroup.mount.v1.devices + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/devices/cgroup.procs +- name: os.cgroup.mount.v1.freezer + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/freezer/cgroup.procs +- name: os.cgroup.mount.v1.hugetlb + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/hugetlb/cgroup.procs +- name: os.cgroup.mount.v1.memory + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/memory/cgroup.procs +- name: os.cgroup.mount.v1.net_cls + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/net_cls/cgroup.procs +- name: os.cgroup.mount.v1.net_prio + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/net_prio/cgroup.procs +- name: os.cgroup.mount.v1.perf_event + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/perf_event/cgroup.procs +- name: os.cgroup.mount.v1.pids + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/pids/cgroup.procs +- name: os.cgroup.mount.unified + filter: + fact: + name: os.kernel + value: Linux + value: + access: + check: exists + path: /sys/fs/cgroup/unified/cgroup.procs +- name: os.cgroup.memory.present + filter: + all: + expressions: + - any: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: cgroup memory controller present + hint: + message: enable memory cgroup controller in Kconfig + value: + bool: + fact: + name: os.cgroup.controller.memory + value: "true" +- name: os.cgroup.memory.mounted + filter: + fact: + name: os.cgroup.memory.present + value: "true" + report: + message: cgroup memory controller mounted + hint: + message: mount the memory cgroup controller under /sys/fs/cgroup + value: + bool: + any: + expressions: + - fact: + name: os.cgroup.mount.v1.memory + value: "true" + - fact: + name: os.cgroup.mount.v2.memory + value: "true" +- name: os.cgroup.cpu.present + filter: + all: + expressions: + - any: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: cgroup cpu controller present + hint: + message: enable cpu cgroup controller in Kconfig + value: + bool: + fact: + name: os.cgroup.controller.cpu + value: "true" +- name: os.cgroup.cpu.mounted + filter: + fact: + name: os.cgroup.cpu.present + value: "true" + report: + message: cgroup cpu controller mounted + hint: + message: mount the cpu cgroup controller under /sys/fs/cgroup + value: + bool: + any: + expressions: + - fact: + name: os.cgroup.mount.v1.cpu + value: "true" + - fact: + name: os.cgroup.mount.v2.cpu + value: "true" +- name: os.cgroup.cpuacct.present + filter: + all: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: cgroup cpuacct controller present + hint: + message: enable cpuacct cgroup controller in Kconfig + value: + bool: + fact: + name: os.cgroup.controller.cpuacct + value: "true" +- name: os.cgroup.cpuacct.mounted + filter: + fact: + name: os.cgroup.cpuacct.present + value: "true" + report: + message: cgroup cpuacct controller mounted + hint: + message: mount the cpuacct cgroup controller under /sys/fs/cgroup + value: + bool: + any: + expressions: + - fact: + name: os.cgroup.mount.v1.cpuacct + value: "true" + - fact: + name: os.cgroup.mount.v2.cpuacct + value: "true" +- name: os.cgroup.cpuset.present + filter: + all: + expressions: + - any: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: cgroup cpuset controller present + hint: + message: enable cpuset cgroup controller in Kconfig + value: + bool: + fact: + name: os.cgroup.controller.cpuset + value: "true" +- name: os.cgroup.cpuset.mounted + filter: + fact: + name: os.cgroup.cpuset.present + value: "true" + report: + message: cgroup cpuset controller mounted + hint: + message: mount the cpuset cgroup controller under /sys/fs/cgroup + value: + bool: + any: + expressions: + - fact: + name: os.cgroup.mount.v1.cpuset + value: "true" + - fact: + name: os.cgroup.mount.v2.cpuset + value: "true" +- name: os.cgroup.devices.present + filter: + all: + expressions: + - any: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: cgroup devices controller present + hint: + message: enable devices cgroup controller in Kconfig + value: + bool: + fact: + name: os.cgroup.controller.devices + value: "true" +- name: os.cgroup.devices.mounted + filter: + fact: + name: os.cgroup.devices.present + value: "true" + report: + message: cgroup devices controller mounted + hint: + message: mount the devices cgroup controller under /sys/fs/cgroup + value: + bool: + any: + expressions: + - fact: + name: os.cgroup.mount.v1.devices + value: "true" + - fact: + name: os.cgroup.v2hybrid + value: "true" + - fact: + name: os.cgroup.v2only + value: "true" +- name: os.cgroup.blkio.present + filter: + all: + expressions: + - any: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: cgroup blkio controller present + hint: + message: enable blkio cgroup controller in Kconfig + value: + bool: + fact: + name: os.cgroup.controller.blkio + value: "true" +- name: os.cgroup.blkio.mounted + filter: + fact: + name: os.cgroup.blkio.present + value: "true" + report: + message: cgroup blkio controller mounted + hint: + message: mount the blkio cgroup controller under /sys/fs/cgroup + value: + bool: + any: + expressions: + - fact: + name: os.cgroup.mount.v1.blkio + value: "true" + - fact: + name: os.cgroup.mount.v2.io + value: "true" +- name: os.cgroup.freezer.present + filter: + all: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: cgroup freezer controller present + hint: + message: enable freezer cgroup controller in Kconfig + value: + bool: + fact: + name: os.cgroup.controller.freezer + value: "true" +- name: os.cgroup.freezer.mounted + filter: + fact: + name: os.cgroup.freezer.present + value: "true" + report: + message: cgroup freezer controller mounted + hint: + message: mount the freezer cgroup controller under /sys/fs/cgroup + value: + bool: + any: + expressions: + - fact: + name: os.cgroup.mount.v1.freezer + value: "true" + - fact: + name: os.cgroup.mount.v2.freezer + value: "true" diff --git a/tools/host-validate/rules/linux-cpu.yaml b/tools/host-validate/rules/linux-cpu.yaml new file mode 100644 index 0000000000..81aee516bf --- /dev/null +++ b/tools/host-validate/rules/linux-cpu.yaml @@ -0,0 +1,134 @@ +# +# Define facts related to host CPU properties +# + +facts: +- name: cpu.info + filter: + fact: + name: os.kernel + value: Linux + value: + file: + path: /proc/cpuinfo + parse: + list: + limit: 1 + separator: \n\n + parse: + whitespace: trim + dict: + separator: \n + delimiter: ':' + parse: + whitespace: trim + scalar: {} +- name: cpu.vendor.intel + filter: + fact: + name: cpu.family.x86 + value: "true" + value: + bool: + fact: + name: cpu.info.0.vendor_id + value: GenuineIntel +- name: cpu.vendor.amd + filter: + fact: + name: cpu.family.x86 + value: "true" + value: + bool: + fact: + name: cpu.info.0.vendor_id + value: AuthenticAMD +- name: cpu.features.x86 + filter: + fact: + name: cpu.family.x86 + value: "true" + value: + string: + fact: cpu.info.0.flags + parse: + whitespace: trim + set: + skiphead: 0 + skiptail: 0 + separator: ' ' +- name: cpu.features.arm + filter: + fact: + name: cpu.family.arm + value: "true" + value: + string: + fact: cpu.info.0.Features + parse: + whitespace: trim + set: + skiphead: 0 + skiptail: 0 + separator: ' ' +- name: cpu.features.s390 + filter: + fact: + name: cpu.family.s390 + value: "true" + value: + string: + fact: cpu.info.0.features + parse: + whitespace: trim + set: + skiphead: 0 + skiptail: 0 + separator: ' ' +- name: cpu.virt.possible + filter: + fact: + name: libvirt.driver.qemu + value: "true" + report: + message: hardware virt possible + value: + bool: + any: + expressions: + - fact: + name: cpu.family.x86 + value: "true" +- name: cpu.virt.present + filter: + fact: + name: cpu.virt.possible + value: "true" + report: + message: hardware virt present + level: warn + hint: + message: only emulated CPUs are available, performance will be significantly limited + value: + bool: + any: + expressions: + - all: + expressions: + - fact: + name: cpu.vendor.amd + value: "true" + - fact: + name: cpu.features.x86.svm + value: "true" + - all: + expressions: + - fact: + name: cpu.vendor.intel + value: "true" + - fact: + name: cpu.features.x86.vmx + value: "true" + - fact: + name: cpu.features.s390.sie + value: "true" diff --git a/tools/host-validate/rules/linux-devices.yaml b/tools/host-validate/rules/linux-devices.yaml new file mode 100644 index 0000000000..791f35a0b6 --- /dev/null +++ b/tools/host-validate/rules/linux-devices.yaml @@ -0,0 +1,71 @@ +# +# Define facts related to device nodes on the host +# + +facts: +- name: os.kvm.loaded + filter: + all: + expressions: + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: cpu.virt.present + value: "true" + report: + message: /dev/kvm loaded + value: + access: + check: exists + path: /dev/kvm +- name: os.kvm.accessible + filter: + fact: + name: os.kvm.loaded + value: "true" + report: + message: /dev/kvm accessible + hint: + message: Check /dev/kvm is world writable or you are in a group that is allowed + to access it + value: + access: + check: writable + path: /dev/kvm +- name: os.vhostnet.present + filter: + all: + expressions: + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kvm.loaded + value: "true" + report: + message: /dev/vhost-net present + hint: + message: Load the 'vhost_net' module to improve performance of virtio networking + value: + access: + check: exists + path: /dev/vhost-net +- name: os.tun.present + filter: + all: + expressions: + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kvm.loaded + value: "true" + report: + message: /dev/net/tun present + hint: + message: Load the 'tun' module to enable networking for QEMU guests + value: + access: + check: exists + path: /dev/net/tun diff --git a/tools/host-validate/rules/linux-iommu.yaml b/tools/host-validate/rules/linux-iommu.yaml new file mode 100644 index 0000000000..4f056e92ba --- /dev/null +++ b/tools/host-validate/rules/linux-iommu.yaml @@ -0,0 +1,113 @@ +# +# Define facts related to IOMMU availability +# + +facts: +- name: cpu.iommu.x86.intel.present + filter: + all: + expressions: + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: cpu.family.x86 + value: "true" + - fact: + name: cpu.vendor.intel + value: "true" + report: + message: Intel device assignment IOMMU present + level: note + hint: + message: IOMMU either disabled in BIOS or not supported by this hardware + value: + bool: + fact: + name: cpu.acpi.dmar + value: "true" +- name: cpu.iommu.x86.amd.present + filter: + all: + expressions: + - fact: + name: cpu.family.x86 + value: "true" + - fact: + name: cpu.vendor.amd + value: "true" + report: + message: AMD device assignment IOMMU present + level: note + hint: + message: IOMMU either disabled in BIOS or not supported by this hardware + value: + bool: + fact: + name: cpu.acpi.ivrs + value: "true" +- name: cpu.iommu.s390x.present + filter: + fact: + name: cpu.family.s390 + value: "true" + report: + message: s390x device assignment IOMMU present + level: note + hint: + message: IOMMU either disabled in BIOS or not supported by this hardware + value: + bool: + fact: + match: exists + name: os.pci.devices.0 +- name: os.iommu.groups + value: + dirent: + ignoreMissing: true + path: /sys/kernel/iommu_groups +- name: os.iommu.x86.intel.enabled + filter: + fact: + name: cpu.iommu.x86.intel.present + value: "true" + report: + message: Intel device assignment IOMMU enabled + level: warn + hint: + message: IOMMU disabled by the kernel. Pass 'intel_iommu=on' on the kernel command line + value: + bool: + fact: + name: os.iommu.groups.0 + match: exists +- name: os.iommu.x86.amd.enabled + filter: + fact: + name: cpu.iommu.x86.amd.present + value: "true" + report: + message: AMD device assignment IOMMU enabled + level: warn + hint: + message: IOMMU disabled by the kernel. Pass 'iommu=pt iommu=1' on the kernel command line + value: + bool: + fact: + name: os.iommu.groups.0 + match: exists +- name: os.iommu.s390x.enabled + filter: + fact: + name: cpu.iommu.s390x.present + value: "true" + report: + message: s390x device assignment IOMMU enabled + level: warn + hint: + message: IOMMU disabled by the kernel + value: + bool: + fact: + name: os.iommu.groups.0 + match: exists diff --git a/tools/host-validate/rules/linux-namespaces.yaml b/tools/host-validate/rules/linux-namespaces.yaml new file mode 100644 index 0000000000..239d0c58e4 --- /dev/null +++ b/tools/host-validate/rules/linux-namespaces.yaml @@ -0,0 +1,119 @@ +# +# Define facts related to Linux kernel namespaces +# + +facts: +- name: os.namespace.ipc + filter: + all: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: ipc process namespace + hint: + message: Enable ipc namespace in Kconfig + value: + access: + path: /proc/self/ns/ipc + check: exists +- name: os.namespace.mnt + filter: + all: + expressions: + - any: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: libvirt.driver.qemu + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: mnt process namespace + hint: + message: Enable mnt namespace in Kconfig + value: + access: + path: /proc/self/ns/mnt + check: exists +- name: os.namespace.pid + filter: + all: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: pid process namespace + hint: + message: Enable pid namespace in Kconfig + value: + access: + path: /proc/self/ns/pid + check: exists +- name: os.namespace.uts + filter: + all: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: uts process namespace + hint: + message: Enable uts namespace in Kconfig + value: + access: + path: /proc/self/ns/uts + check: exists +- name: os.namespace.net + filter: + all: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: os.kernel + value: Linux + report: + message: net process namespace + hint: + message: Enable net namespace in Kconfig + value: + access: + path: /proc/self/ns/net + check: exists +- name: os.namespace.user + filter: + all: + expressions: + - fact: + name: libvirt.driver.lxc + value: "true" + - fact: + name: os.kernel + value: Linux + report: + level: warn + message: user process namespace + hint: + message: Enable user namespace in Kconfig + value: + access: + path: /proc/self/ns/user + check: exists diff --git a/tools/host-validate/rules/linux-pci.yaml b/tools/host-validate/rules/linux-pci.yaml new file mode 100644 index 0000000000..facb67f4e9 --- /dev/null +++ b/tools/host-validate/rules/linux-pci.yaml @@ -0,0 +1,10 @@ +# +# Define facts related to physical PCI devices on the host system +# + +facts: +- name: os.pci.devices + value: + dirent: + path: /sys/bus/pci/devices + ignoreMissing: true -- 2.21.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list