mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
Use pciDeviceIsAssignable in qemu driver
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
379eb3956c
commit
a3e1f04b76
@ -36,6 +36,7 @@ module Libvirtd_qemu =
|
|||||||
| str_array_entry "cgroup_device_acl"
|
| str_array_entry "cgroup_device_acl"
|
||||||
| str_entry "save_image_format"
|
| str_entry "save_image_format"
|
||||||
| str_entry "hugetlbfs_mount"
|
| str_entry "hugetlbfs_mount"
|
||||||
|
| bool_entry "relaxed_acs_check"
|
||||||
|
|
||||||
(* Each enty in the config is one of the following three ... *)
|
(* Each enty in the config is one of the following three ... *)
|
||||||
let entry = vnc_entry
|
let entry = vnc_entry
|
||||||
|
@ -157,3 +157,9 @@
|
|||||||
# This currently requires ebtables to be installed.
|
# This currently requires ebtables to be installed.
|
||||||
#
|
#
|
||||||
# mac_filter = 1
|
# mac_filter = 1
|
||||||
|
|
||||||
|
# By default, PCI devices below non-ACS switch are not allowed to be assigned
|
||||||
|
# to guests. By setting relaxed_acs_check to 1 such devices will be allowed to
|
||||||
|
# be assigned to guests.
|
||||||
|
#
|
||||||
|
# relaxed_acs_check = 1
|
||||||
|
@ -340,6 +340,10 @@ int qemudLoadDriverConfig(struct qemud_driver *driver,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p = virConfGetValue (conf, "relaxed_acs_check");
|
||||||
|
CHECK_TYPE ("relaxed_acs_check", VIR_CONF_LONG);
|
||||||
|
if (p) driver->relaxedACS = p->l;
|
||||||
|
|
||||||
virConfFree (conf);
|
virConfFree (conf);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,8 @@ struct qemud_driver {
|
|||||||
unsigned int macFilter : 1;
|
unsigned int macFilter : 1;
|
||||||
ebtablesContext *ebtables;
|
ebtablesContext *ebtables;
|
||||||
|
|
||||||
|
unsigned int relaxedACS : 1;
|
||||||
|
|
||||||
virCapsPtr caps;
|
virCapsPtr caps;
|
||||||
|
|
||||||
/* An array of callbacks */
|
/* An array of callbacks */
|
||||||
|
@ -2192,6 +2192,9 @@ qemuPrepareHostDevices(virConnectPtr conn,
|
|||||||
|
|
||||||
for (i = 0; i < pciDeviceListCount(pcidevs); i++) {
|
for (i = 0; i < pciDeviceListCount(pcidevs); i++) {
|
||||||
pciDevice *dev = pciDeviceListGet(pcidevs, i);
|
pciDevice *dev = pciDeviceListGet(pcidevs, i);
|
||||||
|
if (!pciDeviceIsAssignable(conn, dev, !driver->relaxedACS))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
if (pciDeviceGetManaged(dev) &&
|
if (pciDeviceGetManaged(dev) &&
|
||||||
pciDettachDevice(conn, dev) < 0)
|
pciDettachDevice(conn, dev) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -5792,7 +5795,8 @@ static int qemudDomainAttachHostPciDevice(virConnectPtr conn,
|
|||||||
if (!pci)
|
if (!pci)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if ((hostdev->managed && pciDettachDevice(conn, pci) < 0) ||
|
if (!pciDeviceIsAssignable(conn, pci, !driver->relaxedACS) ||
|
||||||
|
(hostdev->managed && pciDettachDevice(conn, pci) < 0) ||
|
||||||
pciResetDevice(conn, pci, driver->activePciHostdevs) < 0) {
|
pciResetDevice(conn, pci, driver->activePciHostdevs) < 0) {
|
||||||
pciFreeDevice(conn, pci);
|
pciFreeDevice(conn, pci);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -93,6 +93,8 @@ cgroup_device_acl = [ \"/dev/null\", \"/dev/full\", \"/dev/zero\" ]
|
|||||||
save_image_format = \"gzip\"
|
save_image_format = \"gzip\"
|
||||||
|
|
||||||
hugetlbfs_mount = \"/dev/hugepages\"
|
hugetlbfs_mount = \"/dev/hugepages\"
|
||||||
|
|
||||||
|
relaxed_acs_check = 1
|
||||||
"
|
"
|
||||||
|
|
||||||
test Libvirtd_qemu.lns get conf =
|
test Libvirtd_qemu.lns get conf =
|
||||||
@ -195,4 +197,6 @@ hugetlbfs_mount = \"/dev/hugepages\"
|
|||||||
{ "#empty" }
|
{ "#empty" }
|
||||||
{ "save_image_format" = "gzip" }
|
{ "save_image_format" = "gzip" }
|
||||||
{ "#empty" }
|
{ "#empty" }
|
||||||
{ "hugetlbfs_mount" = "/dev/hugepages" }
|
{ "hugetlbfs_mount" = "/dev/hugepages" }
|
||||||
|
{ "#empty" }
|
||||||
|
{ "relaxed_acs_check" = "1" }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user