From nobody Mon Feb 9 23:20:01 2026
Delivered-To: importer@patchew.org
Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28
as permitted sender) client-ip=209.132.183.28;
envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com;
Authentication-Results: mx.zohomail.com;
dkim=fail;
spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=fail(p=none dis=none) header.from=gmail.com
Return-Path: <codec> 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).
+ are 'duplex' (advertise a line-in and a line-out), 'micro'
+ (advertise a speaker and a microphone) and 'output'
+ (advertise a speaker).
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 71ac3d07..f16e1573 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -3824,6 +3824,7 @@
duplex
micro
+ output
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 3689ac0a..f12c87d2 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,
=20
VIR_ENUM_IMPL(virDomainSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST,
"duplex",
- "micro")
+ "micro",
+ "output")
=20
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 a78fdee4..ee3285a9 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,
=20
VIR_DOMAIN_SOUND_CODEC_TYPE_LAST
} virDomainSoundCodecType;
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index a5cb24fe..ba085a9e 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -486,6 +486,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
=20
/* 300 */
"sdl-gl",
+ "hda-output",
);
=20
=20
@@ -1015,6 +1016,7 @@ struct virQEMUCapsStringFlags virQEMUCapsEvents[] =3D=
{
struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] =3D {
{ "hda-duplex", QEMU_CAPS_HDA_DUPLEX },
{ "hda-micro", QEMU_CAPS_HDA_MICRO },
+ { "hda-output", QEMU_CAPS_HDA_OUTPUT},
{ "ccid-card-emulated", QEMU_CAPS_CCID_EMULATED },
{ "ccid-card-passthru", QEMU_CAPS_CCID_PASSTHRU },
{ "piix3-usb-uhci", QEMU_CAPS_PIIX3_USB_UHCI },
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index d23c34c2..3e9a8b30 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -470,6 +470,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for =
syntax-check */
=20
/* 300 */
QEMU_CAPS_SDL_GL, /* -sdl gl */
+ QEMU_CAPS_HDA_OUTPUT, /* -device hda-output*/
=20
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index c4237339..aee5bde5 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -139,7 +139,8 @@ VIR_ENUM_DECL(qemuSoundCodec)
=20
VIR_ENUM_IMPL(qemuSoundCodec, VIR_DOMAIN_SOUND_CODEC_TYPE_LAST,
"hda-duplex",
- "hda-micro");
+ "hda-micro",
+ "hda-output");
=20
VIR_ENUM_DECL(qemuControllerModelUSB)
=20
@@ -4172,6 +4173,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/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_1.5.3.x86_64.xml
index e7c2e9a1..2b13ebc1 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 @@
+
1005003
0
46523
diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_1.6.0.x86_64.xml
index e57dec32..ecd31293 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 @@
+
1006000
0
44752
diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_1.7.0.x86_64.xml
index 39ec8f9b..c31a9721 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 @@
+
1007000
0
50196
diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.1.1.x86_64.xml
index afe0882d..07cb2a37 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 @@
+
2001001
0
58992
diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qem=
ucapabilitiesdata/caps_2.10.0.aarch64.xml
index 59043068..e11c1122 100644
--- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml
@@ -155,6 +155,7 @@
+
2010000
0
303541
diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemuc=
apabilitiesdata/caps_2.10.0.ppc64.xml
index 2912c8d6..21d91c8d 100644
--- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml
@@ -154,6 +154,7 @@
+
2010000
0
382824
diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemu=
capabilitiesdata/caps_2.10.0.x86_64.xml
index 77ca3013..7821144e 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 @@
+
2010000
0
344938
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qem=
ucapabilitiesdata/caps_2.12.0.aarch64.xml
index cabe4f2f..e4f22684 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml
@@ -162,6 +162,7 @@
+
2011090
0
343099
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemuc=
apabilitiesdata/caps_2.12.0.ppc64.xml
index bffe3b3b..3e393633 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml
@@ -159,6 +159,7 @@
+
2011090
0
419968
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemu=
capabilitiesdata/caps_2.12.0.x86_64.xml
index 4247afeb..35eadc18 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
@@ -200,6 +200,7 @@
+
2011090
0
390813
diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.4.0.x86_64.xml
index 871eb5e4..56861723 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 @@
+
2004000
0
75406
diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.5.0.x86_64.xml
index 90dce5a7..e86fce9f 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 @@
+
2005000
0
216528
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml b/tests/qemu=
capabilitiesdata/caps_2.6.0.aarch64.xml
index 42985489..e5268eda 100644
--- a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml
@@ -142,6 +142,7 @@
+
2006000
0
228241
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml b/tests/qemuca=
pabilitiesdata/caps_2.6.0.ppc64.xml
index 07cdc49b..7e514be6 100644
--- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml
@@ -137,6 +137,7 @@
+
2006000
0
263005
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.6.0.x86_64.xml
index 4c6371a6..0d542b87 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 @@
+
2006000
0
227332
diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.7.0.x86_64.xml
index c322d18d..5795bc95 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 @@
+
2007000
0
239029
diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.8.0.x86_64.xml
index 7c329ad4..bd467d27 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 @@
+
2008000
0
255684
diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemuca=
pabilitiesdata/caps_2.9.0.ppc64.xml
index cfc94050..1e6d0cc3 100644
--- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml
@@ -146,6 +146,7 @@
+
2009000
0
346538
diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemuc=
apabilitiesdata/caps_2.9.0.x86_64.xml
index 0701c244..7e45b311 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 @@
+
2009000
0
320947
diff --git a/tests/qemustatusxml2xmldata/migration-in-params-in.xml b/tests=
/qemustatusxml2xmldata/migration-in-params-in.xml
index b0caa34e..03f18b4f 100644
--- a/tests/qemustatusxml2xmldata/migration-in-params-in.xml
+++ b/tests/qemustatusxml2xmldata/migration-in-params-in.xml
@@ -236,6 +236,7 @@
+
diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-in.xml b/tests/q=
emustatusxml2xmldata/migration-out-nbd-in.xml
index 6d87c1ec..636accf0 100644
--- a/tests/qemustatusxml2xmldata/migration-out-nbd-in.xml
+++ b/tests/qemustatusxml2xmldata/migration-out-nbd-in.xml
@@ -229,6 +229,7 @@
+
diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml b/tests/=
qemustatusxml2xmldata/migration-out-nbd-out.xml
index 05da1f81..315d8e4c 100644
--- a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml
+++ b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml
@@ -229,6 +229,7 @@
+
diff --git a/tests/qemustatusxml2xmldata/migration-out-params-in.xml b/test=
s/qemustatusxml2xmldata/migration-out-params-in.xml
index 17649796..ae206483 100644
--- a/tests/qemustatusxml2xmldata/migration-out-params-in.xml
+++ b/tests/qemustatusxml2xmldata/migration-out-params-in.xml
@@ -236,6 +236,7 @@
+
diff --git a/tests/qemustatusxml2xmldata/modern-in.xml b/tests/qemustatusxm=
l2xmldata/modern-in.xml
index d63fcf79..5b7e2a34 100644
--- a/tests/qemustatusxml2xmldata/modern-in.xml
+++ b/tests/qemustatusxml2xmldata/modern-in.xml
@@ -232,6 +232,7 @@
+
diff --git a/tests/qemuxml2argvdata/sound-device.args b/tests/qemuxml2argvd=
ata/sound-device.args
index ee8313bf..f97050a0 100644
--- a/tests/qemuxml2argvdata/sound-device.args
+++ b/tests/qemuxml2argvdata/sound-device.args
@@ -33,10 +33,12 @@ server,nowait \
-device intel-hda,id=3Dsound5,bus=3Dpci.0,addr=3D0x6 \
-device hda-micro,id=3Dsound5-codec0,bus=3Dsound5.0,cad=3D0 \
-device hda-duplex,id=3Dsound5-codec1,bus=3Dsound5.0,cad=3D1 \
+-device hda-output,id=3Dsound5-codec2,bus=3Dsound5.0,cad=3D2 \
-device ich9-intel-hda,id=3Dsound6,bus=3Dpci.0,addr=3D0x7 \
-device hda-duplex,id=3Dsound6-codec0,bus=3Dsound6.0,cad=3D0 \
-device ich9-intel-hda,id=3Dsound7,bus=3Dpci.0,addr=3D0x8 \
-device hda-micro,id=3Dsound7-codec0,bus=3Dsound7.0,cad=3D0 \
-device hda-duplex,id=3Dsound7-codec1,bus=3Dsound7.0,cad=3D1 \
+-device hda-output,id=3Dsound7-codec2,bus=3Dsound7.0,cad=3D2 \
-device usb-audio,id=3Dsound8,bus=3Dusb.0,port=3D1 \
-device virtio-balloon-pci,id=3Dballoon0,bus=3Dpci.0,addr=3D0x9
diff --git a/tests/qemuxml2argvdata/sound-device.xml b/tests/qemuxml2argvda=
ta/sound-device.xml
index bceb9d1f..c544e931 100644
--- a/tests/qemuxml2argvdata/sound-device.xml
+++ b/tests/qemuxml2argvdata/sound-device.xml
@@ -32,11 +32,13 @@
+
+
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 07e5ba1d..ff32347f 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);
diff --git a/tests/qemuxml2xmloutdata/sound-device.xml b/tests/qemuxml2xmlo=
utdata/sound-device.xml
index 62336a8c..cbf4d179 100644
--- a/tests/qemuxml2xmloutdata/sound-device.xml
+++ b/tests/qemuxml2xmloutdata/sound-device.xml
@@ -43,6 +43,7 @@
+
@@ -51,6 +52,7 @@
+
--=20
2.17.0
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list