[libvirt] [PATCH] qemu: handle more machines with a single builtin IDE controller
Laine Stump
laine at laine.org
Sat Nov 21 19:36:44 UTC 2015
On 11/21/2015 02:00 PM, Guido Günther wrote:
> like I440FX by moving the condition into qemuDomainMachineHasBuiltinIDE
> and adding more machines.
Nice! I like this better than the original 3 patch series, since it
allows recognizing any new machinetypes with a single line change.
ACK, and thanks again!
>
> Reference: http://bugs.debian.org/805189
> ---
> src/qemu/qemu_command.c | 26 ++++++++++++++------------
> src/qemu/qemu_domain.c | 10 ++++++++++
> src/qemu/qemu_domain.h | 1 +
> 3 files changed, 25 insertions(+), 12 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index ef5ef93..4d00fd9 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -1054,11 +1054,12 @@ qemuAssignDeviceControllerAlias(virDomainDefPtr domainDef,
> */
> return virAsprintf(&controller->info.alias, "pci.%d", controller->idx);
> } else if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE) {
> - /* for any machine based on I440FX, the first (and currently
> - * only) IDE controller is an integrated controller hardcoded
> - * with id "ide"
> + /* for any machine based on e.g. I440FX or G3Beige, the
> + * first (and currently only) IDE controller is an integrated
> + * controller hardcoded with id "ide"
> */
> - if (qemuDomainMachineIsI440FX(domainDef) && controller->idx == 0)
> + if (qemuDomainMachineHasBuiltinIDE(domainDef) &&
> + controller->idx == 0)
> return VIR_STRDUP(controller->info.alias, "ide");
> } else if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_SATA) {
> /* for any Q35 machine, the first SATA controller is the
> @@ -4914,14 +4915,15 @@ qemuBuildControllerDevStr(virDomainDefPtr domainDef,
> break;
>
> case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
> - /* Since we currently only support the integrated IDE controller
> - * on 440fx, if we ever get to here, it's because some other
> - * machinetype had an IDE controller specified, or a 440fx had
> - * multiple ide controllers.
> + /* Since we currently only support the integrated IDE
> + * controller on various boards, if we ever get to here, it's
> + * because some other machinetype had an IDE controller
> + * specified, or one with a single IDE contraller had multiple
> + * ide controllers specified.
> */
> - if (qemuDomainMachineIsI440FX(domainDef))
> + if (qemuDomainMachineHasBuiltinIDE(domainDef))
> virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> - _("Only a single IDE controller is unsupported "
> + _("Only a single IDE controller is supported "
> "for this machine type"));
> else
> virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> @@ -9900,9 +9902,9 @@ qemuBuildCommandLine(virConnectPtr conn,
> cont->idx == 0 && qemuDomainMachineIsQ35(def))
> continue;
>
> - /* first IDE controller on i440fx machines is implicit */
> + /* first IDE controller is implicit on various machines */
> if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_IDE &&
> - cont->idx == 0 && qemuDomainMachineIsI440FX(def))
> + cont->idx == 0 && qemuDomainMachineHasBuiltinIDE(def))
> continue;
>
> if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_USB &&
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 0861bfd..18513f9 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -3724,6 +3724,16 @@ qemuDomainDefValidateMemoryHotplug(const virDomainDef *def,
> }
>
>
> +bool
> +qemuDomainMachineHasBuiltinIDE(const virDomainDef *def)
> +{
> + return qemuDomainMachineIsI440FX(def) ||
> + STREQ(def->os.machine, "malta") ||
> + STREQ(def->os.machine, "sun4u") ||
> + STREQ(def->os.machine, "g3beige");
> +}
> +
> +
> /**
> * qemuDomainUpdateCurrentMemorySize:
> *
> diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
> index 8b6b1a3..271dce9 100644
> --- a/src/qemu/qemu_domain.h
> +++ b/src/qemu/qemu_domain.h
> @@ -479,6 +479,7 @@ bool qemuDomainMachineIsQ35(const virDomainDef *def);
> bool qemuDomainMachineIsI440FX(const virDomainDef *def);
> bool qemuDomainMachineNeedsFDC(const virDomainDef *def);
> bool qemuDomainMachineIsS390CCW(const virDomainDef *def);
> +bool qemuDomainMachineHasBuiltinIDE(const virDomainDef *def);
>
> int qemuDomainUpdateCurrentMemorySize(virQEMUDriverPtr driver,
> virDomainObjPtr vm);
More information about the libvir-list
mailing list