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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list