[libvirt] [PATCH v3] qemu: sound: Support intel 'ich6' model
Daniel P. Berrange
berrange at redhat.com
Mon Jan 24 11:23:56 UTC 2011
On Fri, Jan 21, 2011 at 05:53:08PM -0500, Cole Robinson wrote:
> @@ -3817,11 +3842,29 @@ qemuBuildCommandLine(virConnectPtr conn,
> virCommandAddArgList(cmd, "-soundhw", "pcspk", NULL);
> } else {
> virCommandAddArg(cmd, "-device");
> -
> if (!(str = qemuBuildSoundDevStr(sound)))
> goto error;
>
> virCommandAddArg(cmd, str);
> +
> + if (sound->model == VIR_DOMAIN_SOUND_MODEL_ICH6) {
> + char *codecstr = NULL;
> + if (!(qemuCmdFlags & QEMUD_CMD_FLAG_HDA_DUPLEX)) {
> + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("this QEMU binary lacks hda support"));
> + goto error;
> + }
> +
> + virCommandAddArg(cmd, "-device");
> + if (!(codecstr = qemuBuildSoundCodecStr(sound,
> + "hda-duplex"))) {
> + goto error;
> + }
> +
> + virCommandAddArg(cmd, codecstr);
> + VIR_FREE(codecstr);
> + }
> +
> VIR_FREE(str);
> }
> }
> @@ -3833,13 +3876,19 @@ qemuBuildCommandLine(virConnectPtr conn,
>
> for (i = 0 ; i < def->nsounds && size > 0 ; i++) {
> virDomainSoundDefPtr sound = def->sounds[i];
> - const char *model = virDomainSoundModelTypeToString(sound->model);
> - if (!model) {
> - VIR_FREE(modstr);
> + const char *model = "hda";
> +
> + if (sound->model != VIR_DOMAIN_SOUND_MODEL_ICH6 &&
> + !(model = virDomainSoundModelTypeToString(sound->model))) {
> qemuReportError(VIR_ERR_INTERNAL_ERROR,
> "%s", _("invalid sound model"));
> + }
> +
> + if (!model) {
> + VIR_FREE(modstr);
> goto error;
> }
> +
> strncat(modstr, model, size);
> size -= strlen(model);
> if (i < (def->nsounds - 1))
I'm not sure the logic here is correct. This is the code branch that
is taken when '-device' does not exist. If this branch is taken then
the "hda" device doesn't exist either, so I think this branch ought
to be unchanged, except for raising CONFIG_UNSUPPORTED for HDA device
types
Daniel
More information about the libvir-list
mailing list