[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