mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: build command line for pci-bridge device
Signed-off-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
@@ -222,6 +222,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
|
|||||||
"tpm-tis",
|
"tpm-tis",
|
||||||
|
|
||||||
"nvram", /* 140 */
|
"nvram", /* 140 */
|
||||||
|
"pci-bridge", /* 141 */
|
||||||
);
|
);
|
||||||
|
|
||||||
struct _virQEMUCaps {
|
struct _virQEMUCaps {
|
||||||
@@ -1350,6 +1351,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
|
|||||||
{ "rng-random", QEMU_CAPS_OBJECT_RNG_RANDOM },
|
{ "rng-random", QEMU_CAPS_OBJECT_RNG_RANDOM },
|
||||||
{ "rng-egd", QEMU_CAPS_OBJECT_RNG_EGD },
|
{ "rng-egd", QEMU_CAPS_OBJECT_RNG_EGD },
|
||||||
{ "spapr-nvram", QEMU_CAPS_DEVICE_NVRAM },
|
{ "spapr-nvram", QEMU_CAPS_DEVICE_NVRAM },
|
||||||
|
{ "pci-bridge", QEMU_CAPS_DEVICE_PCI_BRIDGE },
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBlk[] = {
|
static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBlk[] = {
|
||||||
|
|||||||
@@ -180,6 +180,7 @@ enum virQEMUCapsFlags {
|
|||||||
QEMU_CAPS_DEVICE_TPM_TIS = 139, /* -device tpm_tis */
|
QEMU_CAPS_DEVICE_TPM_TIS = 139, /* -device tpm_tis */
|
||||||
|
|
||||||
QEMU_CAPS_DEVICE_NVRAM = 140, /* -global spapr-nvram.reg=xxxx */
|
QEMU_CAPS_DEVICE_NVRAM = 140, /* -global spapr-nvram.reg=xxxx */
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE = 141, /* -device pci-bridge */
|
||||||
|
|
||||||
QEMU_CAPS_LAST, /* this must always be the last item */
|
QEMU_CAPS_LAST, /* this must always be the last item */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3619,6 +3619,24 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
|
||||||
|
switch (def->model) {
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
||||||
|
if (def->idx == 0) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("PCI bridge index should be > 0"));
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
virBufferAsprintf(&buf, "pci-bridge,chassis_nr=%d,id=pci.%d",
|
||||||
|
def->idx, def->idx);
|
||||||
|
break;
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("wrong function called for pci-root"));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
/* We always get an IDE controller, whether we want it or not. */
|
/* We always get an IDE controller, whether we want it or not. */
|
||||||
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
|
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
|
||||||
default:
|
default:
|
||||||
@@ -5960,7 +5978,11 @@ qemuBuildCommandLine(virConnectPtr conn,
|
|||||||
int contOrder[] = {
|
int contOrder[] = {
|
||||||
/* We don't add an explicit IDE or FD controller because the
|
/* We don't add an explicit IDE or FD controller because the
|
||||||
* provided PIIX4 device already includes one. It isn't possible to
|
* provided PIIX4 device already includes one. It isn't possible to
|
||||||
* remove the PIIX4. */
|
* remove the PIIX4.
|
||||||
|
*
|
||||||
|
* We don't add PCI root controller either, because it's implicit,
|
||||||
|
* but we do add PCI bridges. */
|
||||||
|
VIR_DOMAIN_CONTROLLER_TYPE_PCI,
|
||||||
VIR_DOMAIN_CONTROLLER_TYPE_USB,
|
VIR_DOMAIN_CONTROLLER_TYPE_USB,
|
||||||
VIR_DOMAIN_CONTROLLER_TYPE_SCSI,
|
VIR_DOMAIN_CONTROLLER_TYPE_SCSI,
|
||||||
VIR_DOMAIN_CONTROLLER_TYPE_SATA,
|
VIR_DOMAIN_CONTROLLER_TYPE_SATA,
|
||||||
@@ -6518,6 +6540,12 @@ qemuBuildCommandLine(virConnectPtr conn,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Skip pci-root */
|
||||||
|
if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI &&
|
||||||
|
cont->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* Only recent QEMU implements a SATA (AHCI) controller */
|
/* Only recent QEMU implements a SATA (AHCI) controller */
|
||||||
if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_SATA) {
|
if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_SATA) {
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_ICH9_AHCI)) {
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_ICH9_AHCI)) {
|
||||||
|
|||||||
@@ -398,7 +398,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||||
QEMU_CAPS_DEVICE_USB_NET);
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||||
DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
|
DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
|
||||||
QEMU_CAPS_VNC_COLON,
|
QEMU_CAPS_VNC_COLON,
|
||||||
QEMU_CAPS_NO_REBOOT,
|
QEMU_CAPS_NO_REBOOT,
|
||||||
@@ -507,7 +508,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||||
QEMU_CAPS_DEVICE_USB_NET);
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||||
DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
|
DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
|
||||||
QEMU_CAPS_VNC_COLON,
|
QEMU_CAPS_VNC_COLON,
|
||||||
QEMU_CAPS_NO_REBOOT,
|
QEMU_CAPS_NO_REBOOT,
|
||||||
@@ -572,7 +574,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||||
QEMU_CAPS_DEVICE_USB_NET);
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||||
DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
|
DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
|
||||||
QEMU_CAPS_VNC_COLON,
|
QEMU_CAPS_VNC_COLON,
|
||||||
QEMU_CAPS_NO_REBOOT,
|
QEMU_CAPS_NO_REBOOT,
|
||||||
@@ -644,7 +647,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_VNC,
|
QEMU_CAPS_VNC,
|
||||||
QEMU_CAPS_DEVICE_QXL,
|
QEMU_CAPS_DEVICE_QXL,
|
||||||
QEMU_CAPS_DEVICE_VGA,
|
QEMU_CAPS_DEVICE_VGA,
|
||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA);
|
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||||
DO_TEST("qemu-1.0", 1000000, 0, 0,
|
DO_TEST("qemu-1.0", 1000000, 0, 0,
|
||||||
QEMU_CAPS_VNC_COLON,
|
QEMU_CAPS_VNC_COLON,
|
||||||
QEMU_CAPS_NO_REBOOT,
|
QEMU_CAPS_NO_REBOOT,
|
||||||
@@ -816,7 +820,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
QEMU_CAPS_DEVICE_USB_SERIAL,
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
QEMU_CAPS_DTB,
|
QEMU_CAPS_DTB,
|
||||||
QEMU_CAPS_IPV6_MIGRATION);
|
QEMU_CAPS_IPV6_MIGRATION,
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||||
DO_TEST("qemu-1.2.0", 1002000, 0, 0,
|
DO_TEST("qemu-1.2.0", 1002000, 0, 0,
|
||||||
QEMU_CAPS_VNC_COLON,
|
QEMU_CAPS_VNC_COLON,
|
||||||
QEMU_CAPS_NO_REBOOT,
|
QEMU_CAPS_NO_REBOOT,
|
||||||
@@ -919,7 +924,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_USB_NET,
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
QEMU_CAPS_DTB,
|
QEMU_CAPS_DTB,
|
||||||
QEMU_CAPS_SCSI_MEGASAS,
|
QEMU_CAPS_SCSI_MEGASAS,
|
||||||
QEMU_CAPS_IPV6_MIGRATION);
|
QEMU_CAPS_IPV6_MIGRATION,
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||||
DO_TEST("qemu-kvm-1.2.0", 1002000, 1, 0,
|
DO_TEST("qemu-kvm-1.2.0", 1002000, 1, 0,
|
||||||
QEMU_CAPS_VNC_COLON,
|
QEMU_CAPS_VNC_COLON,
|
||||||
QEMU_CAPS_NO_REBOOT,
|
QEMU_CAPS_NO_REBOOT,
|
||||||
@@ -1027,7 +1033,8 @@ mymain(void)
|
|||||||
QEMU_CAPS_DEVICE_USB_NET,
|
QEMU_CAPS_DEVICE_USB_NET,
|
||||||
QEMU_CAPS_DTB,
|
QEMU_CAPS_DTB,
|
||||||
QEMU_CAPS_SCSI_MEGASAS,
|
QEMU_CAPS_SCSI_MEGASAS,
|
||||||
QEMU_CAPS_IPV6_MIGRATION);
|
QEMU_CAPS_IPV6_MIGRATION,
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE);
|
||||||
|
|
||||||
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user