[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen stable-4.16] tools/libxl: Replace deprecated -soundhw on QEMU command line



commit e85e2a3c17b6cd38de041cdaf14d9efdcdabad1a
Author:     Anthony PERARD <anthony.perard@xxxxxxxxxx>
AuthorDate: Tue Oct 11 14:59:10 2022 +0200
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Tue Oct 11 14:59:10 2022 +0200

    tools/libxl: Replace deprecated -soundhw on QEMU command line
    
    -soundhw is deprecated since 825ff02911c9 ("audio: add soundhw
    deprecation notice"), QEMU v5.1, and is been remove for upcoming v7.1
    by 039a68373c45 ("introduce -audio as a replacement for -soundhw").
    
    Instead we can just add the sound card with "-device", for most option
    that "-soundhw" could handle. "-device" is an option that existed
    before QEMU 1.0, and could already be used to add audio hardware.
    
    The list of possible option for libxl's "soundhw" is taken the list
    from QEMU 7.0.
    
    The list of options for "soundhw" are listed in order of preference in
    the manual. The first three (hda, ac97, es1370) are PCI devices and
    easy to test on Linux, and the last four are ISA devices which doesn't
    seems to work out of the box on linux.
    
    The sound card 'pcspk' isn't listed even if it used to be accepted by
    '-soundhw' because QEMU crash when trying to add it to a Xen domain.
    Also, it wouldn't work with "-device" might need to be "-machine
    pcspk-audiodev=default" instead.
    
    Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
    Reviewed-by: Jason Andryuk <jandryuk@xxxxxxxxx>
    master commit: 62ca138c2c052187783aca3957d3f47c4dcfd683
    master date: 2022-08-18 09:25:50 +0200
---
 docs/man/xl.cfg.5.pod.in                  |  6 +++---
 tools/libs/light/libxl_dm.c               | 19 ++++++++++++++++++-
 tools/libs/light/libxl_types_internal.idl | 10 ++++++++++
 3 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index eda1e77ebd..ab7541f22c 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -2545,9 +2545,9 @@ The form serial=DEVICE is also accepted for backwards 
compatibility.
 
 =item B<soundhw="DEVICE">
 
-Select the virtual sound card to expose to the guest. The valid
-devices are defined by the device model configuration, please see the
-B<qemu(1)> manpage for details. The default is not to export any sound
+Select the virtual sound card to expose to the guest. The valid devices are
+B<hda>, B<ac97>, B<es1370>, B<adlib>, B<cs4231a>, B<gus>, B<sb16> if there are
+available with the device model QEMU. The default is not to export any sound
 device.
 
 =item B<vkb_device=BOOLEAN>
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 04bf5d8563..fc264a3a13 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -1204,6 +1204,7 @@ static int libxl__build_device_model_args_new(libxl__gc 
*gc,
     uint64_t ram_size;
     const char *path, *chardev;
     bool is_stubdom = libxl_defbool_val(b_info->device_model_stubdomain);
+    int rc;
 
     dm_args = flexarray_make(gc, 16, 1);
     dm_envs = flexarray_make(gc, 16, 1);
@@ -1531,7 +1532,23 @@ static int libxl__build_device_model_args_new(libxl__gc 
*gc,
             }
         }
         if (b_info->u.hvm.soundhw) {
-            flexarray_vappend(dm_args, "-soundhw", b_info->u.hvm.soundhw, 
NULL);
+            libxl__qemu_soundhw soundhw;
+
+            rc = libxl__qemu_soundhw_from_string(b_info->u.hvm.soundhw, 
&soundhw);
+            if (rc) {
+                LOGD(ERROR, guest_domid, "Unknown soundhw option '%s'", 
b_info->u.hvm.soundhw);
+                return ERROR_INVAL;
+            }
+
+            switch (soundhw) {
+            case LIBXL__QEMU_SOUNDHW_HDA:
+                flexarray_vappend(dm_args, "-device", "intel-hda",
+                                  "-device", "hda-duplex", NULL);
+                break;
+            default:
+                flexarray_append_pair(dm_args, "-device",
+                                      
(char*)libxl__qemu_soundhw_to_string(soundhw));
+            }
         }
         if (!libxl__acpi_defbool_val(b_info)) {
             flexarray_append(dm_args, "-no-acpi");
diff --git a/tools/libs/light/libxl_types_internal.idl 
b/tools/libs/light/libxl_types_internal.idl
index 3593e21dbb..caa08d3229 100644
--- a/tools/libs/light/libxl_types_internal.idl
+++ b/tools/libs/light/libxl_types_internal.idl
@@ -55,3 +55,13 @@ libxl__device_action = Enumeration("device_action", [
     (1, "ADD"),
     (2, "REMOVE"),
     ])
+
+libxl__qemu_soundhw = Enumeration("qemu_soundhw", [
+    (1, "ac97"),
+    (2, "adlib"),
+    (3, "cs4231a"),
+    (4, "es1370"),
+    (5, "gus"),
+    (6, "hda"),
+    (7, "sb16"),
+    ])
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.16



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.