提交 d350a34c 编写于 作者: L liguang 提交者: Ján Tomko

qemu: build command line for pci-bridge device

Signed-off-by: NJán Tomko <jtomko@redhat.com>
上级 df0ebf6b
...@@ -222,6 +222,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, ...@@ -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[] = { ...@@ -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 { ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册