diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bf0e76f489..e3ac926fcc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3022,7 +3022,7 @@ virDomainDiskDefParseXML(virCapsPtr caps, (xmlStrEqual(cur->name, BAD_CAST "serial"))) { serial = (char *)xmlNodeGetContent(cur); } else if (xmlStrEqual(cur->name, BAD_CAST "boot")) { - if (virDomainDeviceBootParseXML(cur, &def->bootIndex, + if (virDomainDeviceBootParseXML(cur, &def->info.bootIndex, bootMap)) goto error; } @@ -3791,7 +3791,7 @@ virDomainNetDefParseXML(virCapsPtr caps, /* Legacy back-compat. Don't add any more attributes here */ devaddr = virXMLPropString(cur, "devaddr"); } else if (xmlStrEqual(cur->name, BAD_CAST "boot")) { - if (virDomainDeviceBootParseXML(cur, &def->bootIndex, + if (virDomainDeviceBootParseXML(cur, &def->info.bootIndex, bootMap)) goto error; } else if ((actual == NULL) && @@ -6230,7 +6230,7 @@ virDomainHostdevDefParseXML(const xmlNodePtr node, } else if (xmlStrEqual(cur->name, BAD_CAST "alias")) { /* alias is parsed as part of virDomainDeviceInfoParseXML */ } else if (xmlStrEqual(cur->name, BAD_CAST "boot")) { - if (virDomainDeviceBootParseXML(cur, &def->bootIndex, + if (virDomainDeviceBootParseXML(cur, &def->info.bootIndex, bootMap)) goto error; } else if (xmlStrEqual(cur->name, BAD_CAST "rom")) { @@ -6240,7 +6240,7 @@ virDomainHostdevDefParseXML(const xmlNodePtr node, "%s", _("missing rom bar attribute")); goto error; } - if ((def->rombar = virDomainPciRombarModeTypeFromString(rombar)) <= 0) { + if ((def->info.rombar = virDomainPciRombarModeTypeFromString(rombar)) <= 0) { virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unknown rom bar value '%s'"), rombar); VIR_FREE(rombar); @@ -10089,8 +10089,8 @@ virDomainDiskDefFormat(virBufferPtr buf, virBufferAddLit(buf, " \n"); } - if (def->bootIndex) - virBufferAsprintf(buf, " \n", def->bootIndex); + if (def->info.bootIndex) + virBufferAsprintf(buf, " \n", def->info.bootIndex); if (def->readonly) virBufferAddLit(buf, " \n"); if (def->shared) @@ -10454,8 +10454,8 @@ virDomainNetDefFormat(virBufferPtr buf, return -1; virBufferAdjustIndent(buf, -6); } - if (def->bootIndex) - virBufferAsprintf(buf, " \n", def->bootIndex); + if (def->info.bootIndex) + virBufferAsprintf(buf, " \n", def->info.bootIndex); if (def->tune.sndbuf_specified) { virBufferAddLit(buf, " \n"); @@ -11305,19 +11305,19 @@ virDomainHostdevDefFormat(virBufferPtr buf, virBufferAddLit(buf, " \n"); - if (def->bootIndex) - virBufferAsprintf(buf, " \n", def->bootIndex); + if (def->info.bootIndex) + virBufferAsprintf(buf, " \n", def->info.bootIndex); if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0) return -1; - if (def->rombar) { + if (def->info.rombar) { const char *rombar - = virDomainPciRombarModeTypeToString(def->rombar); + = virDomainPciRombarModeTypeToString(def->info.rombar); if (!rombar) { virDomainReportError(VIR_ERR_INTERNAL_ERROR, _("unexpected rom bar value %d"), - def->rombar); + def->info.rombar); return -1; } virBufferAsprintf(buf, " \n", rombar); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 1d2fb81fb8..6419618b76 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -82,6 +82,14 @@ enum virDomainDeviceAddressPciMulti { VIR_DOMAIN_DEVICE_ADDRESS_PCI_MULTI_LAST }; +enum virDomainPciRombarMode { + VIR_DOMAIN_PCI_ROMBAR_DEFAULT = 0, + VIR_DOMAIN_PCI_ROMBAR_ON, + VIR_DOMAIN_PCI_ROMBAR_OFF, + + VIR_DOMAIN_PCI_ROMBAR_LAST +}; + typedef struct _virDomainDevicePCIAddress virDomainDevicePCIAddress; typedef virDomainDevicePCIAddress *virDomainDevicePCIAddressPtr; struct _virDomainDevicePCIAddress { @@ -159,6 +167,10 @@ struct _virDomainDeviceInfo { union { virDomainDeviceUSBMaster usb; } master; + /* rombar is only used for pci hostdev devices, and bootIndex only + * for disk, network interface, and hostdev devices */ + int rombar; /* enum virDomainPciRombarMode */ + int bootIndex; }; enum virDomainSeclabelType { @@ -389,7 +401,6 @@ struct _virDomainDiskDef { int cachemode; int error_policy; /* enum virDomainDiskErrorPolicy */ int rerror_policy; /* enum virDomainDiskErrorPolicy */ - int bootIndex; int iomode; int ioeventfd; int event_idx; @@ -635,7 +646,6 @@ struct _virDomainNetDef { } tune; char *script; char *ifname; - int bootIndex; virDomainDeviceInfo info; char *filter; virNWFilterHashTablePtr filterparams; @@ -1074,14 +1084,6 @@ enum virDomainHostdevSubsysType { VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST }; -enum virDomainPciRombarMode { - VIR_DOMAIN_PCI_ROMBAR_DEFAULT = 0, - VIR_DOMAIN_PCI_ROMBAR_ON, - VIR_DOMAIN_PCI_ROMBAR_OFF, - - VIR_DOMAIN_PCI_ROMBAR_LAST -}; - typedef struct _virDomainHostdevDef virDomainHostdevDef; typedef virDomainHostdevDef *virDomainHostdevDefPtr; struct _virDomainHostdevDef { @@ -1108,9 +1110,7 @@ struct _virDomainHostdevDef { int dummy; } caps; } source; - int bootIndex; virDomainDeviceInfo info; /* Guest address */ - int rombar; /* enum virDomainPciRombarMode */ virDomainHostdevOrigStates origstates; }; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 9bfbada913..543c57ab22 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2849,19 +2849,19 @@ qemuBuildPCIHostdevDevStr(virDomainHostdevDefPtr dev, const char *configfd, virBufferAsprintf(&buf, ",id=%s", dev->info.alias); if (configfd && *configfd) virBufferAsprintf(&buf, ",configfd=%s", configfd); - if (dev->bootIndex) - virBufferAsprintf(&buf, ",bootindex=%d", dev->bootIndex); + if (dev->info.bootIndex) + virBufferAsprintf(&buf, ",bootindex=%d", dev->info.bootIndex); if (qemuBuildDeviceAddressStr(&buf, &dev->info, qemuCaps) < 0) goto error; - if (dev->rombar) { + if (dev->info.rombar) { if (!qemuCapsGet(qemuCaps, QEMU_CAPS_PCI_ROMBAR)) { qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("rombar not supported in this QEMU binary")); goto error; } - switch (dev->rombar) { + switch (dev->info.rombar) { case VIR_DOMAIN_PCI_ROMBAR_OFF: virBufferAddLit(&buf, ",rombar=0"); break; @@ -4448,8 +4448,8 @@ qemuBuildCommandLine(virConnectPtr conn, if (!emitBootindex) bootindex = 0; - else if (disk->bootIndex) - bootindex = disk->bootIndex; + else if (disk->info.bootIndex) + bootindex = disk->info.bootIndex; if (withDeviceArg) { if (disk->bus == VIR_DOMAIN_DISK_BUS_FDC) { @@ -4643,7 +4643,7 @@ qemuBuildCommandLine(virConnectPtr conn, bootNet = 0; if (!bootindex) - bootindex = net->bootIndex; + bootindex = net->info.bootIndex; /* VLANs are not used with -netdev, so don't record them */ if (qemuCapsGet(qemuCaps, QEMU_CAPS_NETDEV) && @@ -5576,7 +5576,7 @@ qemuBuildCommandLine(virConnectPtr conn, virDomainHostdevDefPtr hostdev = def->hostdevs[i]; char *devstr; - if (hostdev->bootIndex) { + if (hostdev->info.bootIndex) { if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) { qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 196fd23a07..1b147a9a35 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4518,7 +4518,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn, */ for (i = 0 ; i < def->nnets ; i++) { virDomainNetDefPtr net = def->nets[i]; - int bootIndex = net->bootIndex; + int bootIndex = net->info.bootIndex; if (net->type == VIR_DOMAIN_NET_TYPE_NETWORK) { int actualType = virDomainNetGetActualType(net); const char *brname; @@ -4576,7 +4576,7 @@ static char *qemuDomainXMLToNative(virConnectPtr conn, net->data.ethernet.dev = brname; net->data.ethernet.ipaddr = ipaddr; } - net->bootIndex = bootIndex; + net->info.bootIndex = bootIndex; } for (i = 0 ; i < def->ngraphics ; i++) { if (def->graphics[i]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&