[libvirt] [PATCH v2 0/4] qemu: Add support for -device hda-output (disable line-in)

Add support for hda 'output' codec for ich6 and ich9 sound devices, which allow us to disable line-in for guest. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1126641 v1: https://www.redhat.com/archives/libvir-list/2018-May/msg01311.html v2: - Split patch into series of patches - Add description of feature in docs/news.xml - Improve the documentation in docs/formatdomain.html.in - Fixes coding standard errors/inconsistencies Filip Alac (4): Add 'output' codec in docs, conf and xml2xmltest qemu: Extend qemu_capabilities with 'hda-output' qemu: Extend qemu_command with 'hda-output' docs: news: Describe the 'output' codec docs/formatdomain.html.in | 15 ++++++++++++--- docs/news.xml | 8 ++++++++ docs/schemas/domaincommon.rng | 1 + src/conf/domain_conf.c | 3 ++- src/conf/domain_conf.h | 1 + src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 5 ++++- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 + .../qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 + .../migration-in-params-in.xml | 1 + .../migration-out-nbd-in.xml | 1 + .../migration-out-nbd-out.xml | 1 + .../migration-out-params-in.xml | 1 + tests/qemustatusxml2xmldata/modern-in.xml | 1 + tests/qemuxml2argvdata/sound-device.args | 2 ++ tests/qemuxml2argvdata/sound-device.xml | 2 ++ tests/qemuxml2argvtest.c | 1 + tests/qemuxml2xmloutdata/sound-device.xml | 2 ++ 36 files changed, 62 insertions(+), 5 deletions(-) -- 2.17.0

Add documentation for 'output' codec. Extend domain_conf with 'output' codec. Extend xml2xmltest for testing 'output' codec. Signed-off-by: Filip Alac <filipalac@gmail.com> --- Sorry for not the best mail subject. docs/formatdomain.html.in | 15 ++++++++++++--- docs/schemas/domaincommon.rng | 1 + src/conf/domain_conf.c | 3 ++- src/conf/domain_conf.h | 1 + .../migration-in-params-in.xml | 1 + .../migration-out-nbd-in.xml | 1 + .../migration-out-nbd-out.xml | 1 + .../migration-out-params-in.xml | 1 + tests/qemustatusxml2xmldata/modern-in.xml | 1 + tests/qemuxml2xmloutdata/sound-device.xml | 2 ++ 10 files changed, 23 insertions(+), 4 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 0d0fd3b..665d0f2 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -7387,9 +7387,18 @@ qemu-kvm -net nic,model=? /dev/null with <code>ich6</code> model can have optional sub-elements <code><codec></code> to attach various audio codecs to the audio device. If not specified, a default codec - will be attached to allow playback and recording. Valid values - are 'duplex' (advertise a line-in and a line-out) and 'micro' - (advertise a speaker and a microphone). + will be attached to allow playback and recording. + </p> + <p> + Valid values are: + </p> + <p> + <ul> + <li>'duplex' - advertise a line-in and a line-out </li> + <li>'micro' - advertise a speaker and a microphone </li> + <li>'output' - advertise a line-out + <span class="since">Since 4.4.0</span></li> + </ul> </p> <pre> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 71ac3d0..f16e157 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -3824,6 +3824,7 @@ <choice> <value>duplex</value> <value>micro</value> + <value>output</value> </choice> </attribute> </element> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3689ac0..f12c87d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -529,7 +529,8 @@ VIR_ENUM_IMPL(virDomainSmartcard, VIR_DOMAIN_SMARTCARD_TYPE_LAST, VIR_ENUM_IMPL(virDomainSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST, "duplex", - "micro") + "micro", + "output") VIR_ENUM_IMPL(virDomainSoundModel, VIR_DOMAIN_SOUND_MODEL_LAST, "sb16", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index a78fdee..ee3285a 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1335,6 +1335,7 @@ struct _virDomainInputDef { typedef enum { VIR_DOMAIN_SOUND_CODEC_TYPE_DUPLEX, VIR_DOMAIN_SOUND_CODEC_TYPE_MICRO, + VIR_DOMAIN_SOUND_CODEC_TYPE_OUTPUT, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST } virDomainSoundCodecType; diff --git a/tests/qemustatusxml2xmldata/migration-in-params-in.xml b/tests/qemustatusxml2xmldata/migration-in-params-in.xml index b0caa34..03f18b4 100644 --- a/tests/qemustatusxml2xmldata/migration-in-params-in.xml +++ b/tests/qemustatusxml2xmldata/migration-in-params-in.xml @@ -236,6 +236,7 @@ <flag name='iscsi.password-secret'/> <flag name='isa-serial'/> <flag name='dump-completed'/> + <flag name='hda-output'/> </qemuCaps> <job type='none' async='migration in' phase='prepare' flags='0x900'> <migParams> diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-in.xml b/tests/qemustatusxml2xmldata/migration-out-nbd-in.xml index 6d87c1e..636accf 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-in.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-in.xml @@ -229,6 +229,7 @@ <flag name='iscsi.password-secret'/> <flag name='isa-serial'/> <flag name='dump-completed'/> + <flag name='hda-output'/> </qemuCaps> <job type='none' async='migration out' phase='perform3'> <disk dev='vdb' migrating='yes'/> diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml index 05da1f8..315d8e4 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml @@ -229,6 +229,7 @@ <flag name='iscsi.password-secret'/> <flag name='isa-serial'/> <flag name='dump-completed'/> + <flag name='hda-output'/> </qemuCaps> <job type='none' async='migration out' phase='perform3' flags='0x0'> <disk dev='vdb' migrating='yes'/> diff --git a/tests/qemustatusxml2xmldata/migration-out-params-in.xml b/tests/qemustatusxml2xmldata/migration-out-params-in.xml index 1764979..ae20648 100644 --- a/tests/qemustatusxml2xmldata/migration-out-params-in.xml +++ b/tests/qemustatusxml2xmldata/migration-out-params-in.xml @@ -236,6 +236,7 @@ <flag name='iscsi.password-secret'/> <flag name='isa-serial'/> <flag name='dump-completed'/> + <flag name='hda-output'/> </qemuCaps> <job type='none' async='migration out' phase='perform3' flags='0x802'> <disk dev='vda' migrating='no'/> diff --git a/tests/qemustatusxml2xmldata/modern-in.xml b/tests/qemustatusxml2xmldata/modern-in.xml index d63fcf7..5b7e2a3 100644 --- a/tests/qemustatusxml2xmldata/modern-in.xml +++ b/tests/qemustatusxml2xmldata/modern-in.xml @@ -232,6 +232,7 @@ <flag name='iscsi.password-secret'/> <flag name='isa-serial'/> <flag name='dump-completed'/> + <flag name='hda-output'/> </qemuCaps> <devices> <device alias='rng0'/> diff --git a/tests/qemuxml2xmloutdata/sound-device.xml b/tests/qemuxml2xmloutdata/sound-device.xml index 62336a8..cbf4d17 100644 --- a/tests/qemuxml2xmloutdata/sound-device.xml +++ b/tests/qemuxml2xmloutdata/sound-device.xml @@ -43,6 +43,7 @@ <sound model='ich6'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </sound> <sound model='ich9'> @@ -51,6 +52,7 @@ <sound model='ich9'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </sound> <sound model='usb'/> -- 2.17.0

On Sat, May 19, 2018 at 01:01:48PM +0200, Filip Alac wrote:
Add documentation for 'output' codec. Extend domain_conf with 'output' codec. Extend xml2xmltest for testing 'output' codec.
Signed-off-by: Filip Alac <filipalac@gmail.com> --- Sorry for not the best mail subject. docs/formatdomain.html.in | 15 ++++++++++++--- docs/schemas/domaincommon.rng | 1 + src/conf/domain_conf.c | 3 ++- src/conf/domain_conf.h | 1 + .../migration-in-params-in.xml | 1 + .../migration-out-nbd-in.xml | 1 + .../migration-out-nbd-out.xml | 1 + .../migration-out-params-in.xml | 1 + tests/qemustatusxml2xmldata/modern-in.xml | 1 + tests/qemuxml2xmloutdata/sound-device.xml | 2 ++ 10 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 0d0fd3b..665d0f2 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -7387,9 +7387,18 @@ qemu-kvm -net nic,model=? /dev/null with <code>ich6</code> model can have optional sub-elements <code><codec></code> to attach various audio codecs to the audio device. If not specified, a default codec - will be attached to allow playback and recording. Valid values - are 'duplex' (advertise a line-in and a line-out) and 'micro' - (advertise a speaker and a microphone). + will be attached to allow playback and recording. + </p> + <p> + Valid values are: + </p> + <p> + <ul> + <li>'duplex' - advertise a line-in and a line-out </li> + <li>'micro' - advertise a speaker and a microphone </li> + <li>'output' - advertise a line-out + <span class="since">Since 4.4.0</span></li> + </ul> </p>
<pre> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 71ac3d0..f16e157 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -3824,6 +3824,7 @@ <choice> <value>duplex</value> <value>micro</value> + <value>output</value> </choice> </attribute> </element> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3689ac0..f12c87d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -529,7 +529,8 @@ VIR_ENUM_IMPL(virDomainSmartcard, VIR_DOMAIN_SMARTCARD_TYPE_LAST,
VIR_ENUM_IMPL(virDomainSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST, "duplex", - "micro") + "micro", + "output")
VIR_ENUM_IMPL(virDomainSoundModel, VIR_DOMAIN_SOUND_MODEL_LAST, "sb16", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index a78fdee..ee3285a 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1335,6 +1335,7 @@ struct _virDomainInputDef { typedef enum { VIR_DOMAIN_SOUND_CODEC_TYPE_DUPLEX, VIR_DOMAIN_SOUND_CODEC_TYPE_MICRO, + VIR_DOMAIN_SOUND_CODEC_TYPE_OUTPUT,
VIR_DOMAIN_SOUND_CODEC_TYPE_LAST
You'll have to move the corresponding qemu enum from qemu_command.c over here, since this fails compilation because qemuSoundCodec relies on ^this enum. All the tests in this patch will have to be stripped into a separate patch and moved at the end of the series.
} virDomainSoundCodecType; diff --git a/tests/qemustatusxml2xmldata/migration-in-params-in.xml b/tests/qemustatusxml2xmldata/migration-in-params-in.xml index b0caa34..03f18b4 100644 --- a/tests/qemustatusxml2xmldata/migration-in-params-in.xml +++ b/tests/qemustatusxml2xmldata/migration-in-params-in.xml @@ -236,6 +236,7 @@ <flag name='iscsi.password-secret'/> <flag name='isa-serial'/> <flag name='dump-completed'/> + <flag name='hda-output'/>
Status xml tests parse qemu capabilities which we don't know until patch 2. ...
diff --git a/tests/qemuxml2xmloutdata/sound-device.xml b/tests/qemuxml2xmloutdata/sound-device.xml index 62336a8..cbf4d17 100644 --- a/tests/qemuxml2xmloutdata/sound-device.xml +++ b/tests/qemuxml2xmloutdata/sound-device.xml @@ -43,6 +43,7 @@ <sound model='ich6'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </sound> <sound model='ich9'> @@ -51,6 +52,7 @@ <sound model='ich9'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </sound> <sound model='usb'/>
xml2xml test takes xml2argvdata as input and compares it with xml2xmloutdata, so ^this is insufficient since the input doesn't know the codec yet, so comparison fails. However, qemuxml2argv test would fail if you added it here because then the command line buildup would fail, since that is done in patch 3. Erik

Extend qemu_capabilities with 'hda-output' codec support. Signed-off-by: Filip Alac <filipalac@gmail.com> --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 + 21 files changed, 22 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index bface72..fda1630 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -487,6 +487,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, /* 300 */ "sdl-gl", "screendump_device", + "hda-output", ); @@ -1117,6 +1118,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "pr-manager-helper", QEMU_CAPS_PR_MANAGER_HELPER }, { "virtual-css-bridge", QEMU_CAPS_CCW }, { "vfio-ccw", QEMU_CAPS_DEVICE_VFIO_CCW }, + { "hda-output", QEMU_CAPS_HDA_OUTPUT }, }; static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBalloon[] = { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 6f99534..c0b497a 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -471,6 +471,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ /* 300 */ QEMU_CAPS_SDL_GL, /* -sdl gl */ QEMU_CAPS_SCREENDUMP_DEVICE, /* screendump command accepts device & head */ + QEMU_CAPS_HDA_OUTPUT, /* -device hda-output */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index e7c2e9a..2b13ebc 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -105,6 +105,7 @@ <flag name='query-cpu-definitions'/> <flag name='kernel-irqchip'/> <flag name='isa-serial'/> + <flag name='hda-output'/> <version>1005003</version> <kvmVersion>0</kvmVersion> <microcodeVersion>46523</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index e57dec3..ecd3129 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -110,6 +110,7 @@ <flag name='query-cpu-definitions'/> <flag name='kernel-irqchip'/> <flag name='isa-serial'/> + <flag name='hda-output'/> <version>1006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>44752</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 39ec8f9..c31a972 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -112,6 +112,7 @@ <flag name='query-cpu-definitions'/> <flag name='kernel-irqchip'/> <flag name='isa-serial'/> + <flag name='hda-output'/> <version>1007000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>50196</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index afe0882..07cb2a3 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -128,6 +128,7 @@ <flag name='query-named-block-nodes'/> <flag name='kernel-irqchip'/> <flag name='isa-serial'/> + <flag name='hda-output'/> <version>2001001</version> <kvmVersion>0</kvmVersion> <microcodeVersion>58992</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index 5904306..e11c112 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -155,6 +155,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>303541</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml index 2912c8d..21d91c8 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -154,6 +154,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>382824</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml index 77ca301..7821144 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml @@ -197,6 +197,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>344938</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml index de41d96..7bdae5b 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -163,6 +163,7 @@ <flag name='memory-backend-file.discard-data'/> <flag name='sdl-gl'/> <flag name='screendump_device'/> + <flag name='hda-output'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>343099</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml index fc26f93..1c7fc51 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -160,6 +160,7 @@ <flag name='memory-backend-file.discard-data'/> <flag name='sdl-gl'/> <flag name='screendump_device'/> + <flag name='hda-output'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>419968</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml index 820b3ef..b97b15e 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -201,6 +201,7 @@ <flag name='memory-backend-file.discard-data'/> <flag name='sdl-gl'/> <flag name='screendump_device'/> + <flag name='hda-output'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>390813</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml index 871eb5e..5686172 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml @@ -154,6 +154,7 @@ <flag name='virtio-gpu.max_outputs'/> <flag name='isa-serial'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2004000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>75406</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml index 90dce5a..e86fce9 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml @@ -160,6 +160,7 @@ <flag name='virtio-gpu.max_outputs'/> <flag name='isa-serial'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2005000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>216528</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml index 4298548..e5268ed 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml @@ -142,6 +142,7 @@ <flag name='dump-completed'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>228241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml index 07cdc49..7e514be 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml @@ -137,6 +137,7 @@ <flag name='dump-completed'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>263005</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml index 4c6371a..0d542b8 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml @@ -172,6 +172,7 @@ <flag name='dump-completed'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2006000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>227332</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml index c322d18..5795bc9 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml @@ -177,6 +177,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2007000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>239029</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml index 7c329ad..bd467d2 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml @@ -179,6 +179,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2008000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>255684</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml index cfc9405..1e6d0cc 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml @@ -146,6 +146,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>346538</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml index 0701c24..7e45b31 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml @@ -192,6 +192,7 @@ <flag name='disk-write-cache'/> <flag name='nbd-tls'/> <flag name='sdl-gl'/> + <flag name='hda-output'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>320947</microcodeVersion> -- 2.17.0

Extend qemu_command with 'hda-output' codec support. Extend xml2argvtest for testing 'output' codec. Signed-off-by: Filip Alac <filipalac@gmail.com> --- src/qemu/qemu_command.c | 5 ++++- tests/qemuxml2argvdata/sound-device.args | 2 ++ tests/qemuxml2argvdata/sound-device.xml | 2 ++ tests/qemuxml2argvtest.c | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f3724a7..2ddf128 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -139,7 +139,8 @@ VIR_ENUM_DECL(qemuSoundCodec) VIR_ENUM_IMPL(qemuSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST, "hda-duplex", - "hda-micro"); + "hda-micro", + "hda-output"); VIR_ENUM_DECL(qemuControllerModelUSB) @@ -4142,6 +4143,8 @@ qemuSoundCodecTypeToCaps(int type) return QEMU_CAPS_HDA_DUPLEX; case VIR_DOMAIN_SOUND_CODEC_TYPE_MICRO: return QEMU_CAPS_HDA_MICRO; + case VIR_DOMAIN_SOUND_CODEC_TYPE_OUTPUT: + return QEMU_CAPS_HDA_OUTPUT; default: return -1; } diff --git a/tests/qemuxml2argvdata/sound-device.args b/tests/qemuxml2argvdata/sound-device.args index ee8313b..f97050a 100644 --- a/tests/qemuxml2argvdata/sound-device.args +++ b/tests/qemuxml2argvdata/sound-device.args @@ -33,10 +33,12 @@ server,nowait \ -device intel-hda,id=sound5,bus=pci.0,addr=0x6 \ -device hda-micro,id=sound5-codec0,bus=sound5.0,cad=0 \ -device hda-duplex,id=sound5-codec1,bus=sound5.0,cad=1 \ +-device hda-output,id=sound5-codec2,bus=sound5.0,cad=2 \ -device ich9-intel-hda,id=sound6,bus=pci.0,addr=0x7 \ -device hda-duplex,id=sound6-codec0,bus=sound6.0,cad=0 \ -device ich9-intel-hda,id=sound7,bus=pci.0,addr=0x8 \ -device hda-micro,id=sound7-codec0,bus=sound7.0,cad=0 \ -device hda-duplex,id=sound7-codec1,bus=sound7.0,cad=1 \ +-device hda-output,id=sound7-codec2,bus=sound7.0,cad=2 \ -device usb-audio,id=sound8,bus=usb.0,port=1 \ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x9 diff --git a/tests/qemuxml2argvdata/sound-device.xml b/tests/qemuxml2argvdata/sound-device.xml index bceb9d1..c544e93 100644 --- a/tests/qemuxml2argvdata/sound-device.xml +++ b/tests/qemuxml2argvdata/sound-device.xml @@ -32,11 +32,13 @@ <sound model='ich6'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> </sound> <sound model='ich9'/> <sound model='ich9'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> </sound> <sound model='usb'/> <memballoon model='virtio'/> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 78454ac..e2eec96 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1515,6 +1515,7 @@ mymain(void) DO_TEST("sound", NONE); DO_TEST("sound-device", QEMU_CAPS_HDA_DUPLEX, QEMU_CAPS_HDA_MICRO, + QEMU_CAPS_HDA_OUTPUT, QEMU_CAPS_DEVICE_ICH9_INTEL_HDA, QEMU_CAPS_OBJECT_USB_AUDIO); DO_TEST("fs9p", NONE); -- 2.17.0

On Sat, May 19, 2018 at 01:01:50PM +0200, Filip Alac wrote:
Extend qemu_command with 'hda-output' codec support. Extend xml2argvtest for testing 'output' codec.
Signed-off-by: Filip Alac <filipalac@gmail.com> --- src/qemu/qemu_command.c | 5 ++++- tests/qemuxml2argvdata/sound-device.args | 2 ++ tests/qemuxml2argvdata/sound-device.xml | 2 ++ tests/qemuxml2argvtest.c | 1 + 4 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f3724a7..2ddf128 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -139,7 +139,8 @@ VIR_ENUM_DECL(qemuSoundCodec)
VIR_ENUM_IMPL(qemuSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST, "hda-duplex", - "hda-micro"); + "hda-micro", + "hda-output");
^This needs to be moved to patch 1, otherwise patch 1 doesn't compile. Technically, you could leave the following test hunk in this patch, but I'd just strip that too and create a separate patch solely to be consistent within the series, since we need to move the test changes from patch 1 into a separate patch after this one. Erik
diff --git a/tests/qemuxml2argvdata/sound-device.args b/tests/qemuxml2argvdata/sound-device.args index ee8313b..f97050a 100644 --- a/tests/qemuxml2argvdata/sound-device.args +++ b/tests/qemuxml2argvdata/sound-device.args @@ -33,10 +33,12 @@ server,nowait \ -device intel-hda,id=sound5,bus=pci.0,addr=0x6 \ -device hda-micro,id=sound5-codec0,bus=sound5.0,cad=0 \ -device hda-duplex,id=sound5-codec1,bus=sound5.0,cad=1 \ +-device hda-output,id=sound5-codec2,bus=sound5.0,cad=2 \ -device ich9-intel-hda,id=sound6,bus=pci.0,addr=0x7 \ -device hda-duplex,id=sound6-codec0,bus=sound6.0,cad=0 \ -device ich9-intel-hda,id=sound7,bus=pci.0,addr=0x8 \ -device hda-micro,id=sound7-codec0,bus=sound7.0,cad=0 \ -device hda-duplex,id=sound7-codec1,bus=sound7.0,cad=1 \ +-device hda-output,id=sound7-codec2,bus=sound7.0,cad=2 \ -device usb-audio,id=sound8,bus=usb.0,port=1 \ -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x9 diff --git a/tests/qemuxml2argvdata/sound-device.xml b/tests/qemuxml2argvdata/sound-device.xml index bceb9d1..c544e93 100644 --- a/tests/qemuxml2argvdata/sound-device.xml +++ b/tests/qemuxml2argvdata/sound-device.xml @@ -32,11 +32,13 @@ <sound model='ich6'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> </sound> <sound model='ich9'/> <sound model='ich9'> <codec type='micro'/> <codec type='duplex'/> + <codec type='output'/> </sound> <sound model='usb'/> <memballoon model='virtio'/> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 78454ac..e2eec96 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1515,6 +1515,7 @@ mymain(void) DO_TEST("sound", NONE); DO_TEST("sound-device", QEMU_CAPS_HDA_DUPLEX, QEMU_CAPS_HDA_MICRO, + QEMU_CAPS_HDA_OUTPUT, QEMU_CAPS_DEVICE_ICH9_INTEL_HDA, QEMU_CAPS_OBJECT_USB_AUDIO); DO_TEST("fs9p", NONE); -- 2.17.0
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Describe the feature in changelog. Signed-off-by: Filip Alac <filipalac@gmail.com> --- docs/news.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/news.xml b/docs/news.xml index 7d40e85..4432811 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -65,6 +65,14 @@ OpenGL accelerated rendering. </description> </change> + <change> + <summary> + qemu: Add support for 'output' codec + </summary> + <description> + Support the 'output' codec which advertise only a line-out for a guest. + </description> + </change> </section> <section title="Bug fixes"> </section> -- 2.17.0

On Sat, May 19, 2018 at 01:01:47PM +0200, Filip Alac wrote:
Add support for hda 'output' codec for ich6 and ich9 sound devices, which allow us to disable line-in for guest.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1126641
v1: https://www.redhat.com/archives/libvir-list/2018-May/msg01311.html
v2: - Split patch into series of patches
Although I agree with John, that splitting the patch added readability and logical order since v1, you need to make sure that make check and make syntax-check pass after every single patch, so the split with the tests he originally suggested couldn't have worked sadly because of how our test suite works, see my responses to individual patches. Erik
participants (2)
-
Erik Skultety
-
Filip Alac