From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459422; cv=none; d=zohomail.com; s=zohoarc; b=PsBtU32l0cdUez/1PtQEMUgWI9D30cWIkdKj4BpCQNlbj02P7GuAfgD3H2djJaFTmWPFSlWF92AvklDVRP2JejQuAonvKR6G2vAxrKFur/QWavXk6dsJxzQdMR0gxATybQ54fPRCFJMUvfnbqhUZ9ZTg6aODvudhS4o3C4EJvEU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459422; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qBvt2Gw3G8Y3LRY3RDznSS56C94nCSjSXLWo+8OcDwA=; b=Px2SzosSqkuzJLNps+G6JwkyFPdbBnAJsMuHiit2jUTFtBQ1TWFnzLRIQRtVAiI1Ja0mw43onefqfsWn/zRaMF/3zNITUbbfL/MibaM8B6DPniBuu1p9gBwM6WefJybWBrGwDFRrMS5/dB0Xm7QTbqT7LYDtu/p9zriQcljFilI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459422487729.4017638059253; Sat, 23 Sep 2023 01:57:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQ4-0002ll-67; Sat, 23 Sep 2023 04:55:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ2-0002kr-OD for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ0-0000VE-3N for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:18 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-627-DbFyomNvMYaSHTkuOiRoew-1; Sat, 23 Sep 2023 04:55:13 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-405334b0873so24601805e9.0 for ; Sat, 23 Sep 2023 01:55:13 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id s9-20020a05600c45c900b0040550c20cbcsm1688927wmo.24.2023.09.23.01.55.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459314; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qBvt2Gw3G8Y3LRY3RDznSS56C94nCSjSXLWo+8OcDwA=; b=Ggu16NstSzMhmTjV1zBVjwxbmT/updLb0AoQPkiMo6YhqkPUuKmuT4+ul/Idh409Qf7XVj pjXliEEoe+XLSRB9p4wRNrfsO1uXvQ/oMoj/hG3200Z4UIs+miM2R37cXfEpZneo8tUuCH u+46C5PvEnq/3Qn7A0i+MQryRWkpvfE= X-MC-Unique: DbFyomNvMYaSHTkuOiRoew-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459311; x=1696064111; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qBvt2Gw3G8Y3LRY3RDznSS56C94nCSjSXLWo+8OcDwA=; b=qP4rz2xv/oO1Z/7q7p/XqJ2ENA4Xn0AXJ2FTs1L/pUrEMIFelV9QX7O+AiXkkmQ9rE 8YGFG6jX1KZkUgBg+pEzfCeZjXSRYuBlKrOTiCXM50b4v/+9Mg1CPyqJZ72qRikvx2Sa 64HPJ+L2DO7iShsxMUdKYSYBUGZGCYqobdaV7Nj8XIjTvPvGh7hmHE+VEFUjdBc5yvzJ r/Ml51uNkWnzXvkN6+SOstm4Pwpbo6mZ2cHxS4AdsDOnZThA89ggzOFVwAJNauQTf3EP lqJoO4Gf0JBqlYQOSKomzBQ6eeXJ+4FCXfIUSntZsNbT+NUEQ/COJ+6D9JSj7l1twmC3 w3IA== X-Gm-Message-State: AOJu0YweSB34SrrTYcVznmK5ZSHXZ86agZtwzQ6VkfncQKaVUfdH3+qs ZVV4p/mP8nC3o2urMCKwRL0s5nhIwIYkIJxgJ70Y7TsbWlkDLahkFWDEAO4he70nvCXWfSoA6Me QG0QuAXNCcrbtN+zapQSx5znYVhGu/0Fr6mOyoja203zRnt5YNAYNtcYaD3Hgn1W6028FwN2bfi U= X-Received: by 2002:a05:600c:ac6:b0:405:4a8c:d4f8 with SMTP id c6-20020a05600c0ac600b004054a8cd4f8mr1243135wmr.30.1695459311439; Sat, 23 Sep 2023 01:55:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFYq7E28IFj4/dTjI6CFRvmaK70gOTyzm+yN4PAk4VG0ll44UZmqvFTsS53ELs7pkgq2nnNtQ== X-Received: by 2002:a05:600c:ac6:b0:405:4a8c:d4f8 with SMTP id c6-20020a05600c0ac600b004054a8cd4f8mr1243120wmr.30.1695459311040; Sat, 23 Sep 2023 01:55:11 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 01/13] ui/vnc: Require audiodev= to enable audio Date: Sat, 23 Sep 2023 10:54:54 +0200 Message-ID: <20230923085507.399260-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459424003100001 Content-Type: text/plain; charset="utf-8" From: Martin Kletzander Signed-off-by: Martin Kletzander Message-ID: Signed-off-by: Paolo Bonzini --- docs/about/deprecated.rst | 8 +++----- docs/about/removed-features.rst | 6 ++++++ ui/vnc.c | 10 ++++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 8f3fef97bd4..c07bf58dde1 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -45,13 +45,11 @@ backend settings instead of environment variables. To = ease migration to the new format, the ``-audiodev-help`` option can be used to convert the current values of the environment variables to ``-audiodev`` options. =20 -Creating sound card devices and vnc without ``audiodev=3D`` property (sinc= e 4.2) -''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''= '''' +Creating sound card devices without ``audiodev=3D`` property (since 4.2) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' =20 When not using the deprecated legacy audio config, each sound card -should specify an ``audiodev=3D`` property. Additionally, when using -vnc, you should specify an ``audiodev=3D`` property if you plan to -transmit audio through the VNC protocol. +should specify an ``audiodev=3D`` property. =20 Short-form boolean options (since 6.0) '''''''''''''''''''''''''''''''''''''' diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.= rst index 97ec47f1d25..276060b320c 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -436,6 +436,12 @@ the process listing. This was replaced by the new ``pa= ssword-secret`` option which lets the password be securely provided on the command line using a ``secret`` object instance. =20 +Creating vnc without ``audiodev=3D`` property (removed in 8.2) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +When using vnc, you should specify an ``audiodev=3D`` property if +you plan to transmit audio through the VNC protocol. + QEMU Machine Protocol (QMP) commands ------------------------------------ =20 diff --git a/ui/vnc.c b/ui/vnc.c index 6fd86996a54..cfa18bbd3e1 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -2508,11 +2508,17 @@ static int protocol_client_msg(VncState *vs, uint8_= t *data, size_t len) switch (read_u16 (data, 2)) { case VNC_MSG_CLIENT_QEMU_AUDIO_ENABLE: trace_vnc_msg_client_audio_enable(vs, vs->ioc); - audio_add(vs); + if (vs->vd->audio_state) { + audio_add(vs); + } else { + error_report("audio not available, use audiodev=3D opt= ion for vnc"); + } break; case VNC_MSG_CLIENT_QEMU_AUDIO_DISABLE: trace_vnc_msg_client_audio_disable(vs, vs->ioc); - audio_del(vs); + if (vs->vd->audio_state) { + audio_del(vs); + } break; case VNC_MSG_CLIENT_QEMU_AUDIO_SET_FORMAT: if (len =3D=3D 4) --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459419; cv=none; d=zohomail.com; s=zohoarc; b=hW1j1AcjVsidGfAzLYj04GukT9wRf6b4hEWujM/mVw8yd6CdCqw9lrsm8H0olsg3Q3N7jpY7r/sKpbhxypJKowgdq8eKGHYzoQVkPPO9K03Hmg1MNlFXlg6uV9zjfltw5HR7DsO2CZ9IiddS56NoU5sXUqsdcGntV/jkuCjFMW0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459419; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=1Y5mGHdIaoekDM3qGFpM3ZTJnw3h0Dxzfcg+kd3Bk5A=; b=FaiFoFE2rhVLE13y/8rX5svicSg028boKUZjMol7YvKLfR9FP5WEEo7d9a0SDJewKzdPT3KNt3NC1OKc9Gi9M9zEsbs9da7dvs9ZGX4L0136NPo2Tgqo/7loh8DZ7EQqSLHzEO8XQtz9IMJe+a9G9tZwtob0+Ef4oUQOzNRbrts= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459419013493.77988194674276; Sat, 23 Sep 2023 01:56:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQ5-0002lv-FK; Sat, 23 Sep 2023 04:55:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ4-0002lk-2p for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ2-0000Vv-Ml for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:19 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-302-tzfSQnI9N52sy61YYkXIYQ-1; Sat, 23 Sep 2023 04:55:15 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-313c930ee0eso2347118f8f.0 for ; Sat, 23 Sep 2023 01:55:14 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id k17-20020a5d66d1000000b0031759e6b43fsm6405634wrw.39.2023.09.23.01.55.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459318; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1Y5mGHdIaoekDM3qGFpM3ZTJnw3h0Dxzfcg+kd3Bk5A=; b=EeHFAtSyf0dOlYam3om+HbFTnzHRg8a7E6ADBcRD5VQIA70X93zVboYTnBARcXBhn6szuw C3WuM6kff6XwjreiU7lzvM3in3l5dveHSqR4yUhMstTr7a++1yrtOKJ8EN80vJaMOeTOBJ ntWzq54bJ0i83aW2QuY/nGm4mnCy0dM= X-MC-Unique: tzfSQnI9N52sy61YYkXIYQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459313; x=1696064113; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1Y5mGHdIaoekDM3qGFpM3ZTJnw3h0Dxzfcg+kd3Bk5A=; b=kygJQsdIPQDcmxAvrjrB19Hymer9q0tlsstWNiLk8tawuL0m8hfqgT1xRl0uOtR06V ENii9viG7RnGCXHbsCwGqSnhBJWMSEqH3OfDStkQYOvauSvuYeFCNT4Icf6v8R9yQ8Xq 3RY4JT50IOqPL4MzHzl25gvRc4h9NaMI8/dqUQxE3nDN/546KsgTenfF5v6Z5Lb+4Q9K DMssQ8INT28Wsqk6jaBxMq68qwK5MCBF4T38GQkf4XiHg9wt3MHNdjH6R4QW04nH1wzm 8vegc3m0M1H8YtXOn3+IqxRYn++mlMD4JzUUTouoR02HYNO3wDbdfVgyGY2lXzmz/s5r kcQQ== X-Gm-Message-State: AOJu0YyxcB1bOwskWio3zjZURBe5k9Xwet4dVTJz1h9TN/A0DOsh0FSI Z2fG2orK7KzamBAacjxJovpc/2ljlgMS1CqB4vPD4YEWDtxvQE7TEcINDoQHczGD7keFMYAw6MT lrqy+ZR3pLvEBJvo+fl1QzWVMzrBbemrzrNAX6UXCu17iZtuvh/JWxn0qS7Q9jBcx6ImqLWT7vl g= X-Received: by 2002:adf:e4ce:0:b0:321:6414:5869 with SMTP id v14-20020adfe4ce000000b0032164145869mr1789121wrm.58.1695459313269; Sat, 23 Sep 2023 01:55:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG2o/qnoAC5EOjNETw0YhDPOd9BIMm6givj3Xq4V2lOXDeGWxXCmCSvuhsWuPA8WWLJf3cpdw== X-Received: by 2002:adf:e4ce:0:b0:321:6414:5869 with SMTP id v14-20020adfe4ce000000b0032164145869mr1789108wrm.58.1695459313007; Sat, 23 Sep 2023 01:55:13 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 02/13] audio: Require AudioState in AUD_add_capture Date: Sat, 23 Sep 2023 10:54:55 +0200 Message-ID: <20230923085507.399260-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459420405100001 Content-Type: text/plain; charset="utf-8" From: Martin Kletzander Since all callers require a valid audiodev this function can now safely abort in case of missing AudioState. Signed-off-by: Martin Kletzander Message-ID: Signed-off-by: Paolo Bonzini --- audio/audio.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 90c7c49d116..42bfa330146 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1876,10 +1876,9 @@ CaptureVoiceOut *AUD_add_capture( struct capture_callback *cb; =20 if (!s) { - if (!legacy_config) { - dolog("Capturing without setting an audiodev is deprecated\n"); - } - s =3D audio_init(NULL, NULL); + error_setg(&error_abort, + "Capturing without setting an audiodev is not supported= "); + abort(); } =20 if (!audio_get_pdo_out(s->dev)->mixing_engine) { --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459385; cv=none; d=zohomail.com; s=zohoarc; b=TG1+WdkccPeeB0mBckK0AXbAzaiDCJO2JTDX9+kPYradUT8LEG/HmP7SNmFylfKZJKKIyMkVkwqiREkFvsIcCx5VsVwcAPwQo5VlVRbx+KnUDJiysPAsfFe3//WyHP68A6fjWpsYaH74+1xTT2wMsIv3xSXa+vqCHVtkQAVXPac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459385; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Acp+tgJMHUhlLYoYfFVMWkTgbDJxrP7dbvGfTMd2E3w=; b=m2ked34FCt8HUeBgtmFc8wu3l7zEPD5swFeS4T0pDbqc8pZLbNd5y1X2TzZruA6hoR7whyhef+xUyht7kJ6o37czBw6BdP4sPeW0NGuM/pCykzanPyKor284ZhOvsbVBarofe9U6SG0QenPJfv/ipXjXHMl1VDEpUIcujxH+yEs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459385465183.20491861454843; Sat, 23 Sep 2023 01:56:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQ8-0002mi-4E; Sat, 23 Sep 2023 04:55:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ6-0002mF-PR for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ4-0000WJ-9K for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:22 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-294-ANHLbVlgMEynrn8tFRihMA-1; Sat, 23 Sep 2023 04:55:17 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-31ffa4da0f5so2333485f8f.1 for ; Sat, 23 Sep 2023 01:55:17 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id n11-20020a5d4c4b000000b0031fbbe347ebsm6377749wrt.22.2023.09.23.01.55.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459319; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Acp+tgJMHUhlLYoYfFVMWkTgbDJxrP7dbvGfTMd2E3w=; b=MPeh5DUczbvCFr3pRx/UIO8MQl2RKaMNNAIUoOPYHKVGe93vnWN20QR7j2IkAzdI+q4XgW dbp86RImWQe0fUkfCBrm/F1u3CrXEQu8s+Ledppyx/JbifoTM7ZwH7AocidjVn9W4oWBKq B/npTpvlNyZnMWuIDHWM61lVhtN5doM= X-MC-Unique: ANHLbVlgMEynrn8tFRihMA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459315; x=1696064115; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Acp+tgJMHUhlLYoYfFVMWkTgbDJxrP7dbvGfTMd2E3w=; b=ocwVBdSq9RrqZ1B3D07QKIb9CMeNVaBmoRxLY+QXx0n+6ECEmunnm0HQFXKCK9gcn3 bTcXLjhjmzO7z3r1Gn3UpOPEuqa1CAhjet9isSJTQqET3xA0pdHQxU/zuzi55J+jIOl/ SkY7YG18l8Ovvr1gVprkUN2GNLuYyOd5gIIfrHCDhX6YPR2HWmTVOxWIzYVs3dvb+BZf /5X3uXNn6bvlowdd1J1vmFkFQCFFIqtMlXgiPdf/Olx+ZTEA0reWZDdK86iJ3hx2TSFl OMeMQHePFPJRtmJDuloZKwV0slGGUcETXs2HNp5i/C264TvqrNCHmzHP1W/2+XByAVyt CPtQ== X-Gm-Message-State: AOJu0Yy8JgwHH9enSIdwFjXHnDph97ehhzuRalJx/Q4YySlZZm6LoHEo pHdk0n737VM8TwoMJx2Ddjd4VmU7p9a57dp9xBhvhQk/tbwitv5HCaU2STS0LgDoWXHNDMr1Hv8 EKdAB5KaH/7E4ArO7w40G4UYjdob9d49NhtDKu0drbwEWMnkdiVU8hPxlvEZ8E5K5dmIwvSvgvU s= X-Received: by 2002:a5d:4390:0:b0:31f:f432:b541 with SMTP id i16-20020a5d4390000000b0031ff432b541mr1544569wrq.69.1695459315275; Sat, 23 Sep 2023 01:55:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH+ut4jT3TyKg6DbFWRQEQtApDrQlr2MgJd2cEUCuXf+5ba4loz1eAfHJ0frvremHTZT7975w== X-Received: by 2002:a5d:4390:0:b0:31f:f432:b541 with SMTP id i16-20020a5d4390000000b0031ff432b541mr1544550wrq.69.1695459314813; Sat, 23 Sep 2023 01:55:14 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 03/13] audio: allow returning an error from the driver init Date: Sat, 23 Sep 2023 10:54:56 +0200 Message-ID: <20230923085507.399260-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459387691100023 Content-Type: text/plain; charset="utf-8" An error is already printed by audio_driver_init, but we can make it more precise if the driver can return an Error *. Signed-off-by: Paolo Bonzini --- audio/alsaaudio.c | 2 +- audio/audio.c | 11 +++++++++-- audio/audio_int.h | 2 +- audio/coreaudio.m | 2 +- audio/dbusaudio.c | 2 +- audio/dsoundaudio.c | 2 +- audio/jackaudio.c | 2 +- audio/noaudio.c | 2 +- audio/ossaudio.c | 11 ++++++++--- audio/paaudio.c | 7 +++++-- audio/pwaudio.c | 16 +++++++++------- audio/sdlaudio.c | 5 +++-- audio/sndioaudio.c | 2 +- audio/spiceaudio.c | 5 ++++- audio/wavaudio.c | 2 +- 15 files changed, 47 insertions(+), 26 deletions(-) diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c index 057571dd1e0..6fb78e5b972 100644 --- a/audio/alsaaudio.c +++ b/audio/alsaaudio.c @@ -904,7 +904,7 @@ static void alsa_init_per_direction(AudiodevAlsaPerDire= ctionOptions *apdo) } } =20 -static void *alsa_audio_init(Audiodev *dev) +static void *alsa_audio_init(Audiodev *dev, Error **errp) { AudiodevAlsaOptions *aopts; assert(dev->driver =3D=3D AUDIODEV_DRIVER_ALSA); diff --git a/audio/audio.c b/audio/audio.c index 42bfa330146..a8e6634dcb7 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -33,6 +33,7 @@ #include "qapi/qapi-visit-audio.h" #include "qapi/qapi-commands-audio.h" #include "qemu/cutils.h" +#include "qemu/error-report.h" #include "qemu/log.h" #include "qemu/module.h" #include "qemu/help_option.h" @@ -1555,7 +1556,9 @@ size_t audio_generic_read(HWVoiceIn *hw, void *buf, s= ize_t size) static int audio_driver_init(AudioState *s, struct audio_driver *drv, bool msg, Audiodev *dev) { - s->drv_opaque =3D drv->init(dev); + Error *local_err =3D NULL; + + s->drv_opaque =3D drv->init(dev, &local_err); =20 if (s->drv_opaque) { if (!drv->pcm_ops->get_buffer_in) { @@ -1573,7 +1576,11 @@ static int audio_driver_init(AudioState *s, struct a= udio_driver *drv, return 0; } else { if (msg) { - dolog("Could not init `%s' audio driver\n", drv->name); + if (local_err) { + error_report_err(local_err); + } else { + error_report("Could not init `%s' audio driver", drv->name= ); + } } return -1; } diff --git a/audio/audio_int.h b/audio/audio_int.h index e57ff50155a..06e815de9f6 100644 --- a/audio/audio_int.h +++ b/audio/audio_int.h @@ -140,7 +140,7 @@ typedef struct audio_driver audio_driver; struct audio_driver { const char *name; const char *descr; - void *(*init) (Audiodev *); + void *(*init) (Audiodev *, Error **); void (*fini) (void *); #ifdef CONFIG_GIO void (*set_dbus_server) (AudioState *s, GDBusObjectManagerServer *mana= ger, bool p2p); diff --git a/audio/coreaudio.m b/audio/coreaudio.m index 4695291621a..7cfb38fb6ae 100644 --- a/audio/coreaudio.m +++ b/audio/coreaudio.m @@ -644,7 +644,7 @@ static void coreaudio_enable_out(HWVoiceOut *hw, bool e= nable) update_device_playback_state(core); } =20 -static void *coreaudio_audio_init(Audiodev *dev) +static void *coreaudio_audio_init(Audiodev *dev, Error **errp) { return dev; } diff --git a/audio/dbusaudio.c b/audio/dbusaudio.c index 7a11fbfb420..310ca997ff4 100644 --- a/audio/dbusaudio.c +++ b/audio/dbusaudio.c @@ -395,7 +395,7 @@ dbus_enable_in(HWVoiceIn *hw, bool enable) } =20 static void * -dbus_audio_init(Audiodev *dev) +dbus_audio_init(Audiodev *dev, Error **errp) { DBusAudio *da =3D g_new0(DBusAudio, 1); =20 diff --git a/audio/dsoundaudio.c b/audio/dsoundaudio.c index 3fb67ec3eed..eefde88edcb 100644 --- a/audio/dsoundaudio.c +++ b/audio/dsoundaudio.c @@ -619,7 +619,7 @@ static void dsound_audio_fini (void *opaque) g_free(s); } =20 -static void *dsound_audio_init(Audiodev *dev) +static void *dsound_audio_init(Audiodev *dev, Error **errp) { int err; HRESULT hr; diff --git a/audio/jackaudio.c b/audio/jackaudio.c index 5bdf3d7a78d..bfb0297f34d 100644 --- a/audio/jackaudio.c +++ b/audio/jackaudio.c @@ -638,7 +638,7 @@ static int qjack_thread_creator(jack_native_thread_t *t= hread, } #endif =20 -static void *qjack_init(Audiodev *dev) +static void *qjack_init(Audiodev *dev, Error **errp) { assert(dev->driver =3D=3D AUDIODEV_DRIVER_JACK); return dev; diff --git a/audio/noaudio.c b/audio/noaudio.c index 4fdee5adecf..a36bfeffd14 100644 --- a/audio/noaudio.c +++ b/audio/noaudio.c @@ -104,7 +104,7 @@ static void no_enable_in(HWVoiceIn *hw, bool enable) } } =20 -static void *no_audio_init(Audiodev *dev) +static void *no_audio_init(Audiodev *dev, Error **errp) { return &no_audio_init; } diff --git a/audio/ossaudio.c b/audio/ossaudio.c index e8d732b612c..ec4448d573d 100644 --- a/audio/ossaudio.c +++ b/audio/ossaudio.c @@ -28,6 +28,7 @@ #include "qemu/main-loop.h" #include "qemu/module.h" #include "qemu/host-utils.h" +#include "qapi/error.h" #include "audio.h" #include "trace.h" =20 @@ -736,7 +737,7 @@ static void oss_init_per_direction(AudiodevOssPerDirect= ionOptions *opdo) } } =20 -static void *oss_audio_init(Audiodev *dev) +static void *oss_audio_init(Audiodev *dev, Error **errp) { AudiodevOssOptions *oopts; assert(dev->driver =3D=3D AUDIODEV_DRIVER_OSS); @@ -745,8 +746,12 @@ static void *oss_audio_init(Audiodev *dev) oss_init_per_direction(oopts->in); oss_init_per_direction(oopts->out); =20 - if (access(oopts->in->dev ?: "/dev/dsp", R_OK | W_OK) < 0 || - access(oopts->out->dev ?: "/dev/dsp", R_OK | W_OK) < 0) { + if (access(oopts->in->dev ?: "/dev/dsp", R_OK | W_OK) < 0) { + error_setg_errno(errp, errno, "%s not accessible", oopts->in->dev = ?: "/dev/dsp"); + return NULL; + } + if (access(oopts->out->dev ?: "/dev/dsp", R_OK | W_OK) < 0) { + error_setg_errno(errp, errno, "%s not accessible", oopts->out->dev= ?: "/dev/dsp"); return NULL; } return dev; diff --git a/audio/paaudio.c b/audio/paaudio.c index 529b39daacc..39bd6cfa38a 100644 --- a/audio/paaudio.c +++ b/audio/paaudio.c @@ -3,7 +3,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "audio.h" -#include "qapi/opts-visitor.h" +#include "qapi/error.h" =20 #include =20 @@ -818,7 +818,7 @@ fail: return NULL; } =20 -static void *qpa_audio_init(Audiodev *dev) +static void *qpa_audio_init(Audiodev *dev, Error **errp) { paaudio *g; AudiodevPaOptions *popts =3D &dev->u.pa; @@ -834,10 +834,12 @@ static void *qpa_audio_init(Audiodev *dev) =20 runtime =3D getenv("XDG_RUNTIME_DIR"); if (!runtime) { + error_setg(errp, "XDG_RUNTIME_DIR not set"); return NULL; } snprintf(pidfile, sizeof(pidfile), "%s/pulse/pid", runtime); if (stat(pidfile, &st) !=3D 0) { + error_setg_errno(errp, errno, "could not stat pidfile %s", pid= file); return NULL; } } @@ -867,6 +869,7 @@ static void *qpa_audio_init(Audiodev *dev) } if (!g->conn) { g_free(g); + error_setg(errp, "could not connect to PulseAudio server"); return NULL; } =20 diff --git a/audio/pwaudio.c b/audio/pwaudio.c index b6a38738ee9..1020cb11df1 100644 --- a/audio/pwaudio.c +++ b/audio/pwaudio.c @@ -13,6 +13,7 @@ #include "audio.h" #include #include "qemu/error-report.h" +#include "qapi/error.h" #include #include #include @@ -736,7 +737,7 @@ static const struct pw_core_events core_events =3D { }; =20 static void * -qpw_audio_init(Audiodev *dev) +qpw_audio_init(Audiodev *dev, Error **errp) { g_autofree pwaudio *pw =3D g_new0(pwaudio, 1); =20 @@ -748,19 +749,19 @@ qpw_audio_init(Audiodev *dev) pw->dev =3D dev; pw->thread_loop =3D pw_thread_loop_new("PipeWire thread loop", NULL); if (pw->thread_loop =3D=3D NULL) { - error_report("Could not create PipeWire loop: %s", g_strerror(errn= o)); + error_setg_errno(errp, errno, "Could not create PipeWire loop"); goto fail; } =20 pw->context =3D pw_context_new(pw_thread_loop_get_loop(pw->thread_loop), NULL, 0); if (pw->context =3D=3D NULL) { - error_report("Could not create PipeWire context: %s", g_strerror(e= rrno)); + error_setg_errno(errp, errno, "Could not create PipeWire context"); goto fail; } =20 if (pw_thread_loop_start(pw->thread_loop) < 0) { - error_report("Could not start PipeWire loop: %s", g_strerror(errno= )); + error_setg_errno(errp, errno, "Could not start PipeWire loop"); goto fail; } =20 @@ -769,13 +770,13 @@ qpw_audio_init(Audiodev *dev) pw->core =3D pw_context_connect(pw->context, NULL, 0); if (pw->core =3D=3D NULL) { pw_thread_loop_unlock(pw->thread_loop); - goto fail; + goto fail_error; } =20 if (pw_core_add_listener(pw->core, &pw->core_listener, &core_events, pw) < 0) { pw_thread_loop_unlock(pw->thread_loop); - goto fail; + goto fail_error; } if (wait_resync(pw) < 0) { pw_thread_loop_unlock(pw->thread_loop); @@ -785,8 +786,9 @@ qpw_audio_init(Audiodev *dev) =20 return g_steal_pointer(&pw); =20 +fail_error: + error_setg(errp, "Failed to initialize PW context"); fail: - AUD_log(AUDIO_CAP, "Failed to initialize PW context"); if (pw->thread_loop) { pw_thread_loop_stop(pw->thread_loop); } diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c index 68a237b76b4..4d8473d9ece 100644 --- a/audio/sdlaudio.c +++ b/audio/sdlaudio.c @@ -26,6 +26,7 @@ #include #include #include "qemu/module.h" +#include "qapi/error.h" #include "audio.h" =20 #ifndef _WIN32 @@ -449,10 +450,10 @@ static void sdl_enable_in(HWVoiceIn *hw, bool enable) SDL_PauseAudioDevice(sdl->devid, !enable); } =20 -static void *sdl_audio_init(Audiodev *dev) +static void *sdl_audio_init(Audiodev *dev, Error **errp) { if (SDL_InitSubSystem (SDL_INIT_AUDIO)) { - sdl_logerr ("SDL failed to initialize audio subsystem\n"); + error_setg(errp, "SDL failed to initialize audio subsystem"); return NULL; } =20 diff --git a/audio/sndioaudio.c b/audio/sndioaudio.c index 3fde01fdbd5..1e35925a497 100644 --- a/audio/sndioaudio.c +++ b/audio/sndioaudio.c @@ -518,7 +518,7 @@ static void sndio_fini_in(HWVoiceIn *hw) sndio_fini(self); } =20 -static void *sndio_audio_init(Audiodev *dev) +static void *sndio_audio_init(Audiodev *dev, Error **errp) { assert(dev->driver =3D=3D AUDIODEV_DRIVER_SNDIO); return dev; diff --git a/audio/spiceaudio.c b/audio/spiceaudio.c index d17ef1a25ef..7f02f7285cf 100644 --- a/audio/spiceaudio.c +++ b/audio/spiceaudio.c @@ -22,6 +22,7 @@ #include "qemu/module.h" #include "qemu/error-report.h" #include "qemu/timer.h" +#include "qapi/error.h" #include "ui/qemu-spice.h" =20 #define AUDIO_CAP "spice" @@ -71,11 +72,13 @@ static const SpiceRecordInterface record_sif =3D { .base.minor_version =3D SPICE_INTERFACE_RECORD_MINOR, }; =20 -static void *spice_audio_init(Audiodev *dev) +static void *spice_audio_init(Audiodev *dev, Error **errp) { if (!using_spice) { + error_setg(errp, "Cannot use spice audio without -spice"); return NULL; } + return &spice_audio_init; } =20 diff --git a/audio/wavaudio.c b/audio/wavaudio.c index 6445a2cb90c..26b03906d59 100644 --- a/audio/wavaudio.c +++ b/audio/wavaudio.c @@ -182,7 +182,7 @@ static void wav_enable_out(HWVoiceOut *hw, bool enable) } } =20 -static void *wav_audio_init(Audiodev *dev) +static void *wav_audio_init(Audiodev *dev, Error **errp) { assert(dev->driver =3D=3D AUDIODEV_DRIVER_WAV); return dev; --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459384; cv=none; d=zohomail.com; s=zohoarc; b=iyMKCzke3fwxwv77KJZiNM8m9MEGUq71Fd02YujlYwmPSJHoGB4Jl46945KQF/RzF9vo6ywtA2b7S8ph41L/JYr6L+h+qmKcWMW8Ac44/QxMN0wmKW1teIvATvQnmoyZowwT1Zl45eRYInvDWGi3tIuNIxTOBXQ0vH/J1UFSfkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459384; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CzfMT4s+Dn3jAVDKcdnixW6BOF9MbE6OBWN8bbT52vU=; b=Hx2lk3RDX9ydMBBuW+r7xtSfpiWkYpDlLqlqzL4X05FDxNRumzTyDySuHYsNm2Qk1BoPHRo6kwMYjXncOW6kd9ajpY4TolUG7WnXOmkIHPrP00m93wUIweyKah1hZn8bLtpygDgDtAIOVLj+UN1rStFKh72u6eLdB0ZOPNRS9ZQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459384404883.6098829728146; Sat, 23 Sep 2023 01:56:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQ9-0002nW-5L; Sat, 23 Sep 2023 04:55:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ8-0002mg-0B for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ6-0000Wb-C2 for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:23 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-131-WjCMJ4BOOCuqpGC6-5V0NA-1; Sat, 23 Sep 2023 04:55:19 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-32009388bb6so2283334f8f.1 for ; Sat, 23 Sep 2023 01:55:19 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id c10-20020a5d4f0a000000b0031f3ad17b2csm6440716wru.52.2023.09.23.01.55.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459321; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CzfMT4s+Dn3jAVDKcdnixW6BOF9MbE6OBWN8bbT52vU=; b=RSgyOwgYx5lt023U4PEUmgBmc9TgRybYrTJiD8n8B/nUJ264yEo/VA1mC6nnoQZ/FwLIZH SFcXfNpG24W82Bsb9PRZdpkqE0sRlx6rQHN/gkkp0hI5VVS3rehiKWZAeG6lHpNRGrtDPQ 4a7rUs1oU+JGCVmKyR6RwfnLxiS0Gc4= X-MC-Unique: WjCMJ4BOOCuqpGC6-5V0NA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459318; x=1696064118; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CzfMT4s+Dn3jAVDKcdnixW6BOF9MbE6OBWN8bbT52vU=; b=P9j/YNLS+/JeyINZb2bLNx+tTIrL+V6sJWI6I+rb3hb5WrSSyATCGmSfxHK6RuUTh0 RSfmoDhbrOhqhfx9Hp5SsJU3DU4Qmc9QMhrAdnLViWlDy/OpmT8ORJTcxuniIIrEcLgG 6hMrG/zqVVaD7okR6pVkaKR58yZmJhtJMMq9qVLz1yqZcK5zOaAgyHszpsqhHl2rQdnq w4afMFd6i5yVhh7SnzkxubK9NZF4s0Unc9qof656nho/EFZJSBMAx1TmHyMLrzHj2qVh eOzIUJDCK6Oo4XbiEhL7ePISRLckAsPxQfaxGwRe8ukUDrvY+x/1bSUrp4irJUXJoxzn ZIXQ== X-Gm-Message-State: AOJu0YxKXU4dUum01YP+jVWVV7Vg9b1bwUfFQtbSIaz6hwby4UEauxMT L8zJbFMNyjrlzSxZ9jO0W3kMaNfKyJUmq51y4USEvR/ywN6rcvv8h7xUuPm3WxYowyNz/+OmPqR OaAP5WWFiLZvzklbTAxzvofcxqsUC5ciMgJ1RA7hsMVoo40mYnDjKaF4/bjEBfvMOP8IqN4s23Y k= X-Received: by 2002:adf:dec7:0:b0:31c:804b:5ec3 with SMTP id i7-20020adfdec7000000b0031c804b5ec3mr1498305wrn.67.1695459317908; Sat, 23 Sep 2023 01:55:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEf4LIAWY4DJoGXE4kmptqRIQoJD+wbCHToo10HhRHk5OQ8tRknkLH9Km+B2wJb2i2M4X9Wow== X-Received: by 2002:adf:dec7:0:b0:31c:804b:5ec3 with SMTP id i7-20020adfdec7000000b0031c804b5ec3mr1498294wrn.67.1695459317606; Sat, 23 Sep 2023 01:55:17 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 04/13] audio: return Error ** from audio_state_by_name Date: Sat, 23 Sep 2023 10:54:57 +0200 Message-ID: <20230923085507.399260-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459385558100004 Content-Type: text/plain; charset="utf-8" Remove duplicate error formatting code. Signed-off-by: Paolo Bonzini --- audio/audio-hmp-cmds.c | 6 ++++-- audio/audio.c | 3 ++- audio/audio.h | 2 +- hw/core/qdev-properties-system.c | 16 ++++------------ ui/dbus.c | 3 +-- ui/vnc.c | 3 +-- 6 files changed, 13 insertions(+), 20 deletions(-) diff --git a/audio/audio-hmp-cmds.c b/audio/audio-hmp-cmds.c index 1237ce9e750..c9608b715b8 100644 --- a/audio/audio-hmp-cmds.c +++ b/audio/audio-hmp-cmds.c @@ -26,6 +26,7 @@ #include "audio/audio.h" #include "monitor/hmp.h" #include "monitor/monitor.h" +#include "qapi/error.h" #include "qapi/qmp/qdict.h" =20 static QLIST_HEAD (capture_list_head, CaptureState) capture_head; @@ -65,10 +66,11 @@ void hmp_wavcapture(Monitor *mon, const QDict *qdict) int nchannels =3D qdict_get_try_int(qdict, "nchannels", 2); const char *audiodev =3D qdict_get_str(qdict, "audiodev"); CaptureState *s; - AudioState *as =3D audio_state_by_name(audiodev); + Error *local_err =3D NULL; + AudioState *as =3D audio_state_by_name(audiodev, &local_err); =20 if (!as) { - monitor_printf(mon, "Audiodev '%s' not found\n", audiodev); + error_report_err(local_err); return; } =20 diff --git a/audio/audio.c b/audio/audio.c index a8e6634dcb7..d0444babeb4 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -2262,7 +2262,7 @@ int audio_buffer_bytes(AudiodevPerDirectionOptions *p= do, audioformat_bytes_per_sample(as->fmt); } =20 -AudioState *audio_state_by_name(const char *name) +AudioState *audio_state_by_name(const char *name, Error **errp) { AudioState *s; QTAILQ_FOREACH(s, &audio_states, list) { @@ -2271,6 +2271,7 @@ AudioState *audio_state_by_name(const char *name) return s; } } + error_setg(errp, "audiodev '%s' not found", name); return NULL; } =20 diff --git a/audio/audio.h b/audio/audio.h index 01bdc567fb1..e0c13b5dcdf 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -174,7 +174,7 @@ bool audio_init_audiodevs(void); void audio_help(void); void audio_legacy_help(void); =20 -AudioState *audio_state_by_name(const char *name); +AudioState *audio_state_by_name(const char *name, Error **errp); const char *audio_get_id(QEMUSoundCard *card); =20 #define DEFINE_AUDIO_PROPERTIES(_s, _f) \ diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index 6d5d43eda22..451755b41db 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -480,24 +480,16 @@ static void set_audiodev(Object *obj, Visitor *v, con= st char* name, Property *prop =3D opaque; QEMUSoundCard *card =3D object_field_prop_ptr(obj, prop); AudioState *state; - int err =3D 0; - char *str; + g_autofree char *str =3D NULL; =20 if (!visit_type_str(v, name, &str, errp)) { return; } =20 - state =3D audio_state_by_name(str); - - if (!state) { - err =3D -ENOENT; - goto out; + state =3D audio_state_by_name(str, errp); + if (state) { + card->state =3D state; } - card->state =3D state; - -out: - error_set_from_qdev_prop_error(errp, err, obj, name, str); - g_free(str); } =20 const PropertyInfo qdev_prop_audiodev =3D { diff --git a/ui/dbus.c b/ui/dbus.c index 32f1bbe81ae..866467ad2e3 100644 --- a/ui/dbus.c +++ b/ui/dbus.c @@ -220,9 +220,8 @@ dbus_display_complete(UserCreatable *uc, Error **errp) } =20 if (dd->audiodev && *dd->audiodev) { - AudioState *audio_state =3D audio_state_by_name(dd->audiodev); + AudioState *audio_state =3D audio_state_by_name(dd->audiodev, errp= ); if (!audio_state) { - error_setg(errp, "Audiodev '%s' not found", dd->audiodev); return; } if (!g_str_equal(audio_state->drv->name, "dbus")) { diff --git a/ui/vnc.c b/ui/vnc.c index cfa18bbd3e1..f745a15ddd9 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -4178,9 +4178,8 @@ void vnc_display_open(const char *id, Error **errp) =20 audiodev =3D qemu_opt_get(opts, "audiodev"); if (audiodev) { - vd->audio_state =3D audio_state_by_name(audiodev); + vd->audio_state =3D audio_state_by_name(audiodev, errp); if (!vd->audio_state) { - error_setg(errp, "Audiodev '%s' not found", audiodev); goto fail; } } --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459430; cv=none; d=zohomail.com; s=zohoarc; b=Viyt+5onqLZC4UXT75Jz2X091sJ7rKNo9Jo6UW8SosMwdMDB1A2gTo+16XpKWINP4jtTZVjWk6gGA6TpQtgVWghwMNHd+v0jS2iNEEK1MupuB90Zqw+li4i/1sbwx4TXe+kLRaZpK62GZHOZzxNvXP1vqe8fQhSc87o3IWqPAWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459430; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=q/Se0iJLKPwuxIx8NOnYihWcL7xSavek2aBsvZGR54U=; b=dj8Dl6FyyXscET4xTZCSS8qZifl9sQhhpPft6N9dz1EVCX9IoC3m02WMtVdTiNDPZJSW0PBgYLvUElZbLDjk2n0DC+u3/n1cnt+o+SaTZgvdbNHls0cfbWyjbAQQrEzfjyklCqMBm7RTDGw+yMO6yj0CYZMQaqR7WxBv/QVOQhU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459430885724.8147464330572; Sat, 23 Sep 2023 01:57:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQA-0002oi-Lb; Sat, 23 Sep 2023 04:55:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ9-0002nY-8q for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ7-0000Wu-Pt for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:25 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-386-WkKw5uHJMWyjekyotTmmhw-1; Sat, 23 Sep 2023 04:55:21 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-405629826ccso2998305e9.0 for ; Sat, 23 Sep 2023 01:55:21 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id r10-20020adff10a000000b0031c7682607asm6412780wro.111.2023.09.23.01.55.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459323; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=q/Se0iJLKPwuxIx8NOnYihWcL7xSavek2aBsvZGR54U=; b=CZKZNNtFXxx2YHoULC7Ycq2DpGemaZeF8iX5xwgJX4IrCjaRB4IbTMKwwgG4XIQpOm7AwX m3AnqY4Jii8sYsGa7GtwAYKyC1oe5UX7KJeYcymVI3VwFUJvK+Nnncol6tJkmrvb4ul3Vn DYbvEQx4T593/lWBtgGDAmBvXbCPTFg= X-MC-Unique: WkKw5uHJMWyjekyotTmmhw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459319; x=1696064119; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q/Se0iJLKPwuxIx8NOnYihWcL7xSavek2aBsvZGR54U=; b=DiPlLM5D/YhS4RTLCD9Cb3zxG+N6/bO30BvGwq4Zk2kyykqNvAujBaqbDO7cQmg0ib cLmYHQayuB5yz4CywvheZQrlTkWGjtOjRYy+Ow2UAC+XZdXTJGcHJBQSnGVix9V4/82v 5h33Jj17oUxusfb9RWE0mT1eYIYDhoXp+ynsPgHuz7JQTfnZYHQ6w7ga6egsNJYtPO2C 0J5diRLHKM5ooOavseRz0DUsZylkRSOmXWx8YMIi//pTcT6v56BdhenNSQ/YXXC/l2Jt HU6F9Q+I+5hjlniaRX75ROOI6hBkwTgjK707dQ1DjqN9+HyC52+Pe3/k4ytN1eMMyrtr TL/g== X-Gm-Message-State: AOJu0YzepDabZBGIA0WpAtWGxPynHn3QZlFRX8Vha7AgEN2xlCJvHkJA b63R1V81Lj+tt11mDROU1cbUzt6UZmUPucN6l9MH+tm7vf87o7iu6IhUxXyjGTYblR0WsYEJz/U rIW75+TMk7FG4JTRJIt/Eos7PEo2ZI/iMOJC/UnzjxTM3nveXQeGWTSV4SjXaaXUslVqPYOeHTF 0= X-Received: by 2002:a5d:6682:0:b0:31f:9838:dfc4 with SMTP id l2-20020a5d6682000000b0031f9838dfc4mr1584899wru.33.1695459319630; Sat, 23 Sep 2023 01:55:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHt6Vp1I8+3e1lPdE9sns9HXv9lbdLsx08bdYN8OHnlu4ZweoYauTy4UmAIUnPW+6wjyfcSbA== X-Received: by 2002:a5d:6682:0:b0:31f:9838:dfc4 with SMTP id l2-20020a5d6682000000b0031f9838dfc4mr1584888wru.33.1695459319339; Sat, 23 Sep 2023 01:55:19 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 05/13] audio: commonize voice initialization Date: Sat, 23 Sep 2023 10:54:58 +0200 Message-ID: <20230923085507.399260-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459432814100003 Content-Type: text/plain; charset="utf-8" Move some mostly irrelevant code out of audio_init. Signed-off-by: Paolo Bonzini --- audio/audio.c | 19 ++----------------- audio/audio_template.h | 9 ++++++++- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index d0444babeb4..70835a9ef28 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1570,8 +1570,8 @@ static int audio_driver_init(AudioState *s, struct au= dio_driver *drv, drv->pcm_ops->put_buffer_out =3D audio_generic_put_buffer_out; } =20 - audio_init_nb_voices_out(s, drv); - audio_init_nb_voices_in(s, drv); + audio_init_nb_voices_out(s, drv, 1); + audio_init_nb_voices_in(s, drv, 0); s->drv =3D drv; return 0; } else { @@ -1774,21 +1774,6 @@ static AudioState *audio_init(Audiodev *dev, const c= har *name) =20 s->ts =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, audio_timer, s); =20 - s->nb_hw_voices_out =3D audio_get_pdo_out(dev)->voices; - s->nb_hw_voices_in =3D audio_get_pdo_in(dev)->voices; - - if (s->nb_hw_voices_out < 1) { - dolog ("Bogus number of playback voices %d, setting to 1\n", - s->nb_hw_voices_out); - s->nb_hw_voices_out =3D 1; - } - - if (s->nb_hw_voices_in < 0) { - dolog ("Bogus number of capture voices %d, setting to 0\n", - s->nb_hw_voices_in); - s->nb_hw_voices_in =3D 0; - } - if (drvname) { driver =3D audio_driver_lookup(drvname); if (driver) { diff --git a/audio/audio_template.h b/audio/audio_template.h index dc0c74aa746..7ccfec01168 100644 --- a/audio/audio_template.h +++ b/audio/audio_template.h @@ -37,11 +37,12 @@ #endif =20 static void glue(audio_init_nb_voices_, TYPE)(AudioState *s, - struct audio_driver *drv) + struct audio_driver *drv, in= t min_voices) { int max_voices =3D glue (drv->max_voices_, TYPE); size_t voice_size =3D glue(drv->voice_size_, TYPE); =20 + glue (s->nb_hw_voices_, TYPE) =3D glue(audio_get_pdo_, TYPE)(s->dev)->= voices; if (glue (s->nb_hw_voices_, TYPE) > max_voices) { if (!max_voices) { #ifdef DAC @@ -56,6 +57,12 @@ static void glue(audio_init_nb_voices_, TYPE)(AudioState= *s, glue (s->nb_hw_voices_, TYPE) =3D max_voices; } =20 + if (glue (s->nb_hw_voices_, TYPE) < min_voices) { + dolog ("Bogus number of " NAME " voices %d, setting to %d\n", + glue (s->nb_hw_voices_, TYPE), + min_voices); + } + if (audio_bug(__func__, !voice_size && max_voices)) { dolog ("drv=3D`%s' voice_size=3D0 max_voices=3D%d\n", drv->name, max_voices); --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459384; cv=none; d=zohomail.com; s=zohoarc; b=Bq9x2oA0vJRM0jqEWxP+WtE/dIG5ekX5eVhHsi2uy6HXCkXJN/guvzlI0A1wXrYc5iKgFIlj2fqwjLm1PhMJUGIQUlzsys6MqqfodMDDWrM5Ec3LQ4ONjM13lqS3BUMXsWeVM5gG8GG0weNUB12ApD5OpD/jS41UGwswukudTRk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459384; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AWIeU7p98wAMa3PMyhfRoRZrGE23S1UxRVxrrNKKEQA=; b=UDUWRuPyEwr278MHfRM4gsO5yZf1ZDkFqncD838larsiPH6gAn7gOG4PMIxLOJwZ+mCaGlw/NmV9iFblHXh0oqnjTFhO+uKkLBl+qGfGgo0Y6TrB38e/j1rIqEQqGC0C+aCukyrQhxSaRaQ8TmF9sucjtkPxxZGqFuOD6YLHNyo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459384648161.26706165375026; Sat, 23 Sep 2023 01:56:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQB-0002qI-SS; Sat, 23 Sep 2023 04:55:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQA-0002pG-Ro for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQ9-0000XM-At for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:26 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-496-k324dMgcOZ-OCeh78uuMJQ-1; Sat, 23 Sep 2023 04:55:23 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-40526a782f7so28701155e9.2 for ; Sat, 23 Sep 2023 01:55:22 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id a21-20020a05600c2d5500b004053e9276easm3643235wmg.32.2023.09.23.01.55.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459324; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AWIeU7p98wAMa3PMyhfRoRZrGE23S1UxRVxrrNKKEQA=; b=KzpBcr+r9N1O1U0V3UT3fKCdB1zwO6Jqz8SciqsnNd4r4S2o7DxJFvl+1lh8NXQbn8XPAf X66b+XBcsFSQeNxZw4mjJh8yVLgamL8H9dgxLsGM45NTXDQPzamhJh1eYZl9Sbc5J/NIX2 58TNOgoOBErfauPYHnXaFAG0FU+QXK0= X-MC-Unique: k324dMgcOZ-OCeh78uuMJQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459321; x=1696064121; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AWIeU7p98wAMa3PMyhfRoRZrGE23S1UxRVxrrNKKEQA=; b=YVxbWwY8ZhpA6SLXRmwJo1CxfhAMvHWdEeQCBfB5lvpWC0UAQpmnimRLPkJEe9Do8B OJMDD9gpuoiDmvNZ4VdK02n0f/k54e3xoNWEoW5G9DciXLHLccuWia6Qg0rP0fAPue81 y4xsfuTjXZxZM3oRqF8PHq4gsRC7MntTRYftnVo57il7lULJR6npC/SqKaKU0Hkc6rCO Fpp4yldMAF/1Q4rB5XfecZHgTqdFCDQqd7K/Ix+GpdqyPGKen1vrTBuJPBxhXoC/s3Z1 UnEyBxPVjzrfyf0la4IZwrwak1M1CiEUBlEH6oRFWN7c46zC4nHkgjSeAhgzVd5GsDJf xbsw== X-Gm-Message-State: AOJu0YxpsnLG4oacWbFKaHn87EyT/D6kterWeX0j4C+G5DNPEJMI/1Q6 /GOdvKy7FXun1W5TFPHXulawdDkQaLx2F83sTkSkfV46Eooxc5gCGPgL8637aJxEsVhjYPTN47q kg2dqKYICXTlwK2ssL7LgfT3jII1wdBFsiLO8JR8bQ2OreR2KdNULwjgT5p+ULknJHNgrumNfLz w= X-Received: by 2002:a7b:c84e:0:b0:3fe:2b60:b24e with SMTP id c14-20020a7bc84e000000b003fe2b60b24emr1355369wml.29.1695459321218; Sat, 23 Sep 2023 01:55:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF9QazCSNaDrRreEa6fEqMXj98SVd6HcJteQRwM5hOqtBqogMasOBibyKsLdP+tb8XUmvmLMw== X-Received: by 2002:a7b:c84e:0:b0:3fe:2b60:b24e with SMTP id c14-20020a7bc84e000000b003fe2b60b24emr1355354wml.29.1695459320948; Sat, 23 Sep 2023 01:55:20 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 06/13] audio: simplify flow in audio_init Date: Sat, 23 Sep 2023 10:54:59 +0200 Message-ID: <20230923085507.399260-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459385648100010 Content-Type: text/plain; charset="utf-8" Merge two ifs into one. Signed-off-by: Paolo Bonzini --- audio/audio.c | 76 +++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 70835a9ef28..a2397e08cbe 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1707,12 +1707,12 @@ static AudiodevListEntry *audiodev_find( * if dev =3D=3D NULL =3D> legacy implicit initialization, return the alre= ady created * state or create a new one */ -static AudioState *audio_init(Audiodev *dev, const char *name) +static AudioState *audio_init(Audiodev *dev) { static bool atexit_registered; size_t i; int done =3D 0; - const char *drvname =3D NULL; + const char *drvname; VMChangeStateEntry *e; AudioState *s; struct audio_driver *driver; @@ -1736,17 +1736,32 @@ static AudioState *audio_init(Audiodev *dev, const = char *name) } } =20 + s =3D g_new0(AudioState, 1); + + QLIST_INIT (&s->hw_head_out); + QLIST_INIT (&s->hw_head_in); + QLIST_INIT (&s->cap_head); + if (!atexit_registered) { + atexit(audio_cleanup); + atexit_registered =3D true; + } + + s->ts =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, audio_timer, s); + if (dev) { /* -audiodev option */ - legacy_config =3D false; + s->dev =3D dev; drvname =3D AudiodevDriver_str(dev->driver); - } else if (!QTAILQ_EMPTY(&audio_states)) { - if (!legacy_config) { - dolog("Device %s: audiodev default parameter is deprecated, pl= ease " - "specify audiodev=3D%s\n", name, - QTAILQ_FIRST(&audio_states)->dev->id); + driver =3D audio_driver_lookup(drvname); + if (driver) { + done =3D !audio_driver_init(s, driver, true, dev); + } else { + dolog ("Unknown audio driver `%s'\n", drvname); + } + if (!done) { + free_audio_state(s); + return NULL; } - return QTAILQ_FIRST(&audio_states); } else { /* legacy implicit initialization */ head =3D audio_handle_legacy_opts(); @@ -1759,33 +1774,7 @@ static AudioState *audio_init(Audiodev *dev, const c= har *name) */ dev =3D QSIMPLEQ_FIRST(&head)->dev; audio_validate_opts(dev, &error_abort); - } =20 - s =3D g_new0(AudioState, 1); - s->dev =3D dev; - - QLIST_INIT (&s->hw_head_out); - QLIST_INIT (&s->hw_head_in); - QLIST_INIT (&s->cap_head); - if (!atexit_registered) { - atexit(audio_cleanup); - atexit_registered =3D true; - } - - s->ts =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, audio_timer, s); - - if (drvname) { - driver =3D audio_driver_lookup(drvname); - if (driver) { - done =3D !audio_driver_init(s, driver, true, dev); - } else { - dolog ("Unknown audio driver `%s'\n", drvname); - } - if (!done) { - free_audio_state(s); - return NULL; - } - } else { for (i =3D 0; audio_prio_list[i]; i++) { AudiodevListEntry *e =3D audiodev_find(&head, audio_prio_list[= i]); driver =3D audio_driver_lookup(audio_prio_list[i]); @@ -1800,8 +1789,9 @@ static AudioState *audio_init(Audiodev *dev, const ch= ar *name) } } } + + audio_free_audiodev_list(&head); } - audio_free_audiodev_list(&head); =20 if (!done) { driver =3D audio_driver_lookup("none"); @@ -1841,7 +1831,16 @@ void audio_free_audiodev_list(AudiodevListHead *head) void AUD_register_card (const char *name, QEMUSoundCard *card) { if (!card->state) { - card->state =3D audio_init(NULL, name); + if (!QTAILQ_EMPTY(&audio_states)) { + if (!legacy_config) { + dolog("Device %s: audiodev default parameter is deprecated= , please " + "specify audiodev=3D%s\n", name, + QTAILQ_FIRST(&audio_states)->dev->id); + } + card->state =3D QTAILQ_FIRST(&audio_states); + } else { + card->state =3D audio_init(NULL); + } } =20 card->name =3D g_strdup (name); @@ -2173,6 +2172,7 @@ void audio_define(Audiodev *dev) e =3D g_new0(AudiodevListEntry, 1); e->dev =3D dev; QSIMPLEQ_INSERT_TAIL(&audiodevs, e, next); + legacy_config =3D false; } =20 bool audio_init_audiodevs(void) @@ -2180,7 +2180,7 @@ bool audio_init_audiodevs(void) AudiodevListEntry *e; =20 QSIMPLEQ_FOREACH(e, &audiodevs, next) { - if (!audio_init(e->dev, NULL)) { + if (!audio_init(e->dev)) { return false; } } --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459451; cv=none; d=zohomail.com; s=zohoarc; b=bx683qYxOaQEJiXyHfuYSMVIE9T20ilZiLSytK/FIkEoud8Xs6kynG/TheyGV4oF/FpMMMlrMqmyqCslHRRy/1VaVP/Wtafap0+OqV+GlTcEktF+c+mTAAxdlmXpbpYQG/L/h0KkfRcvHesKdk9QY3pVjIMpM+G8DmvVzuCFN5M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459451; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UGpGmUG+1O6fQeiMR+GnOlkWQK9Kz0BMS7EtvXw5+mU=; b=mv3Enyw3fbL4uihQxQ1J2zrr+DK7OFezqGMVa/SAFWzaJ+Ci5JfsxQD0zknjWW/ZpSy6hBrgQ473fY8WXrOMOvexUFzpuD0Goz23zHpfOj0yECH5ZRQqvGUqp3MenXEE/gksGzimlUzhBqK6yarOs3z9Kr+bvC27cedW3WX41kA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459450954133.02065902668187; Sat, 23 Sep 2023 01:57:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQP-0002xi-6g; Sat, 23 Sep 2023 04:55:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQN-0002xP-S5 for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQI-0000YQ-Ks for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:39 -0400 Received: from mail-lf1-f69.google.com (mail-lf1-f69.google.com [209.85.167.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-139-ECG8SMX0OzKA1fE2hNoekA-1; Sat, 23 Sep 2023 04:55:31 -0400 Received: by mail-lf1-f69.google.com with SMTP id 2adb3069b0e04-50433961a36so3320316e87.3 for ; Sat, 23 Sep 2023 01:55:31 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id 10-20020a05600c22ca00b00402dbe0bbdcsm9442887wmg.28.2023.09.23.01.55.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459334; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UGpGmUG+1O6fQeiMR+GnOlkWQK9Kz0BMS7EtvXw5+mU=; b=RnteTezRWLLIiCvy+NvtvInBydGK4mGcHh68D3pATw6udUhMz2ZJwOEYTR3pPfrksCQ9cD JL8vISRYDZoqI20XQqkWg06Dy33uX0vw9kQDuIxJocnS5avWDwmCJX9h1glcwxACGUYTQS GnabW25ZoKGQ3ZmLK68pNBR//Vbt978= X-MC-Unique: ECG8SMX0OzKA1fE2hNoekA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459324; x=1696064124; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UGpGmUG+1O6fQeiMR+GnOlkWQK9Kz0BMS7EtvXw5+mU=; b=QzP1h7ttxYNLodXC6VKZO+AE1S2V1+qyPsXbhJkY2g09FV76MvvDVLozLd1e007KGU u8ScLeAZSGWTyBSbR4p9rAiF7W6ZQy5Dl/VVk+M1B1mHloPt8VG1PAq9RHH2YHvXFWbm SJxk00bYXQri3RCBq+e3HSfTQjChE+AutXMEVmJR/LXpWvcaEcfRwuWLdRgp5bLZPvEq nW6alEFSOR26GIOs/edIboLel38QkSd3rFJ6qKwEEoIxiwtt0GF0mT+e1srhf3RZH8db AnsMNZhie+QBf00qMxLVG441sUU+457or8CDT2EvUQ+YF1dg8KCVTZuGHkyRRDGcODW4 +gXw== X-Gm-Message-State: AOJu0Yws/JUvTBoTDSFCCho9JrnW6+4WJPU+8Le8wQMAKQqggU/Xb1wS KaSX/OGYgyOzfktUzUhYww9Ey8tp8NuLytUdCAuYVsEpULGRzma4agVjr/Dh57Y1CO9dQNw07M1 pqaqas2c/gN+yFVPMusgRH21fS65hQRWNTA5anU2ORfo8BGyIzkya+0OYx9ttPMx3m8v23GnSf7 Y= X-Received: by 2002:a05:6512:3b89:b0:500:d4d9:25b5 with SMTP id g9-20020a0565123b8900b00500d4d925b5mr1610209lfv.56.1695459323477; Sat, 23 Sep 2023 01:55:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHjPMwzFvm22Lb4DZssyZIV9YMEIKAy3uVLPY/d3zXib5R8hF5BOXF76OdwSKFi3dLp3I9Zcg== X-Received: by 2002:a05:6512:3b89:b0:500:d4d9:25b5 with SMTP id g9-20020a0565123b8900b00500d4d925b5mr1610181lfv.56.1695459322627; Sat, 23 Sep 2023 01:55:22 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 07/13] audio: remove QEMU_AUDIO_* and -audio-help support Date: Sat, 23 Sep 2023 10:55:00 +0200 Message-ID: <20230923085507.399260-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459453198100003 These have been deprecated for a long time, and the introduction of -audio in 7.1.0 has cemented the new way of specifying an audio backend's parameters. However, there is still a need for simple configuration of the audio backend in the desktop case; therefore, if no audiodev is passed to audio_init(), go through a bunch of simple Audiodev* structures and pick the first that can be initialized successfully. The only QEMU_AUDIO_* option that is left in, waiting for a better idea, is QEMU_AUDIO_DRV=3Dnone which is used by qtest. Remove all the parsing code, including the concept of "can_be_default" audio drivers: now that audio_prio_list[] is only used in a single place, wav can be excluded directly in that function. Signed-off-by: Paolo Bonzini --- audio/alsaaudio.c | 1 - audio/audio.c | 129 +++---- audio/audio.h | 1 - audio/audio_int.h | 5 - audio/audio_legacy.c | 591 -------------------------------- audio/coreaudio.m | 1 - audio/dbusaudio.c | 1 - audio/dsoundaudio.c | 1 - audio/jackaudio.c | 1 - audio/meson.build | 1 - audio/noaudio.c | 1 - audio/ossaudio.c | 1 - audio/paaudio.c | 1 - audio/pwaudio.c | 1 - audio/sdlaudio.c | 1 - audio/sndioaudio.c | 1 - audio/wavaudio.c | 1 - docs/about/deprecated.rst | 8 - docs/about/removed-features.rst | 6 + qemu-options.hx | 10 - softmmu/vl.c | 4 - 21 files changed, 58 insertions(+), 709 deletions(-) delete mode 100644 audio/audio_legacy.c diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c index 6fb78e5b972..cacae1ea59c 100644 --- a/audio/alsaaudio.c +++ b/audio/alsaaudio.c @@ -960,7 +960,6 @@ static struct audio_driver alsa_audio_driver =3D { .init =3D alsa_audio_init, .fini =3D alsa_audio_fini, .pcm_ops =3D &alsa_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof (ALSAVoiceOut), diff --git a/audio/audio.c b/audio/audio.c index a2397e08cbe..4f93bdcf082 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -32,6 +32,7 @@ #include "qapi/qobject-input-visitor.h" #include "qapi/qapi-visit-audio.h" #include "qapi/qapi-commands-audio.h" +#include "qapi/qmp/qdict.h" #include "qemu/cutils.h" #include "qemu/error-report.h" #include "qemu/log.h" @@ -62,19 +63,22 @@ const char *audio_prio_list[] =3D { "spice", CONFIG_AUDIO_DRIVERS "none", - "wav", NULL }; =20 static QLIST_HEAD(, audio_driver) audio_drivers; -static AudiodevListHead audiodevs =3D QSIMPLEQ_HEAD_INITIALIZER(audiodevs); +static AudiodevListHead audiodevs =3D + QSIMPLEQ_HEAD_INITIALIZER(audiodevs); +static AudiodevListHead default_audiodevs =3D + QSIMPLEQ_HEAD_INITIALIZER(default_audiodevs); + =20 void audio_driver_register(audio_driver *drv) { QLIST_INSERT_HEAD(&audio_drivers, drv, next); } =20 -audio_driver *audio_driver_lookup(const char *name) +static audio_driver *audio_driver_lookup(const char *name) { struct audio_driver *d; Error *local_err =3D NULL; @@ -112,8 +116,6 @@ const struct mixeng_volume nominal_volume =3D { #endif }; =20 -static bool legacy_config =3D true; - int audio_bug (const char *funcname, int cond) { if (cond) { @@ -1688,17 +1690,39 @@ static const VMStateDescription vmstate_audio =3D { =20 static void audio_validate_opts(Audiodev *dev, Error **errp); =20 -static AudiodevListEntry *audiodev_find( - AudiodevListHead *head, const char *drvname) +static void audio_create_default_audiodevs(void) { - AudiodevListEntry *e; - QSIMPLEQ_FOREACH(e, head, next) { - if (strcmp(AudiodevDriver_str(e->dev->driver), drvname) =3D=3D 0) { - return e; - } + const char *drvname =3D getenv("QEMU_AUDIO_DRV"); + if (drvname && !g_str_equal(drvname, "none")) { + error_report("Please use -audiodev instead of QEMU_AUDIO_*"); + exit(1); } =20 - return NULL; + for (int i =3D 0; audio_prio_list[i]; i++) { + if (drvname && !g_str_equal(drvname, audio_prio_list[i])) { + continue; + } + + if (audio_driver_lookup(audio_prio_list[i])) { + QDict *dict =3D qdict_new(); + Audiodev *dev =3D NULL; + AudiodevListEntry *e; + Visitor *v; + + qdict_put_str(dict, "driver", audio_prio_list[i]); + qdict_put_str(dict, "id", "#default"); + + v =3D qobject_input_visitor_new_keyval(QOBJECT(dict)); + qobject_unref(dict); + visit_type_Audiodev(v, NULL, &dev, &error_fatal); + visit_free(v); + + audio_validate_opts(dev, &error_abort); + e =3D g_new0(AudiodevListEntry, 1); + e->dev =3D dev; + QSIMPLEQ_INSERT_TAIL(&default_audiodevs, e, next); + } + } } =20 /* @@ -1710,31 +1734,11 @@ static AudiodevListEntry *audiodev_find( static AudioState *audio_init(Audiodev *dev) { static bool atexit_registered; - size_t i; int done =3D 0; const char *drvname; VMChangeStateEntry *e; AudioState *s; struct audio_driver *driver; - /* silence gcc warning about uninitialized variable */ - AudiodevListHead head =3D QSIMPLEQ_HEAD_INITIALIZER(head); - - if (using_spice) { - /* - * When using spice allow the spice audio driver being picked - * as default. - * - * Temporary hack. Using audio devices without explicit - * audiodev=3D property is already deprecated. Same goes for - * the -soundhw switch. Once this support gets finally - * removed we can also drop the concept of a default audio - * backend and this can go away. - */ - driver =3D audio_driver_lookup("spice"); - if (driver) { - driver->can_be_default =3D 1; - } - } =20 s =3D g_new0(AudioState, 1); =20 @@ -1763,41 +1767,20 @@ static AudioState *audio_init(Audiodev *dev) return NULL; } } else { - /* legacy implicit initialization */ - head =3D audio_handle_legacy_opts(); - /* - * In case of legacy initialization, all Audiodevs in the list wil= l have - * the same configuration (except the driver), so it doesn't matte= r which - * one we chose. We need an Audiodev to set up AudioState before = we can - * init a driver. Also note that dev at this point is still in the - * list. - */ - dev =3D QSIMPLEQ_FIRST(&head)->dev; - audio_validate_opts(dev, &error_abort); - - for (i =3D 0; audio_prio_list[i]; i++) { - AudiodevListEntry *e =3D audiodev_find(&head, audio_prio_list[= i]); - driver =3D audio_driver_lookup(audio_prio_list[i]); - - if (e && driver) { - s->dev =3D dev =3D e->dev; - audio_validate_opts(dev, &error_abort); - done =3D !audio_driver_init(s, driver, false, dev); - if (done) { - e->dev =3D NULL; - break; - } + for (;;) { + AudiodevListEntry *e =3D QSIMPLEQ_FIRST(&default_audiodevs); + if (!e) { + dolog("Internal error: no default audio driver available\n= "); + exit(1); } + s->dev =3D dev =3D e->dev; + drvname =3D AudiodevDriver_str(dev->driver); + driver =3D audio_driver_lookup(drvname); + if (!audio_driver_init(s, driver, false, dev)) { + break; + } + QSIMPLEQ_REMOVE_HEAD(&default_audiodevs, next); } - - audio_free_audiodev_list(&head); - } - - if (!done) { - driver =3D audio_driver_lookup("none"); - done =3D !audio_driver_init(s, driver, false, dev); - assert(done); - dolog("warning: Using timer based audio emulation\n"); } =20 if (dev->timer_period <=3D 0) { @@ -1818,16 +1801,6 @@ static AudioState *audio_init(Audiodev *dev) return s; } =20 -void audio_free_audiodev_list(AudiodevListHead *head) -{ - AudiodevListEntry *e; - while ((e =3D QSIMPLEQ_FIRST(head))) { - QSIMPLEQ_REMOVE_HEAD(head, next); - qapi_free_Audiodev(e->dev); - g_free(e); - } -} - void AUD_register_card (const char *name, QEMUSoundCard *card) { if (!card->state) { @@ -1839,6 +1812,9 @@ void AUD_register_card (const char *name, QEMUSoundCa= rd *card) } card->state =3D QTAILQ_FIRST(&audio_states); } else { + if (QSIMPLEQ_EMPTY(&default_audiodevs)) { + audio_create_default_audiodevs(); + } card->state =3D audio_init(NULL); } } @@ -2172,7 +2148,6 @@ void audio_define(Audiodev *dev) e =3D g_new0(AudiodevListEntry, 1); e->dev =3D dev; QSIMPLEQ_INSERT_TAIL(&audiodevs, e, next); - legacy_config =3D false; } =20 bool audio_init_audiodevs(void) diff --git a/audio/audio.h b/audio/audio.h index e0c13b5dcdf..34df8962a66 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -172,7 +172,6 @@ void audio_define(Audiodev *audio); void audio_parse_option(const char *opt); bool audio_init_audiodevs(void); void audio_help(void); -void audio_legacy_help(void); =20 AudioState *audio_state_by_name(const char *name, Error **errp); const char *audio_get_id(QEMUSoundCard *card); diff --git a/audio/audio_int.h b/audio/audio_int.h index 06e815de9f6..2d079d00a25 100644 --- a/audio/audio_int.h +++ b/audio/audio_int.h @@ -146,7 +146,6 @@ struct audio_driver { void (*set_dbus_server) (AudioState *s, GDBusObjectManagerServer *mana= ger, bool p2p); #endif struct audio_pcm_ops *pcm_ops; - int can_be_default; int max_voices_out; int max_voices_in; size_t voice_size_out; @@ -243,7 +242,6 @@ extern const struct mixeng_volume nominal_volume; extern const char *audio_prio_list[]; =20 void audio_driver_register(audio_driver *drv); -audio_driver *audio_driver_lookup(const char *name); =20 void audio_pcm_init_info (struct audio_pcm_info *info, struct audsettings = *as); void audio_pcm_info_clear_buf (struct audio_pcm_info *info, void *buf, int= len); @@ -297,9 +295,6 @@ typedef struct AudiodevListEntry { } AudiodevListEntry; =20 typedef QSIMPLEQ_HEAD(, AudiodevListEntry) AudiodevListHead; -AudiodevListHead audio_handle_legacy_opts(void); - -void audio_free_audiodev_list(AudiodevListHead *head); =20 void audio_create_pdos(Audiodev *dev); AudiodevPerDirectionOptions *audio_get_pdo_in(Audiodev *dev); diff --git a/audio/audio_legacy.c b/audio/audio_legacy.c deleted file mode 100644 index dc72ba55e9a..00000000000 --- a/audio/audio_legacy.c +++ /dev/null @@ -1,591 +0,0 @@ -/* - * QEMU Audio subsystem: legacy configuration handling - * - * Copyright (c) 2015-2019 Zolt=C3=A1n K=C5=91v=C3=A1g=C3=B3 - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ -#include "qemu/osdep.h" -#include "audio.h" -#include "audio_int.h" -#include "qemu/cutils.h" -#include "qemu/timer.h" -#include "qapi/error.h" -#include "qapi/qapi-visit-audio.h" -#include "qapi/visitor-impl.h" - -#define AUDIO_CAP "audio-legacy" -#include "audio_int.h" - -static uint32_t toui32(const char *str) -{ - uint64_t ret; - if (parse_uint_full(str, 10, &ret) || ret > UINT32_MAX) { - dolog("Invalid integer value `%s'\n", str); - exit(1); - } - return ret; -} - -/* helper functions to convert env variables */ -static void get_bool(const char *env, bool *dst, bool *has_dst) -{ - const char *val =3D getenv(env); - if (val) { - *dst =3D toui32(val) !=3D 0; - *has_dst =3D true; - } -} - -static void get_int(const char *env, uint32_t *dst, bool *has_dst) -{ - const char *val =3D getenv(env); - if (val) { - *dst =3D toui32(val); - *has_dst =3D true; - } -} - -static void get_str(const char *env, char **dst) -{ - const char *val =3D getenv(env); - if (val) { - g_free(*dst); - *dst =3D g_strdup(val); - } -} - -static void get_fmt(const char *env, AudioFormat *dst, bool *has_dst) -{ - const char *val =3D getenv(env); - if (val) { - size_t i; - for (i =3D 0; AudioFormat_lookup.size; ++i) { - if (strcasecmp(val, AudioFormat_lookup.array[i]) =3D=3D 0) { - *dst =3D i; - *has_dst =3D true; - return; - } - } - - dolog("Invalid audio format `%s'\n", val); - exit(1); - } -} - - -#if defined(CONFIG_AUDIO_ALSA) || defined(CONFIG_AUDIO_DSOUND) -static void get_millis_to_usecs(const char *env, uint32_t *dst, bool *has_= dst) -{ - const char *val =3D getenv(env); - if (val) { - *dst =3D toui32(val) * 1000; - *has_dst =3D true; - } -} -#endif - -#if defined(CONFIG_AUDIO_ALSA) || defined(CONFIG_AUDIO_COREAUDIO) || \ - defined(CONFIG_AUDIO_PA) || defined(CONFIG_AUDIO_SDL) || \ - defined(CONFIG_AUDIO_DSOUND) || defined(CONFIG_AUDIO_OSS) -static uint32_t frames_to_usecs(uint32_t frames, - AudiodevPerDirectionOptions *pdo) -{ - uint32_t freq =3D pdo->has_frequency ? pdo->frequency : 44100; - return (frames * 1000000 + freq / 2) / freq; -} -#endif - -#ifdef CONFIG_AUDIO_COREAUDIO -static void get_frames_to_usecs(const char *env, uint32_t *dst, bool *has_= dst, - AudiodevPerDirectionOptions *pdo) -{ - const char *val =3D getenv(env); - if (val) { - *dst =3D frames_to_usecs(toui32(val), pdo); - *has_dst =3D true; - } -} -#endif - -#if defined(CONFIG_AUDIO_PA) || defined(CONFIG_AUDIO_SDL) || \ - defined(CONFIG_AUDIO_DSOUND) || defined(CONFIG_AUDIO_OSS) -static uint32_t samples_to_usecs(uint32_t samples, - AudiodevPerDirectionOptions *pdo) -{ - uint32_t channels =3D pdo->has_channels ? pdo->channels : 2; - return frames_to_usecs(samples / channels, pdo); -} -#endif - -#if defined(CONFIG_AUDIO_PA) || defined(CONFIG_AUDIO_SDL) -static void get_samples_to_usecs(const char *env, uint32_t *dst, bool *has= _dst, - AudiodevPerDirectionOptions *pdo) -{ - const char *val =3D getenv(env); - if (val) { - *dst =3D samples_to_usecs(toui32(val), pdo); - *has_dst =3D true; - } -} -#endif - -#if defined(CONFIG_AUDIO_DSOUND) || defined(CONFIG_AUDIO_OSS) -static uint32_t bytes_to_usecs(uint32_t bytes, AudiodevPerDirectionOptions= *pdo) -{ - AudioFormat fmt =3D pdo->has_format ? pdo->format : AUDIO_FORMAT_S16; - uint32_t bytes_per_sample =3D audioformat_bytes_per_sample(fmt); - return samples_to_usecs(bytes / bytes_per_sample, pdo); -} - -static void get_bytes_to_usecs(const char *env, uint32_t *dst, bool *has_d= st, - AudiodevPerDirectionOptions *pdo) -{ - const char *val =3D getenv(env); - if (val) { - *dst =3D bytes_to_usecs(toui32(val), pdo); - *has_dst =3D true; - } -} -#endif - -/* backend specific functions */ - -#ifdef CONFIG_AUDIO_ALSA -/* ALSA */ -static void handle_alsa_per_direction( - AudiodevAlsaPerDirectionOptions *apdo, const char *prefix) -{ - char buf[64]; - size_t len =3D strlen(prefix); - bool size_in_usecs =3D false; - bool dummy; - - memcpy(buf, prefix, len); - strcpy(buf + len, "TRY_POLL"); - get_bool(buf, &apdo->try_poll, &apdo->has_try_poll); - - strcpy(buf + len, "DEV"); - get_str(buf, &apdo->dev); - - strcpy(buf + len, "SIZE_IN_USEC"); - get_bool(buf, &size_in_usecs, &dummy); - - strcpy(buf + len, "PERIOD_SIZE"); - get_int(buf, &apdo->period_length, &apdo->has_period_length); - if (apdo->has_period_length && !size_in_usecs) { - apdo->period_length =3D frames_to_usecs( - apdo->period_length, - qapi_AudiodevAlsaPerDirectionOptions_base(apdo)); - } - - strcpy(buf + len, "BUFFER_SIZE"); - get_int(buf, &apdo->buffer_length, &apdo->has_buffer_length); - if (apdo->has_buffer_length && !size_in_usecs) { - apdo->buffer_length =3D frames_to_usecs( - apdo->buffer_length, - qapi_AudiodevAlsaPerDirectionOptions_base(apdo)); - } -} - -static void handle_alsa(Audiodev *dev) -{ - AudiodevAlsaOptions *aopt =3D &dev->u.alsa; - handle_alsa_per_direction(aopt->in, "QEMU_ALSA_ADC_"); - handle_alsa_per_direction(aopt->out, "QEMU_ALSA_DAC_"); - - get_millis_to_usecs("QEMU_ALSA_THRESHOLD", - &aopt->threshold, &aopt->has_threshold); -} -#endif - -#ifdef CONFIG_AUDIO_COREAUDIO -/* coreaudio */ -static void handle_coreaudio(Audiodev *dev) -{ - get_frames_to_usecs( - "QEMU_COREAUDIO_BUFFER_SIZE", - &dev->u.coreaudio.out->buffer_length, - &dev->u.coreaudio.out->has_buffer_length, - qapi_AudiodevCoreaudioPerDirectionOptions_base(dev->u.coreaudio.ou= t)); - get_int("QEMU_COREAUDIO_BUFFER_COUNT", - &dev->u.coreaudio.out->buffer_count, - &dev->u.coreaudio.out->has_buffer_count); -} -#endif - -#ifdef CONFIG_AUDIO_DSOUND -/* dsound */ -static void handle_dsound(Audiodev *dev) -{ - get_millis_to_usecs("QEMU_DSOUND_LATENCY_MILLIS", - &dev->u.dsound.latency, &dev->u.dsound.has_latency= ); - get_bytes_to_usecs("QEMU_DSOUND_BUFSIZE_OUT", - &dev->u.dsound.out->buffer_length, - &dev->u.dsound.out->has_buffer_length, - dev->u.dsound.out); - get_bytes_to_usecs("QEMU_DSOUND_BUFSIZE_IN", - &dev->u.dsound.in->buffer_length, - &dev->u.dsound.in->has_buffer_length, - dev->u.dsound.in); -} -#endif - -#ifdef CONFIG_AUDIO_OSS -/* OSS */ -static void handle_oss_per_direction( - AudiodevOssPerDirectionOptions *opdo, const char *try_poll_env, - const char *dev_env) -{ - get_bool(try_poll_env, &opdo->try_poll, &opdo->has_try_poll); - get_str(dev_env, &opdo->dev); - - get_bytes_to_usecs("QEMU_OSS_FRAGSIZE", - &opdo->buffer_length, &opdo->has_buffer_length, - qapi_AudiodevOssPerDirectionOptions_base(opdo)); - get_int("QEMU_OSS_NFRAGS", &opdo->buffer_count, - &opdo->has_buffer_count); -} - -static void handle_oss(Audiodev *dev) -{ - AudiodevOssOptions *oopt =3D &dev->u.oss; - handle_oss_per_direction(oopt->in, "QEMU_AUDIO_ADC_TRY_POLL", - "QEMU_OSS_ADC_DEV"); - handle_oss_per_direction(oopt->out, "QEMU_AUDIO_DAC_TRY_POLL", - "QEMU_OSS_DAC_DEV"); - - get_bool("QEMU_OSS_MMAP", &oopt->try_mmap, &oopt->has_try_mmap); - get_bool("QEMU_OSS_EXCLUSIVE", &oopt->exclusive, &oopt->has_exclusive); - get_int("QEMU_OSS_POLICY", &oopt->dsp_policy, &oopt->has_dsp_policy); -} -#endif - -#ifdef CONFIG_AUDIO_PA -/* pulseaudio */ -static void handle_pa_per_direction( - AudiodevPaPerDirectionOptions *ppdo, const char *env) -{ - get_str(env, &ppdo->name); -} - -static void handle_pa(Audiodev *dev) -{ - handle_pa_per_direction(dev->u.pa.in, "QEMU_PA_SOURCE"); - handle_pa_per_direction(dev->u.pa.out, "QEMU_PA_SINK"); - - get_samples_to_usecs( - "QEMU_PA_SAMPLES", &dev->u.pa.in->buffer_length, - &dev->u.pa.in->has_buffer_length, - qapi_AudiodevPaPerDirectionOptions_base(dev->u.pa.in)); - get_samples_to_usecs( - "QEMU_PA_SAMPLES", &dev->u.pa.out->buffer_length, - &dev->u.pa.out->has_buffer_length, - qapi_AudiodevPaPerDirectionOptions_base(dev->u.pa.out)); - - get_str("QEMU_PA_SERVER", &dev->u.pa.server); -} -#endif - -#ifdef CONFIG_AUDIO_SDL -/* SDL */ -static void handle_sdl(Audiodev *dev) -{ - /* SDL is output only */ - get_samples_to_usecs("QEMU_SDL_SAMPLES", &dev->u.sdl.out->buffer_lengt= h, - &dev->u.sdl.out->has_buffer_length, - qapi_AudiodevSdlPerDirectionOptions_base(dev->u.sdl.out)); -} -#endif - -/* wav */ -static void handle_wav(Audiodev *dev) -{ - get_int("QEMU_WAV_FREQUENCY", - &dev->u.wav.out->frequency, &dev->u.wav.out->has_frequency); - get_fmt("QEMU_WAV_FORMAT", &dev->u.wav.out->format, - &dev->u.wav.out->has_format); - get_int("QEMU_WAV_DAC_FIXED_CHANNELS", - &dev->u.wav.out->channels, &dev->u.wav.out->has_channels); - get_str("QEMU_WAV_PATH", &dev->u.wav.path); -} - -/* general */ -static void handle_per_direction( - AudiodevPerDirectionOptions *pdo, const char *prefix) -{ - char buf[64]; - size_t len =3D strlen(prefix); - - memcpy(buf, prefix, len); - strcpy(buf + len, "FIXED_SETTINGS"); - get_bool(buf, &pdo->fixed_settings, &pdo->has_fixed_settings); - - strcpy(buf + len, "FIXED_FREQ"); - get_int(buf, &pdo->frequency, &pdo->has_frequency); - - strcpy(buf + len, "FIXED_FMT"); - get_fmt(buf, &pdo->format, &pdo->has_format); - - strcpy(buf + len, "FIXED_CHANNELS"); - get_int(buf, &pdo->channels, &pdo->has_channels); - - strcpy(buf + len, "VOICES"); - get_int(buf, &pdo->voices, &pdo->has_voices); -} - -static AudiodevListEntry *legacy_opt(const char *drvname) -{ - AudiodevListEntry *e =3D g_new0(AudiodevListEntry, 1); - e->dev =3D g_new0(Audiodev, 1); - e->dev->id =3D g_strdup(drvname); - e->dev->driver =3D qapi_enum_parse( - &AudiodevDriver_lookup, drvname, -1, &error_abort); - - audio_create_pdos(e->dev); - - handle_per_direction(audio_get_pdo_in(e->dev), "QEMU_AUDIO_ADC_"); - handle_per_direction(audio_get_pdo_out(e->dev), "QEMU_AUDIO_DAC_"); - - /* Original description: Timer period in HZ (0 - use lowest possible) = */ - get_int("QEMU_AUDIO_TIMER_PERIOD", - &e->dev->timer_period, &e->dev->has_timer_period); - if (e->dev->has_timer_period && e->dev->timer_period) { - e->dev->timer_period =3D NANOSECONDS_PER_SECOND / 1000 / - e->dev->timer_period; - } - - switch (e->dev->driver) { -#ifdef CONFIG_AUDIO_ALSA - case AUDIODEV_DRIVER_ALSA: - handle_alsa(e->dev); - break; -#endif - -#ifdef CONFIG_AUDIO_COREAUDIO - case AUDIODEV_DRIVER_COREAUDIO: - handle_coreaudio(e->dev); - break; -#endif - -#ifdef CONFIG_AUDIO_DSOUND - case AUDIODEV_DRIVER_DSOUND: - handle_dsound(e->dev); - break; -#endif - -#ifdef CONFIG_AUDIO_OSS - case AUDIODEV_DRIVER_OSS: - handle_oss(e->dev); - break; -#endif - -#ifdef CONFIG_AUDIO_PA - case AUDIODEV_DRIVER_PA: - handle_pa(e->dev); - break; -#endif - -#ifdef CONFIG_AUDIO_SDL - case AUDIODEV_DRIVER_SDL: - handle_sdl(e->dev); - break; -#endif - - case AUDIODEV_DRIVER_WAV: - handle_wav(e->dev); - break; - - default: - break; - } - - return e; -} - -AudiodevListHead audio_handle_legacy_opts(void) -{ - const char *drvname =3D getenv("QEMU_AUDIO_DRV"); - AudiodevListHead head =3D QSIMPLEQ_HEAD_INITIALIZER(head); - - if (drvname) { - AudiodevListEntry *e; - audio_driver *driver =3D audio_driver_lookup(drvname); - if (!driver) { - dolog("Unknown audio driver `%s'\n", drvname); - exit(1); - } - e =3D legacy_opt(drvname); - QSIMPLEQ_INSERT_TAIL(&head, e, next); - } else { - for (int i =3D 0; audio_prio_list[i]; i++) { - audio_driver *driver =3D audio_driver_lookup(audio_prio_list[i= ]); - if (driver && driver->can_be_default) { - AudiodevListEntry *e =3D legacy_opt(driver->name); - QSIMPLEQ_INSERT_TAIL(&head, e, next); - } - } - if (QSIMPLEQ_EMPTY(&head)) { - dolog("Internal error: no default audio driver available\n"); - exit(1); - } - } - - return head; -} - -/* visitor to print -audiodev option */ -typedef struct { - Visitor visitor; - - bool comma; - GList *path; -} LegacyPrintVisitor; - -static bool lv_start_struct(Visitor *v, const char *name, void **obj, - size_t size, Error **errp) -{ - LegacyPrintVisitor *lv =3D (LegacyPrintVisitor *) v; - lv->path =3D g_list_append(lv->path, g_strdup(name)); - return true; -} - -static void lv_end_struct(Visitor *v, void **obj) -{ - LegacyPrintVisitor *lv =3D (LegacyPrintVisitor *) v; - lv->path =3D g_list_delete_link(lv->path, g_list_last(lv->path)); -} - -static void lv_print_key(Visitor *v, const char *name) -{ - GList *e; - LegacyPrintVisitor *lv =3D (LegacyPrintVisitor *) v; - if (lv->comma) { - putchar(','); - } else { - lv->comma =3D true; - } - - for (e =3D lv->path; e; e =3D e->next) { - if (e->data) { - printf("%s.", (const char *) e->data); - } - } - - printf("%s=3D", name); -} - -static bool lv_type_int64(Visitor *v, const char *name, int64_t *obj, - Error **errp) -{ - lv_print_key(v, name); - printf("%" PRIi64, *obj); - return true; -} - -static bool lv_type_uint64(Visitor *v, const char *name, uint64_t *obj, - Error **errp) -{ - lv_print_key(v, name); - printf("%" PRIu64, *obj); - return true; -} - -static bool lv_type_bool(Visitor *v, const char *name, bool *obj, Error **= errp) -{ - lv_print_key(v, name); - printf("%s", *obj ? "on" : "off"); - return true; -} - -static bool lv_type_str(Visitor *v, const char *name, char **obj, Error **= errp) -{ - const char *str =3D *obj; - lv_print_key(v, name); - - while (*str) { - if (*str =3D=3D ',') { - putchar(','); - } - putchar(*str++); - } - return true; -} - -static void lv_complete(Visitor *v, void *opaque) -{ - LegacyPrintVisitor *lv =3D (LegacyPrintVisitor *) v; - assert(lv->path =3D=3D NULL); -} - -static void lv_free(Visitor *v) -{ - LegacyPrintVisitor *lv =3D (LegacyPrintVisitor *) v; - - g_list_free_full(lv->path, g_free); - g_free(lv); -} - -static Visitor *legacy_visitor_new(void) -{ - LegacyPrintVisitor *lv =3D g_new0(LegacyPrintVisitor, 1); - - lv->visitor.start_struct =3D lv_start_struct; - lv->visitor.end_struct =3D lv_end_struct; - /* lists not supported */ - lv->visitor.type_int64 =3D lv_type_int64; - lv->visitor.type_uint64 =3D lv_type_uint64; - lv->visitor.type_bool =3D lv_type_bool; - lv->visitor.type_str =3D lv_type_str; - - lv->visitor.type =3D VISITOR_OUTPUT; - lv->visitor.complete =3D lv_complete; - lv->visitor.free =3D lv_free; - - return &lv->visitor; -} - -void audio_legacy_help(void) -{ - AudiodevListHead head; - AudiodevListEntry *e; - - printf("Environment variable based configuration deprecated.\n"); - printf("Please use the new -audiodev option.\n"); - - head =3D audio_handle_legacy_opts(); - printf("\nEquivalent -audiodev to your current environment variables:\= n"); - if (!getenv("QEMU_AUDIO_DRV")) { - printf("(Since you didn't specify QEMU_AUDIO_DRV, I'll list all " - "possibilities)\n"); - } - - QSIMPLEQ_FOREACH(e, &head, next) { - Visitor *v; - Audiodev *dev =3D e->dev; - printf("-audiodev "); - - v =3D legacy_visitor_new(); - visit_type_Audiodev(v, NULL, &dev, &error_abort); - visit_free(v); - - printf("\n"); - } - audio_free_audiodev_list(&head); -} diff --git a/audio/coreaudio.m b/audio/coreaudio.m index 7cfb38fb6ae..8cd129a27d0 100644 --- a/audio/coreaudio.m +++ b/audio/coreaudio.m @@ -673,7 +673,6 @@ static void coreaudio_audio_fini (void *opaque) .init =3D coreaudio_audio_init, .fini =3D coreaudio_audio_fini, .pcm_ops =3D &coreaudio_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D 1, .max_voices_in =3D 0, .voice_size_out =3D sizeof (coreaudioVoiceOut), diff --git a/audio/dbusaudio.c b/audio/dbusaudio.c index 310ca997ff4..60fcf643ecf 100644 --- a/audio/dbusaudio.c +++ b/audio/dbusaudio.c @@ -676,7 +676,6 @@ static struct audio_driver dbus_audio_driver =3D { .fini =3D dbus_audio_fini, .set_dbus_server =3D dbus_audio_set_server, .pcm_ops =3D &dbus_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof(DBusVoiceOut), diff --git a/audio/dsoundaudio.c b/audio/dsoundaudio.c index eefde88edcb..f3bb48d0073 100644 --- a/audio/dsoundaudio.c +++ b/audio/dsoundaudio.c @@ -721,7 +721,6 @@ static struct audio_driver dsound_audio_driver =3D { .init =3D dsound_audio_init, .fini =3D dsound_audio_fini, .pcm_ops =3D &dsound_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D 1, .voice_size_out =3D sizeof (DSoundVoiceOut), diff --git a/audio/jackaudio.c b/audio/jackaudio.c index bfb0297f34d..261e36d89b0 100644 --- a/audio/jackaudio.c +++ b/audio/jackaudio.c @@ -669,7 +669,6 @@ static struct audio_driver jack_driver =3D { .init =3D qjack_init, .fini =3D qjack_fini, .pcm_ops =3D &jack_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof(QJackOut), diff --git a/audio/meson.build b/audio/meson.build index df4d968c0fe..c8f658611f4 100644 --- a/audio/meson.build +++ b/audio/meson.build @@ -1,7 +1,6 @@ system_ss.add([spice_headers, files('audio.c')]) system_ss.add(files( 'audio-hmp-cmds.c', - 'audio_legacy.c', 'mixeng.c', 'noaudio.c', 'wavaudio.c', diff --git a/audio/noaudio.c b/audio/noaudio.c index a36bfeffd14..1b60d8518a4 100644 --- a/audio/noaudio.c +++ b/audio/noaudio.c @@ -135,7 +135,6 @@ static struct audio_driver no_audio_driver =3D { .init =3D no_audio_init, .fini =3D no_audio_fini, .pcm_ops =3D &no_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof (NoVoiceOut), diff --git a/audio/ossaudio.c b/audio/ossaudio.c index ec4448d573d..3f31852371d 100644 --- a/audio/ossaudio.c +++ b/audio/ossaudio.c @@ -784,7 +784,6 @@ static struct audio_driver oss_audio_driver =3D { .init =3D oss_audio_init, .fini =3D oss_audio_fini, .pcm_ops =3D &oss_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof (OSSVoiceOut), diff --git a/audio/paaudio.c b/audio/paaudio.c index 39bd6cfa38a..f3193b08c32 100644 --- a/audio/paaudio.c +++ b/audio/paaudio.c @@ -931,7 +931,6 @@ static struct audio_driver pa_audio_driver =3D { .init =3D qpa_audio_init, .fini =3D qpa_audio_fini, .pcm_ops =3D &qpa_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof (PAVoiceOut), diff --git a/audio/pwaudio.c b/audio/pwaudio.c index 1020cb11df1..3ce5f6507b4 100644 --- a/audio/pwaudio.c +++ b/audio/pwaudio.c @@ -843,7 +843,6 @@ static struct audio_driver pw_audio_driver =3D { .init =3D qpw_audio_init, .fini =3D qpw_audio_fini, .pcm_ops =3D &qpw_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof(PWVoiceOut), diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c index 4d8473d9ece..641357e5ee3 100644 --- a/audio/sdlaudio.c +++ b/audio/sdlaudio.c @@ -494,7 +494,6 @@ static struct audio_driver sdl_audio_driver =3D { .init =3D sdl_audio_init, .fini =3D sdl_audio_fini, .pcm_ops =3D &sdl_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof(SDLVoiceOut), diff --git a/audio/sndioaudio.c b/audio/sndioaudio.c index 1e35925a497..8eb35e1e538 100644 --- a/audio/sndioaudio.c +++ b/audio/sndioaudio.c @@ -550,7 +550,6 @@ static struct audio_driver sndio_audio_driver =3D { .init =3D sndio_audio_init, .fini =3D sndio_audio_fini, .pcm_ops =3D &sndio_pcm_ops, - .can_be_default =3D 1, .max_voices_out =3D INT_MAX, .max_voices_in =3D INT_MAX, .voice_size_out =3D sizeof(SndioVoice), diff --git a/audio/wavaudio.c b/audio/wavaudio.c index 26b03906d59..ea20fed0ccb 100644 --- a/audio/wavaudio.c +++ b/audio/wavaudio.c @@ -208,7 +208,6 @@ static struct audio_driver wav_audio_driver =3D { .init =3D wav_audio_init, .fini =3D wav_audio_fini, .pcm_ops =3D &wav_pcm_ops, - .can_be_default =3D 0, .max_voices_out =3D 1, .max_voices_in =3D 0, .voice_size_out =3D sizeof (WAVVoiceOut), diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index c07bf58dde1..2f51cf770ae 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -37,14 +37,6 @@ coverage. System emulator command line arguments -------------------------------------- =20 -``QEMU_AUDIO_`` environment variables and ``-audio-help`` (since 4.0) -''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' - -The ``-audiodev`` argument is now the preferred way to specify audio -backend settings instead of environment variables. To ease migration to -the new format, the ``-audiodev-help`` option can be used to convert -the current values of the environment variables to ``-audiodev`` options. - Creating sound card devices without ``audiodev=3D`` property (since 4.2) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' =20 diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.= rst index 276060b320c..e83ed087f6b 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -436,6 +436,12 @@ the process listing. This was replaced by the new ``pa= ssword-secret`` option which lets the password be securely provided on the command line using a ``secret`` object instance. =20 +``QEMU_AUDIO_`` environment variables and ``-audio-help`` (removed in 8.2) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +The ``-audiodev`` and ``-audio`` command line options are now the only +way to specify audio backend settings. + Creating vnc without ``audiodev=3D`` property (removed in 8.2) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' =20 diff --git a/qemu-options.hx b/qemu-options.hx index 6be621c2324..c0c5304474c 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -727,16 +727,6 @@ SRST ERST =20 =20 -HXCOMM Deprecated by -audiodev -DEF("audio-help", 0, QEMU_OPTION_audio_help, - "-audio-help show -audiodev equivalent of the currently specified = audio settings\n", - QEMU_ARCH_ALL) -SRST -``-audio-help`` - Will show the -audiodev equivalent of the currently specified - (deprecated) environment variables. -ERST - DEF("audio", HAS_ARG, QEMU_OPTION_audio, "-audio [driver=3D]driver,model=3Dvalue[,prop[=3Dvalue][,...]]\n" " specifies the audio backend and device to use;\n" diff --git a/softmmu/vl.c b/softmmu/vl.c index db04f98c36f..0d23054ccd2 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -2926,10 +2926,6 @@ void qemu_init(int argc, char **argv) } break; #endif - case QEMU_OPTION_audio_help: - audio_legacy_help(); - exit (0); - break; case QEMU_OPTION_audiodev: audio_parse_option(optarg); break; --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459385; cv=none; d=zohomail.com; s=zohoarc; b=CfMscGtvAUSbT1FqQCUvpG9xb8Cct/RmwMcuCYjp9T+RU9lRkO4ruAi6GLueKnKNz4Lpm4zE/u0anjqXkfU1BUrq73J+Yi2K+LIOz/aebVX6wuve48Wofkk56Dm+/UAhsJrY2qH1hEll48rrfyNksLZLnSAxqPc07AP1N/v4Nrs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459385; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CJXL0n4vVrzyREDY6NDWU/4wIUS60qglXl50wt0Aabs=; b=B3FTXGD8JkZSvD6SOeYSbHjR9dNpn/pDX1Zi+yyyoKWCTRCJFfAw7+DDTJ8LPpPM0EFXvdWJ6kVICF1h62OfRifra5Fg2fk6+3pBfFSBf7S00JridyA9+fSM2RhCUy/8HuYx8OXj8u1wmzFSj5QV2tJq+biNq7bKlCD9HG3TJyM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459384984924.4468274880845; Sat, 23 Sep 2023 01:56:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQG-0002ti-NZ; Sat, 23 Sep 2023 04:55:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQE-0002rM-G6 for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:30 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQC-0000Xe-U1 for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:30 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-680-JgDOJVD0OmayE7oq_qqvnA-1; Sat, 23 Sep 2023 04:55:26 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4005f0a53c5so28160925e9.3 for ; Sat, 23 Sep 2023 01:55:26 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id x10-20020a05600c21ca00b004051b994014sm9492312wmj.19.2023.09.23.01.55.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459328; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CJXL0n4vVrzyREDY6NDWU/4wIUS60qglXl50wt0Aabs=; b=HuNNUJzOVQxo3JdsH+6SCWzquWknj6cxxAAmTrWIhACR5Wcui3L+WoSUht9QdXH0RBFsEb sE56O6744RCOIisZFd8VlXot6ad2xr1UNRkpa9wfeLXUVpGq8ojCeChOfRUeMFutyGv/pu y/auhTu6so4pVmzw2czFuC6zk1l6Gvs= X-MC-Unique: JgDOJVD0OmayE7oq_qqvnA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459324; x=1696064124; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CJXL0n4vVrzyREDY6NDWU/4wIUS60qglXl50wt0Aabs=; b=vMMnAHXKlnt0pilF4cvzLqEI3NOGFHbQZzRFB1+4AVWocDihSphTfQZMM2JVecb8oX AGl47gnRPkY3vSYifueLDTnAtE2wIQCQw0pWhM0h6qwcn2zxUPxLmpS2DYB6h5ZmaVtS 0GlMECUsakgoRM+WUj88HJCOGIK4bqnaHlF99Mhm+xq0QlqsyJsT7/gYpMLQ7FDyLPtC Xup1NiF5KUj+nkaHAFFFLmWtDws71cIvibWG+yRerbnCYxklxxFegK4TziYwNHrlPh7T twjyQwuuq/LP4t547lQ8w6n+aSdWAmX43hGRaZzJuwnyYB2pMh0sXRlDGSqZ0ZTY35Xc trBw== X-Gm-Message-State: AOJu0YwV+cUiXmENKw/qzpmFAI8TL3J7/47NTZ/DVLhGpQ2vzNeD/TH5 MC1LKMid03KLt2QZdIREg7p7eKtuDKGcb/tw2EwWAZJO72LG0Om1ar8QqqBxhVzs+shvvT5oWZI PQ76AVIjteUmchA/QWuCiZX9+xI0yXSaKeyyzx5FtCnpPKLeC1MV3jABzeQNwMTskInr4sb9IK3 Q= X-Received: by 2002:a7b:c417:0:b0:405:3455:567e with SMTP id k23-20020a7bc417000000b004053455567emr1405065wmi.5.1695459324331; Sat, 23 Sep 2023 01:55:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHC7bLr0ZOF/5mHA5tMheTwbSiJ0UlFskVoxytGKMjDkgMq9+236osJ+oLK27bRT61DMmi72w== X-Received: by 2002:a7b:c417:0:b0:405:3455:567e with SMTP id k23-20020a7bc417000000b004053455567emr1405050wmi.5.1695459323995; Sat, 23 Sep 2023 01:55:23 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 08/13] Introduce machine property "audiodev" Date: Sat, 23 Sep 2023 10:55:01 +0200 Message-ID: <20230923085507.399260-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459386699100014 Content-Type: text/plain; charset="utf-8" From: Martin Kletzander Many machine types have default audio devices with no way to set the underl= ying audiodev. Instead of adding an option for each and every one of them, this= new property can be used as a default during machine initialisation when creati= ng such devices. Signed-off-by: Martin Kletzander [Make the property optional, instead of including it in all machines. - Pao= lo] Signed-off-by: Paolo Bonzini --- hw/core/machine.c | 33 +++++++++++++++++++++++++++++++++ include/hw/boards.h | 7 +++++++ 2 files changed, 40 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index da699cf4e14..6291c0dccaa 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -38,6 +38,7 @@ #include "exec/confidential-guest-support.h" #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-pci.h" +#include "audio/audio.h" =20 GlobalProperty hw_compat_8_1[] =3D {}; const size_t hw_compat_8_1_len =3D G_N_ELEMENTS(hw_compat_8_1); @@ -682,6 +683,26 @@ bool device_type_is_dynamic_sysbus(MachineClass *mc, c= onst char *type) return allowed; } =20 +static char *machine_get_audiodev(Object *obj, Error **errp) +{ + MachineState *ms =3D MACHINE(obj); + + return g_strdup(ms->audiodev); +} + +static void machine_set_audiodev(Object *obj, const char *value, + Error **errp) +{ + MachineState *ms =3D MACHINE(obj); + + if (!audio_state_by_name(value, errp)) { + return; + } + + g_free(ms->audiodev); + ms->audiodev =3D g_strdup(value); +} + HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine) { int i; @@ -927,6 +948,17 @@ out_free: qapi_free_BootConfiguration(config); } =20 +void machine_add_audiodev_property(MachineClass *mc) +{ + ObjectClass *oc =3D OBJECT_CLASS(mc); + + object_class_property_add_str(oc, "audiodev", + machine_get_audiodev, + machine_set_audiodev); + object_class_property_set_description(oc, "audiodev", + "Audiodev to use for default mac= hine devices"); +} + static void machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -1132,6 +1164,7 @@ static void machine_finalize(Object *obj) g_free(ms->device_memory); g_free(ms->nvdimms_state); g_free(ms->numa_state); + g_free(ms->audiodev); } =20 bool machine_usb(MachineState *machine) diff --git a/include/hw/boards.h b/include/hw/boards.h index 6c67af196a3..b5153f5f85b 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -24,6 +24,7 @@ OBJECT_DECLARE_TYPE(MachineState, MachineClass, MACHINE) =20 extern MachineState *current_machine; =20 +void machine_add_audiodev_property(MachineClass *mc); void machine_run_board_init(MachineState *machine, const char *mem_path, E= rror **errp); bool machine_usb(MachineState *machine); int machine_phandle_start(MachineState *machine); @@ -358,6 +359,12 @@ struct MachineState { MemoryRegion *ram; DeviceMemoryState *device_memory; =20 + /* + * Included in MachineState for simplicity, but not supported + * unless machine_add_audiodev_property is called. + */ + char *audiodev; + ram_addr_t ram_size; ram_addr_t maxram_size; uint64_t ram_slots; --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459406; cv=none; d=zohomail.com; s=zohoarc; b=NYPUFIuA8vys9vs8g+PRNpr1hfg3ZnPV6GNDyPqYEqt2o15UIBV/wfpWBeOAWQoxrPn8MZLkBCHFAa0n4nqCqLkAFR5vaaMzJfE3i5qJDDZZtuGyOhwAE9AgiBwb0jrmCCgjpzoDH16Z4iBVGAyD58Z1ENL3VIRaPbVqF3tk1NU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459406; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eYUtdTr60CLv5P1H2OfOWHbBZ7FzVeIg9uSPjv5Hm2s=; b=e2bH91fGpXa6HUst0BX2s6D83VLhd9gHZZOT7BTcSKMh5LefrU+4Rr9OITYjN1Bn37yXKWe1737wuxAwFMsKsrzcFirZnPvgQzd524bPSDtUl41uZHPPU+MSZCpkVJa4139oUjRJk/b0HFx4InzdBLvrkVmvbvkut91aUbj+4ls= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459406450458.6464250819462; Sat, 23 Sep 2023 01:56:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQM-0002x3-Vh; Sat, 23 Sep 2023 04:55:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQL-0002wN-9k for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQF-0000Y8-C4 for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:37 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-341-7O_Pe9l5PCyqMGgoGMaVvg-1; Sat, 23 Sep 2023 04:55:28 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-405629826ccso2998885e9.0 for ; Sat, 23 Sep 2023 01:55:28 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id d4-20020adffd84000000b0031f34a395e7sm6353181wrr.45.2023.09.23.01.55.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eYUtdTr60CLv5P1H2OfOWHbBZ7FzVeIg9uSPjv5Hm2s=; b=eZfDtoBsDh2ZbAu88UY141UFPOFcASiVstZE8VhphryDQxEZea1kqDYAj8TKtHwMtXHM2v iQRL2OJ2HKxKrROuTT99QhJELg52+kjVnPtkmGo3Xr/5oJUaLWilNx9UQK8CHdcjiX1bF9 I7a70PTuNJl4bQI25DtoI6PcdGoz94E= X-MC-Unique: 7O_Pe9l5PCyqMGgoGMaVvg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459326; x=1696064126; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eYUtdTr60CLv5P1H2OfOWHbBZ7FzVeIg9uSPjv5Hm2s=; b=i1Ipd5mEUWWV3iH/RwZy8kQcZtx2oLMCBT0ENN3llJEQE5eiJjzsC2r6/dKDUUJnZu EIuyN79dOab/F2sZVB73F4BiLV/nzU7i60mBW4gXgiFyzNCR73MJhQJ3TuI1WbpfqYhA N9GAuRuUyOWI/e5CnhJZN39b+IS4Dj6FqSSa6SnAdx/VZFp3UCVWldy5Lf+Qj5JaED/n GEVwPWe2v8eN0jtXktBYJvrnLwcSe6V6QajcTI693kUZvxlVOEO4QL+4ZdL3jEwaCVHK Fk7kjLCBxvA5OcHz5lF5U3UjM6WevPrRRg0LOw1XO8SvpJoC9WYZ1zEZnsQq8G4hCg59 a2dQ== X-Gm-Message-State: AOJu0Yy8jRXx4nCTl3LRNGGfG6nsT0aEAKO1Db5OZ4G5YGTNtscf9nIN Hlu34EHUyhSFOiqhEC0t5d7IPt6hNguB55lsZGOY9gi0+31Z7jLgCj+LEhsl6RI+8GI5ggrPYIp AeS7mwrcCWHtxzqq3ePz5ZHmLY1nHKBZ3o/o5orc3xbxqKPX6BbbkHFk41Co4QJUbpirl5FC02h E= X-Received: by 2002:a7b:c8ce:0:b0:3f5:fff8:d4f3 with SMTP id f14-20020a7bc8ce000000b003f5fff8d4f3mr1232608wml.7.1695459326514; Sat, 23 Sep 2023 01:55:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEJFd4s1UjP9xMQvRlCglbZ8tC5TiWeyGAi6K+mEy9rrq6nOLmICtTHdrvdUpYqyiPCOeTRXg== X-Received: by 2002:a7b:c8ce:0:b0:3f5:fff8:d4f3 with SMTP id f14-20020a7bc8ce000000b003f5fff8d4f3mr1232592wml.7.1695459326063; Sat, 23 Sep 2023 01:55:26 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 09/13] hw/arm: Support machine-default audiodev with fallback Date: Sat, 23 Sep 2023 10:55:02 +0200 Message-ID: <20230923085507.399260-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459408330100003 Content-Type: text/plain; charset="utf-8" From: Martin Kletzander Signed-off-by: Martin Kletzander Signed-off-by: Paolo Bonzini --- hw/arm/integratorcp.c | 11 ++++++++++- hw/arm/musicpal.c | 11 +++++++++-- hw/arm/nseries.c | 4 ++++ hw/arm/omap2.c | 5 +++++ hw/arm/palm.c | 2 ++ hw/arm/realview.c | 12 ++++++++++++ hw/arm/spitz.c | 17 ++++++++++++----- hw/arm/versatilepb.c | 8 ++++++++ hw/arm/vexpress.c | 5 +++++ hw/arm/xlnx-zcu102.c | 6 ++++++ hw/arm/z2.c | 15 ++++++++++++++- hw/input/tsc210x.c | 5 +++++ 12 files changed, 92 insertions(+), 9 deletions(-) diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index b109ece3ae0..d176e9af7ee 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -27,6 +27,7 @@ #include "hw/irq.h" #include "hw/sd/sd.h" #include "qom/object.h" +#include "audio/audio.h" =20 #define TYPE_INTEGRATOR_CM "integrator_core" OBJECT_DECLARE_SIMPLE_TYPE(IntegratorCMState, INTEGRATOR_CM) @@ -660,7 +661,13 @@ static void integratorcp_init(MachineState *machine) &error_fatal); } =20 - sysbus_create_varargs("pl041", 0x1d000000, pic[25], NULL); + dev =3D qdev_new("pl041"); + if (machine->audiodev) { + qdev_prop_set_string(dev, "audiodev", machine->audiodev); + } + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x1d000000); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[25]); =20 if (nd_table[0].used) smc91c111_init(&nd_table[0], 0xc8000000, pic[27]); @@ -678,6 +685,8 @@ static void integratorcp_machine_init(MachineClass *mc) mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("arm926"); mc->default_ram_id =3D "integrator.ram"; + + machine_add_audiodev_property(mc); } =20 DEFINE_MACHINE("integratorcp", integratorcp_machine_init) diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index dc4e43e0ee2..9703bfb97fb 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -37,9 +37,9 @@ #include "qemu/cutils.h" #include "qom/object.h" #include "hw/net/mv88w8618_eth.h" +#include "audio/audio.h" #include "qemu/error-report.h" =20 - #define MP_MISC_BASE 0x80002000 #define MP_MISC_SIZE 0x00001000 =20 @@ -1326,7 +1326,12 @@ static void musicpal_init(MachineState *machine) qdev_connect_gpio_out(key_dev, i, qdev_get_gpio_in(dev, i + 15)); } =20 - wm8750_dev =3D i2c_slave_create_simple(i2c, TYPE_WM8750, MP_WM_ADDR); + wm8750_dev =3D i2c_slave_new(TYPE_WM8750, MP_WM_ADDR); + if (machine->audiodev) { + qdev_prop_set_string(DEVICE(wm8750_dev), "audiodev", machine->audi= odev); + } + i2c_slave_realize_and_unref(wm8750_dev, i2c, &error_abort); + dev =3D qdev_new(TYPE_MV88W8618_AUDIO); s =3D SYS_BUS_DEVICE(dev); object_property_set_link(OBJECT(dev), "wm8750", OBJECT(wm8750_dev), @@ -1347,6 +1352,8 @@ static void musicpal_machine_init(MachineClass *mc) mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("arm926"); mc->default_ram_size =3D MP_RAM_DEFAULT_SIZE; mc->default_ram_id =3D "musicpal.ram"; + + machine_add_audiodev_property(mc); } =20 DEFINE_MACHINE("musicpal", musicpal_machine_init) diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c index 9e49e9e1776..35aff46b4b4 100644 --- a/hw/arm/nseries.c +++ b/hw/arm/nseries.c @@ -1432,6 +1432,8 @@ static void n800_class_init(ObjectClass *oc, void *da= ta) /* Actually two chips of 0x4000000 bytes each */ mc->default_ram_size =3D 0x08000000; mc->default_ram_id =3D "omap2.dram"; + + machine_add_audiodev_property(mc); } =20 static const TypeInfo n800_type =3D { @@ -1452,6 +1454,8 @@ static void n810_class_init(ObjectClass *oc, void *da= ta) /* Actually two chips of 0x4000000 bytes each */ mc->default_ram_size =3D 0x08000000; mc->default_ram_id =3D "omap2.dram"; + + machine_add_audiodev_property(mc); } =20 static const TypeInfo n810_type =3D { diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c index d5a2ae7af6e..41b1f596dca 100644 --- a/hw/arm/omap2.c +++ b/hw/arm/omap2.c @@ -37,6 +37,7 @@ #include "hw/block/flash.h" #include "hw/arm/soc_dma.h" #include "hw/sysbus.h" +#include "hw/boards.h" #include "audio/audio.h" =20 /* Enhanced Audio Controller (CODEC only) */ @@ -609,6 +610,10 @@ static struct omap_eac_s *omap_eac_init(struct omap_ta= rget_agent_s *ta, s->codec.txdrq =3D *drq; omap_eac_reset(s); =20 + if (current_machine->audiodev) { + s->codec.card.name =3D g_strdup(current_machine->audiodev); + s->codec.card.state =3D audio_state_by_name(s->codec.card.name, &e= rror_fatal); + } AUD_register_card("OMAP EAC", &s->codec.card); =20 memory_region_init_io(&s->iomem, NULL, &omap_eac_ops, s, "omap.eac", diff --git a/hw/arm/palm.c b/hw/arm/palm.c index 17c11ac4cec..b86f2c331bb 100644 --- a/hw/arm/palm.c +++ b/hw/arm/palm.c @@ -310,6 +310,8 @@ static void palmte_machine_init(MachineClass *mc) mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("ti925t"); mc->default_ram_size =3D 0x02000000; mc->default_ram_id =3D "omap1.dram"; + + machine_add_audiodev_property(mc); } =20 DEFINE_MACHINE("cheetah", palmte_machine_init) diff --git a/hw/arm/realview.c b/hw/arm/realview.c index a5aa2f046ae..8f89526596c 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -29,6 +29,7 @@ #include "hw/irq.h" #include "hw/i2c/arm_sbcon_i2c.h" #include "hw/sd/sd.h" +#include "audio/audio.h" =20 #define SMP_BOOT_ADDR 0xe0000000 #define SMP_BOOTREG_ADDR 0x10000030 @@ -207,6 +208,9 @@ static void realview_init(MachineState *machine, =20 pl041 =3D qdev_new("pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); + if (machine->audiodev) { + qdev_prop_set_string(pl041, "audiodev", machine->audiodev); + } sysbus_realize_and_unref(SYS_BUS_DEVICE(pl041), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, 0x10004000); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, pic[19]); @@ -412,6 +416,8 @@ static void realview_eb_class_init(ObjectClass *oc, voi= d *data) mc->block_default_type =3D IF_SCSI; mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("arm926"); + + machine_add_audiodev_property(mc); } =20 static const TypeInfo realview_eb_type =3D { @@ -430,6 +436,8 @@ static void realview_eb_mpcore_class_init(ObjectClass *= oc, void *data) mc->max_cpus =3D 4; mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("arm11mpcore"); + + machine_add_audiodev_property(mc); } =20 static const TypeInfo realview_eb_mpcore_type =3D { @@ -446,6 +454,8 @@ static void realview_pb_a8_class_init(ObjectClass *oc, = void *data) mc->init =3D realview_pb_a8_init; mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("cortex-a8"); + + machine_add_audiodev_property(mc); } =20 static const TypeInfo realview_pb_a8_type =3D { @@ -463,6 +473,8 @@ static void realview_pbx_a9_class_init(ObjectClass *oc,= void *data) mc->max_cpus =3D 4; mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("cortex-a9"); + + machine_add_audiodev_property(mc); } =20 static const TypeInfo realview_pbx_a9_type =3D { diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c index f732fe0acf9..cc268c6ac0b 100644 --- a/hw/arm/spitz.c +++ b/hw/arm/spitz.c @@ -35,6 +35,7 @@ #include "exec/address-spaces.h" #include "cpu.h" #include "qom/object.h" +#include "audio/audio.h" =20 enum spitz_model_e { spitz, akita, borzoi, terrier }; =20 @@ -774,15 +775,19 @@ static void spitz_wm8750_addr(void *opaque, int line,= int level) i2c_slave_set_address(wm, SPITZ_WM_ADDRL); } =20 -static void spitz_i2c_setup(PXA2xxState *cpu) +static void spitz_i2c_setup(MachineState *machine, PXA2xxState *cpu) { /* Attach the CPU on one end of our I2C bus. */ I2CBus *bus =3D pxa2xx_i2c_bus(cpu->i2c[0]); =20 - DeviceState *wm; - /* Attach a WM8750 to the bus */ - wm =3D DEVICE(i2c_slave_create_simple(bus, TYPE_WM8750, 0)); + I2CSlave *i2c_dev =3D i2c_slave_new(TYPE_WM8750, 0); + DeviceState *wm =3D DEVICE(i2c_dev); + + if (machine->audiodev) { + qdev_prop_set_string(wm, "audiodev", machine->audiodev); + } + i2c_slave_realize_and_unref(i2c_dev, bus, &error_abort); =20 spitz_wm8750_addr(wm, 0, 0); qdev_connect_gpio_out(cpu->gpio, SPITZ_GPIO_WM, @@ -1013,7 +1018,7 @@ static void spitz_common_init(MachineState *machine) =20 spitz_gpio_setup(mpu, (model =3D=3D akita) ? 1 : 2); =20 - spitz_i2c_setup(mpu); + spitz_i2c_setup(machine, mpu); =20 if (model =3D=3D akita) spitz_akita_i2c_setup(mpu); @@ -1037,6 +1042,8 @@ static void spitz_common_class_init(ObjectClass *oc, = void *data) mc->block_default_type =3D IF_IDE; mc->ignore_memory_transaction_failures =3D true; mc->init =3D spitz_common_init; + + machine_add_audiodev_property(mc); } =20 static const TypeInfo spitz_common_info =3D { diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 05b9462a5b7..2f22dc890f4 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -26,6 +26,7 @@ #include "hw/char/pl011.h" #include "hw/sd/sd.h" #include "qom/object.h" +#include "audio/audio.h" =20 #define VERSATILE_FLASH_ADDR 0x34000000 #define VERSATILE_FLASH_SIZE (64 * 1024 * 1024) @@ -343,6 +344,9 @@ static void versatile_init(MachineState *machine, int b= oard_id) /* Add PL041 AACI Interface to the LM4549 codec */ pl041 =3D qdev_new("pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); + if (machine->audiodev) { + qdev_prop_set_string(pl041, "audiodev", machine->audiodev); + } sysbus_realize_and_unref(SYS_BUS_DEVICE(pl041), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, 0x10004000); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, sic[24]); @@ -416,6 +420,8 @@ static void versatilepb_class_init(ObjectClass *oc, voi= d *data) mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("arm926"); mc->default_ram_id =3D "versatile.ram"; + + machine_add_audiodev_property(mc); } =20 static const TypeInfo versatilepb_type =3D { @@ -434,6 +440,8 @@ static void versatileab_class_init(ObjectClass *oc, voi= d *data) mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("arm926"); mc->default_ram_id =3D "versatile.ram"; + + machine_add_audiodev_property(mc); } =20 static const TypeInfo versatileab_type =3D { diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 56abadd9b8b..8ff37f52ca1 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -44,6 +44,7 @@ #include "hw/i2c/arm_sbcon_i2c.h" #include "hw/sd/sd.h" #include "qom/object.h" +#include "audio/audio.h" =20 #define VEXPRESS_BOARD_ID 0x8e0 #define VEXPRESS_FLASH_SIZE (64 * 1024 * 1024) @@ -613,6 +614,9 @@ static void vexpress_common_init(MachineState *machine) =20 pl041 =3D qdev_new("pl041"); qdev_prop_set_uint32(pl041, "nc_fifo_depth", 512); + if (machine->audiodev) { + qdev_prop_set_string(pl041, "audiodev", machine->audiodev); + } sysbus_realize_and_unref(SYS_BUS_DEVICE(pl041), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(pl041), 0, map[VE_PL041]); sysbus_connect_irq(SYS_BUS_DEVICE(pl041), 0, pic[11]); @@ -776,6 +780,7 @@ static void vexpress_class_init(ObjectClass *oc, void *= data) mc->ignore_memory_transaction_failures =3D true; mc->default_ram_id =3D "vexpress.highmem"; =20 + machine_add_audiodev_property(mc); object_class_property_add_bool(oc, "secure", vexpress_get_secure, vexpress_set_secure); object_class_property_set_description(oc, "secure", diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c index 21483f75fd9..c5a07cfe195 100644 --- a/hw/arm/xlnx-zcu102.c +++ b/hw/arm/xlnx-zcu102.c @@ -24,6 +24,7 @@ #include "sysemu/device_tree.h" #include "qom/object.h" #include "net/can_emu.h" +#include "audio/audio.h" =20 struct XlnxZCU102 { MachineState parent_obj; @@ -143,6 +144,10 @@ static void xlnx_zcu102_init(MachineState *machine) =20 object_initialize_child(OBJECT(machine), "soc", &s->soc, TYPE_XLNX_ZYN= QMP); =20 + if (machine->audiodev) { + qdev_prop_set_string(DEVICE(&s->soc.dp), "audiodev", machine->audi= odev); + } + object_property_set_link(OBJECT(&s->soc), "ddr-ram", OBJECT(machine->r= am), &error_abort); object_property_set_bool(OBJECT(&s->soc), "secure", s->secure, @@ -275,6 +280,7 @@ static void xlnx_zcu102_machine_class_init(ObjectClass = *oc, void *data) mc->default_cpus =3D XLNX_ZYNQMP_NUM_APU_CPUS; mc->default_ram_id =3D "ddr-ram"; =20 + machine_add_audiodev_property(mc); object_class_property_add_bool(oc, "secure", zcu102_get_secure, zcu102_set_secure); object_class_property_set_description(oc, "secure", diff --git a/hw/arm/z2.c b/hw/arm/z2.c index dc25304290a..d9a08fa67b2 100644 --- a/hw/arm/z2.c +++ b/hw/arm/z2.c @@ -27,6 +27,7 @@ #include "exec/address-spaces.h" #include "cpu.h" #include "qom/object.h" +#include "qapi/error.h" =20 #ifdef DEBUG_Z2 #define DPRINTF(fmt, ...) \ @@ -307,6 +308,7 @@ static void z2_init(MachineState *machine) void *z2_lcd; I2CBus *bus; DeviceState *wm; + I2CSlave *i2c_dev; =20 /* Setup CPU & memory */ mpu =3D pxa270_init(z2_binfo.ram_size, machine->cpu_type); @@ -328,8 +330,17 @@ static void z2_init(MachineState *machine) type_register_static(&aer915_info); z2_lcd =3D ssi_create_peripheral(mpu->ssp[1], TYPE_ZIPIT_LCD); bus =3D pxa2xx_i2c_bus(mpu->i2c[0]); + i2c_slave_create_simple(bus, TYPE_AER915, 0x55); - wm =3D DEVICE(i2c_slave_create_simple(bus, TYPE_WM8750, 0x1b)); + + i2c_dev =3D i2c_slave_new(TYPE_WM8750, 0x1b); + wm =3D DEVICE(i2c_dev); + + if (machine->audiodev) { + qdev_prop_set_string(wm, "audiodev", machine->audiodev); + } + i2c_slave_realize_and_unref(i2c_dev, bus, &error_abort); + mpu->i2s->opaque =3D wm; mpu->i2s->codec_out =3D wm8750_dac_dat; mpu->i2s->codec_in =3D wm8750_adc_dat; @@ -348,6 +359,8 @@ static void z2_machine_init(MachineClass *mc) mc->init =3D z2_init; mc->ignore_memory_transaction_failures =3D true; mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("pxa270-c5"); + + machine_add_audiodev_property(mc); } =20 DEFINE_MACHINE("z2", z2_machine_init) diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c index f568759e05a..e7960a50696 100644 --- a/hw/input/tsc210x.c +++ b/hw/input/tsc210x.c @@ -27,6 +27,7 @@ #include "sysemu/reset.h" #include "ui/console.h" #include "hw/arm/omap.h" /* For I2SCodec */ +#include "hw/boards.h" /* for current_machine */ #include "hw/input/tsc2xxx.h" #include "hw/irq.h" #include "migration/vmstate.h" @@ -1097,6 +1098,10 @@ static void tsc210x_init(TSC210xState *s, =20 qemu_add_mouse_event_handler(tsc210x_touchscreen_event, s, 1, name); =20 + if (current_machine->audiodev) { + s->card.name =3D g_strdup(current_machine->audiodev); + s->card.state =3D audio_state_by_name(s->card.name, &error_fatal); + } AUD_register_card(s->name, &s->card); =20 qemu_register_reset((void *) tsc210x_reset, s); --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459465; cv=none; d=zohomail.com; s=zohoarc; b=SQucgulBcMliPZj8K+iP/3qgsvdvUAYsFExBfNmBFB5z0uhzxx/PzotESqm2Pzfgl/KUpqumioN+i2hrMCdqBioZq5hCnQZUlW9nav+2UGXpZMCwzgW8q+INxCG+uUGYmcodLbJuEiPRxEMJEiP4m3iFH01uvlUQgv+7p3kt3Io= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459465; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5QcmQw2PVuW7Kd2iuNxUNyWZSEU9TNIASS3C9a1HLJI=; b=OD+bFtXhUFaEZmmt+tZfm/jGUSV4bFCSLT8c7tXIAXea7JZfF+C1u+uIU7qhRAPoxVb9eyw0Wx8ivTOFqfpANTje5bZzHVemKKZ2VG1KeUDBIgXG3gJ2JrYVrnGh2h5qyMXkTELpBO2NIv1hgh6fD1rUbD1/6H+YIdbepWmZBjY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459465514312.1723396532925; Sat, 23 Sep 2023 01:57:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQM-0002x0-L4; Sat, 23 Sep 2023 04:55:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQK-0002w6-Jp for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQH-0000YE-16 for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:36 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-148-CDU6GxJGMhOeCtaqVxeLMQ-1; Sat, 23 Sep 2023 04:55:30 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-3f5df65fa35so26868005e9.3 for ; Sat, 23 Sep 2023 01:55:30 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id 12-20020a05600c240c00b003fc02e8ea68sm9526563wmp.13.2023.09.23.01.55.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459332; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5QcmQw2PVuW7Kd2iuNxUNyWZSEU9TNIASS3C9a1HLJI=; b=P2yZikTg5iN04G/w4ecVdxOOF1JZziyRszjAsxNlnDsepd0LwcgsvoT5yIpKAfx9vjHSAG wX35M+t7P8373XgskiAa5QXLQf5rkPzxV2V27W778pRszAeS77mE5YgwisCUxvNEK4O7kx pqAwilbWrOFZbf/JE45ce8ntD+zIoOQ= X-MC-Unique: CDU6GxJGMhOeCtaqVxeLMQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459328; x=1696064128; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5QcmQw2PVuW7Kd2iuNxUNyWZSEU9TNIASS3C9a1HLJI=; b=vpUpyYICxfqMYqi30ZsOvgbiiyfTxAF9y3k3gBdpK97wY8/h/BDNyckmIA3DunOBjd pzLQlCiA9pXfv7zVEtqjr4gK2Pq8feymmTfScBaCwrvPNKt0wVvqKoaZbTHK0g853V/l 3MmFbqzGxsJpmE78+zTKvVW9rvb5rGax7082Inya+Jr3NmL0tsWrX94J5R/ylUaDfDxj jzNBPADaf2lc/QZNkk2oRnTnARULL2Mm4jtxXQSzPRkcr3q3jTwD+zX1mExFR+/ZzXir fZkvUs0u9vjil0RDnn309zQR/pePdcERZebYWaqO66I4OgPIdX3/aU1tbnU32KcxcVql oM+A== X-Gm-Message-State: AOJu0Yw/cfNto/p+6yD13kqoOrKmSnBxFxIO3cMgDnzlIeRUq80Vafji bX08xY9QowRI5xPdyHhjKvX1vsSF9r7u9UpU7qW2JWeMKRleKKMp5OnS1p4P1KGl5zq5j4naTug bpSO5dUyhU/wHbz/Mipbwu1nVAchOzHJnH6lsVsoqp65tShJMhWanXurBOTCUSLjk9DFbLRSpaQ Q= X-Received: by 2002:a7b:ce93:0:b0:405:3ae6:2400 with SMTP id q19-20020a7bce93000000b004053ae62400mr1270645wmj.23.1695459328682; Sat, 23 Sep 2023 01:55:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG99dLGvM9KyFf+pHPA+1u8E1hzV47sWyTWqSMO+pYFMbKO3UNEV8YEVZ1DiPzwNy2IQC3reg== X-Received: by 2002:a7b:ce93:0:b0:405:3ae6:2400 with SMTP id q19-20020a7bce93000000b004053ae62400mr1270631wmj.23.1695459328351; Sat, 23 Sep 2023 01:55:28 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 10/13] hw/ppc: Support machine-default audiodev with fallback Date: Sat, 23 Sep 2023 10:55:03 +0200 Message-ID: <20230923085507.399260-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459466598100001 Content-Type: text/plain; charset="utf-8" From: Martin Kletzander Signed-off-by: Martin Kletzander Signed-off-by: Paolo Bonzini --- hw/ppc/prep.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index f6fd35fcb9e..137276bcb92 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -45,6 +45,7 @@ #include "trace.h" #include "elf.h" #include "qemu/units.h" +#include "audio/audio.h" =20 /* SMP is not enabled, for now */ #define MAX_CPUS 1 @@ -310,6 +311,10 @@ static void ibm_40p_init(MachineState *machine) dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "iobase", 0x830); qdev_prop_set_uint32(dev, "irq", 10); + + if (machine->audiodev) { + qdev_prop_set_string(dev, "audiodev", machine->audiodev); + } isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); =20 isa_dev =3D isa_new("pc87312"); @@ -426,6 +431,8 @@ static void ibm_40p_machine_init(MachineClass *mc) mc->default_cpu_type =3D POWERPC_CPU_TYPE_NAME("604"); mc->default_display =3D "std"; mc->default_nic =3D "pcnet"; + + machine_add_audiodev_property(mc); } =20 DEFINE_MACHINE("40p", ibm_40p_machine_init) --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459385; cv=none; d=zohomail.com; s=zohoarc; b=h2D+XL6LE5Ly3qAdNvwDDInbdDhBgp/bCl8YI9GeyfgJXswEGTGaA0xqHbk+JUkj/rQaEc34o8fTHNWEgIUkWzUixMN4wRpkW9aBcD9jXzCyt1XOPWlH8izOf33/BloGgMurwLCh0E2AIecmQk4Ou/3LYV359vIpuigm8ZWmqnk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459385; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vorMlXXWqm9+sRu8PR5rNyx/Cs0unkBXlZ5UKunaMu4=; b=Zujd648Rr7ZM8dXDnA8uTHBoYcDP0CdyfYF5IvaWsAanxTmtkff0qq+Dafp+hRXOgFzooX30+2wCBqMmoA4oY9GfZ/n/AGzCeCsLd4x6b6fq0d9QE53M9Dz6qzAMCNEfitmcVvdyQzv0tbU1ZlbszpM4r18YLb3fGOqurNKRhs4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459385000215.94676458713877; Sat, 23 Sep 2023 01:56:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQN-0002x4-79; Sat, 23 Sep 2023 04:55:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQK-0002w7-Jh for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQH-0000YM-TT for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:36 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-212-afRqk72GM0WoGVIX795tWg-1; Sat, 23 Sep 2023 04:55:31 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-405629826ccso2999065e9.0 for ; Sat, 23 Sep 2023 01:55:31 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id c9-20020a05600c0ac900b003fbb25da65bsm6701341wmr.30.2023.09.23.01.55.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459333; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vorMlXXWqm9+sRu8PR5rNyx/Cs0unkBXlZ5UKunaMu4=; b=AxuwXFSjTMhC4vvZbulqr2ywQLk43+TEQ83WCuet8NnqJOph2hQ1XwXH5eX8KjQLIH/1jf gXrZ493LsZsfKIWlEUSqkygJXD5AhY9XOS6V3HINNXpQH8i/fY8M1TdY2zASZCRSQCJQ+3 QdQYDrlc9P/wAfnQKIKqacv+4JXDdpQ= X-MC-Unique: afRqk72GM0WoGVIX795tWg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459330; x=1696064130; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vorMlXXWqm9+sRu8PR5rNyx/Cs0unkBXlZ5UKunaMu4=; b=WFQ3ZJ6RYIw+q42LDBCc8stlwjKhOsIqfTUbPfmHV6u1c/nhKvQkrt9CTxe3EuYs1E tS3Dc4F0DtApI1LhW2b01JhlN9w7EdhIgw93l922/2Z9ca0hH8ROZS6h2A00jIAakCYT 4G69YuyUQWpJX3E6K5Xrx8/wPbTTTyugLH4jglq41R7I4Q5eGp9AgRlQaH9QNCUrHccd D8eZm1rSlFkM+4u7YSH9FKnPrV8zhQGi/iF/Cb7m9eIvAaqIvLVgB7VCmxLG4XIVz5Lx 16t9Nzl0HcZ7Mekad8Oz4hvFsx7JvvMcC5+4YUd1Xy3/m+pxS7UX3UH1vCVBiPsBFIWx axgg== X-Gm-Message-State: AOJu0YyjrP0/K2Pz7kvJcEkKab/+A2hC9BTdjf0kt2LT+pmT0sJZY7Hd j9+tjNeW1HmWla5O/66+URTB9G0Onaoz769POMwmKLE8mZmx4yuOSwrqqDXrobeer3Dckk2yHlb CQD18RF4MTJbxWTV8aN16xgizbtrsFboufYo1Epxp099VGCSyaL+D08G0gNq0E6RxFWXlDPhoso s= X-Received: by 2002:a05:600c:240a:b0:3f9:255e:ee3b with SMTP id 10-20020a05600c240a00b003f9255eee3bmr1293337wmp.30.1695459330291; Sat, 23 Sep 2023 01:55:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH1jy3mz7jMWfrHFSipw/I9Q968tGq6M0rlA/l4Yt/2k6FDmLofvOW+GZ6UBPi/d8SBmiAvhw== X-Received: by 2002:a05:600c:240a:b0:3f9:255e:ee3b with SMTP id 10-20020a05600c240a00b003f9255eee3bmr1293327wmp.30.1695459330030; Sat, 23 Sep 2023 01:55:30 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 11/13] vt82c686: Support machine-default audiodev with fallback Date: Sat, 23 Sep 2023 10:55:04 +0200 Message-ID: <20230923085507.399260-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459386675100013 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- hw/isa/vt82c686.c | 2 ++ hw/mips/fuloong2e.c | 13 ++++++++++--- hw/ppc/pegasos2.c | 10 ++++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c index 57bdfb4e78c..3ec8e43708a 100644 --- a/hw/isa/vt82c686.c +++ b/hw/isa/vt82c686.c @@ -578,6 +578,8 @@ static void via_isa_init(Object *obj) object_initialize_child(obj, "uhci2", &s->uhci[1], TYPE_VT82C686B_USB_= UHCI); object_initialize_child(obj, "ac97", &s->ac97, TYPE_VIA_AC97); object_initialize_child(obj, "mc97", &s->mc97, TYPE_VIA_MC97); + + object_property_add_alias(obj, "audiodev", OBJECT(&s->ac97), "audiodev= "); } =20 static const TypeInfo via_isa_info =3D { diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index c827f615f3b..df2be188257 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -41,6 +41,7 @@ #include "sysemu/reset.h" #include "sysemu/sysemu.h" #include "qemu/error-report.h" +#include "audio/audio.h" =20 #define ENVP_PADDR 0x2000 #define ENVP_VADDR cpu_mips_phys_to_kseg0(NULL, ENVP_PADDR) @@ -295,9 +296,13 @@ static void mips_fuloong2e_init(MachineState *machine) pci_bus =3D bonito_init((qemu_irq *)&(env->irq[2])); =20 /* South bridge -> IP5 */ - pci_dev =3D pci_create_simple_multifunction(pci_bus, - PCI_DEVFN(FULOONG2E_VIA_SLOT= , 0), - TYPE_VT82C686B_ISA); + pci_dev =3D pci_new_multifunction(PCI_DEVFN(FULOONG2E_VIA_SLOT, 0), + TYPE_VT82C686B_ISA); + if (machine->audiodev) { + qdev_prop_set_string(DEVICE(pci_dev), "audiodev", machine->audiode= v); + } + pci_realize_and_unref(pci_dev, pci_bus, &error_abort); + object_property_add_alias(OBJECT(machine), "rtc-time", object_resolve_path_component(OBJECT(pci_dev= ), "rtc"), @@ -337,6 +342,8 @@ static void mips_fuloong2e_machine_init(MachineClass *m= c) mc->default_ram_size =3D 256 * MiB; mc->default_ram_id =3D "fuloong2e.ram"; mc->minimum_page_bits =3D 14; + + machine_add_audiodev_property(mc); } =20 DEFINE_MACHINE("fuloong2e", mips_fuloong2e_machine_init) diff --git a/hw/ppc/pegasos2.c b/hw/ppc/pegasos2.c index bd397cf2b5c..61c302895c9 100644 --- a/hw/ppc/pegasos2.c +++ b/hw/ppc/pegasos2.c @@ -37,6 +37,7 @@ #include "qemu/datadir.h" #include "sysemu/device_tree.h" #include "hw/ppc/vof.h" +#include "audio/audio.h" =20 #include =20 @@ -180,8 +181,11 @@ static void pegasos2_init(MachineState *machine) pci_bus_irqs(pci_bus, pegasos2_pci_irq, pm, PCI_NUM_PINS); =20 /* VIA VT8231 South Bridge (multifunction PCI device) */ - via =3D OBJECT(pci_create_simple_multifunction(pci_bus, PCI_DEVFN(12, = 0), - TYPE_VT8231_ISA)); + via =3D OBJECT(pci_new_multifunction(PCI_DEVFN(12, 0), TYPE_VT8231_ISA= )); + if (machine->audiodev) { + qdev_prop_set_string(DEVICE(via), "audiodev", machine->audiodev); + } + pci_realize_and_unref(PCI_DEVICE(via), pci_bus, &error_abort); for (i =3D 0; i < PCI_NUM_PINS; i++) { pm->via_pirq[i] =3D qdev_get_gpio_in_named(DEVICE(via), "pirq", i); } @@ -564,6 +568,8 @@ static void pegasos2_machine_class_init(ObjectClass *oc= , void *data) vhc->encode_hpt_for_kvm_pr =3D vhyp_encode_hpt_for_kvm_pr; =20 vmc->setprop =3D pegasos2_setprop; + + machine_add_audiodev_property(mc); } =20 static const TypeInfo pegasos2_machine_info =3D { --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459401; cv=none; d=zohomail.com; s=zohoarc; b=BxriH3KC7GvFi5/TDl6hLmzT4EVH8LEgxZPG8cwm5vTENwRSJbqgTBYu4LAjK9wzJND34H008zn/mFbVP9hqVOAemXzNAzj/jUsdmJxK/R8a1j7gfhYp1+DFxHRJNEPLB85eFS1pKViL79hfx5ZiTbE0CLFnxbZXlXbxRl7374Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459401; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zo9ijqpthxNtheom/jKBVfohc2TpxiBVhXv5AoD5L48=; b=gy1b+katbCbh3GvGNd4kyP2Wtzoslygyea5mCb9OBq47dPw9it4MmIP7lpNKAnPCk26b3aMxX59kQmXk7vLsFq6Uzb71E7+djV73CZ0GcBj8bVbXcQq6RBbTbOlMWul77mtS5xKZtOakHFP4DiuXzmfUEvne8tQsCyXHdsLRiEo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1695459401683317.4177403045883; Sat, 23 Sep 2023 01:56:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQQ-0002xx-Ed; Sat, 23 Sep 2023 04:55:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQP-0002xj-BC for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQN-0000ad-5S for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:41 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-220-u40iTeoEN6ejOdcwEa54Dw-1; Sat, 23 Sep 2023 04:55:34 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-3fd0fa4d08cso26894165e9.1 for ; Sat, 23 Sep 2023 01:55:33 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id iw7-20020a05600c54c700b003fc16ee2864sm5108909wmb.48.2023.09.23.01.55.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459338; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zo9ijqpthxNtheom/jKBVfohc2TpxiBVhXv5AoD5L48=; b=fls9BeIcBNo1OgbFsSJXJWGCgQzBpr6qVYOHCNLKbZfO4I6BOnOG2DubQv9FnP1KgO4Nho E/GI4Zlk0XsNzB1smHW1woE3l6H2Kcium5pAQTTZv0ePiyqqYvQGzTW1H78doMm9m3Pmqk oCa6TsySFZc3vcm4OkxLmJTLu9wq80Q= X-MC-Unique: u40iTeoEN6ejOdcwEa54Dw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459332; x=1696064132; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zo9ijqpthxNtheom/jKBVfohc2TpxiBVhXv5AoD5L48=; b=S7wNL6wx3PLr2/hTFOVtnLetEt9kdBgrxG3iPd2fkf8A+bOTfMWNO8IBfkgBmhEjcB 6dzgZGH2ncb7Iq/CcWnHkZFGwKDrWWpbPNvvl7yOqA/vV4jEkSY74sWV+rWiLMfC1lSO qo9xUgFEnujEwIo6IV/rUPIssihEUD2vhaBHJpt+cQ5HsqbEcYMEeJhy5A57TnhPQQmy 4ndgRZwrtgQXgvxuj74mjRnayo6ZrX/CuST2S2o7ib41WI/IZ+OpZGPjaJTd9CEF9D6e B0WmdcL6zglk7ctY4EPZ0ql7Jj1Sx63MXOkqd3wXbIQdvtBbX2UgGv/IrNy3Eqjn2CLX NYqg== X-Gm-Message-State: AOJu0YwVn0rlN3mAB1+JuWQWFPCF+GVgQkGFR2OwNNVEtMgS+1fel4sW MoPsybPB4Z0BXsx6d2Oi1iG4HEEfFm7Vsf6rKVOaAb1yOac7TUlwGa2lff2d/1H71jfi+AY13AQ JSK0MAMMcd6hTRB/Dm+5KSodIKgLb44XivefdosGc9AlQjdK8pTnlaXcFgHWHU330EsGMPz7ra8 Q= X-Received: by 2002:a7b:c84e:0:b0:405:3dd0:6ee9 with SMTP id c14-20020a7bc84e000000b004053dd06ee9mr1277392wml.34.1695459332318; Sat, 23 Sep 2023 01:55:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEL9+HgThWVFM9unA6yu1dgi5c1SG5wWa1g/5RyaU+AzWvTTeMcP8ruNoaZUQSta6eBDyKcrQ== X-Received: by 2002:a7b:c84e:0:b0:405:3dd0:6ee9 with SMTP id c14-20020a7bc84e000000b004053dd06ee9mr1277378wml.34.1695459331880; Sat, 23 Sep 2023 01:55:31 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 12/13] audio: forbid mixing default audiodev backend and -audiodev Date: Sat, 23 Sep 2023 10:55:05 +0200 Message-ID: <20230923085507.399260-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459402099100003 Content-Type: text/plain; charset="utf-8" Now that all callers support setting an audiodev, forbid using the default audiodev if any audiodev is defined on the command line. To make the detection easier make AUD_register_card() return false on error. Signed-off-by: Martin Kletzander Signed-off-by: Paolo Bonzini --- audio/audio.c | 14 ++++++++------ audio/audio.h | 2 +- hw/arm/omap2.c | 2 +- hw/audio/ac97.c | 6 +++++- hw/audio/adlib.c | 6 ++++-- hw/audio/cs4231a.c | 6 ++++-- hw/audio/es1370.c | 5 ++++- hw/audio/gus.c | 6 ++++-- hw/audio/hda-codec.c | 5 ++++- hw/audio/lm4549.c | 8 +++++--- hw/audio/pcspk.c | 4 +--- hw/audio/sb16.c | 6 ++++-- hw/audio/via-ac97.c | 6 ++++-- hw/audio/wm8750.c | 5 ++++- hw/display/xlnx_dp.c | 6 ++++-- hw/input/tsc210x.c | 2 +- hw/usb/dev-audio.c | 5 ++++- 17 files changed, 62 insertions(+), 32 deletions(-) diff --git a/audio/audio.c b/audio/audio.c index 4f93bdcf082..7dd95018a05 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1801,15 +1801,15 @@ static AudioState *audio_init(Audiodev *dev) return s; } =20 -void AUD_register_card (const char *name, QEMUSoundCard *card) +bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **err= p) { if (!card->state) { + if (!QSIMPLEQ_EMPTY(&audiodevs)) { + error_setg(errp, "No audiodev specified for %s", name); + return false; + } + if (!QTAILQ_EMPTY(&audio_states)) { - if (!legacy_config) { - dolog("Device %s: audiodev default parameter is deprecated= , please " - "specify audiodev=3D%s\n", name, - QTAILQ_FIRST(&audio_states)->dev->id); - } card->state =3D QTAILQ_FIRST(&audio_states); } else { if (QSIMPLEQ_EMPTY(&default_audiodevs)) { @@ -1822,6 +1822,8 @@ void AUD_register_card (const char *name, QEMUSoundCa= rd *card) card->name =3D g_strdup (name); memset (&card->entries, 0, sizeof (card->entries)); QLIST_INSERT_HEAD(&card->state->card_head, card, entries); + + return true; } =20 void AUD_remove_card (QEMUSoundCard *card) diff --git a/audio/audio.h b/audio/audio.h index 34df8962a66..70b264d897d 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -94,7 +94,7 @@ typedef struct QEMUAudioTimeStamp { void AUD_vlog (const char *cap, const char *fmt, va_list ap) G_GNUC_PRINTF= (2, 0); void AUD_log (const char *cap, const char *fmt, ...) G_GNUC_PRINTF(2, 3); =20 -void AUD_register_card (const char *name, QEMUSoundCard *card); +bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **err= p); void AUD_remove_card (QEMUSoundCard *card); CaptureVoiceOut *AUD_add_capture( AudioState *s, diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c index 41b1f596dca..0f9821a7e5d 100644 --- a/hw/arm/omap2.c +++ b/hw/arm/omap2.c @@ -614,7 +614,7 @@ static struct omap_eac_s *omap_eac_init(struct omap_tar= get_agent_s *ta, s->codec.card.name =3D g_strdup(current_machine->audiodev); s->codec.card.state =3D audio_state_by_name(s->codec.card.name, &e= rror_fatal); } - AUD_register_card("OMAP EAC", &s->codec.card); + AUD_register_card("OMAP EAC", &s->codec.card, &error_abort); =20 memory_region_init_io(&s->iomem, NULL, &omap_eac_ops, s, "omap.eac", omap_l4_region_size(ta, 0)); diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c index c2a5ce062a1..6a7a2dc80c4 100644 --- a/hw/audio/ac97.c +++ b/hw/audio/ac97.c @@ -1273,6 +1273,10 @@ static void ac97_realize(PCIDevice *dev, Error **err= p) AC97LinkState *s =3D AC97(dev); uint8_t *c =3D s->dev.config; =20 + if (!AUD_register_card ("ac97", &s->card, errp)) { + return; + } + /* TODO: no need to override */ c[PCI_COMMAND] =3D 0x00; /* pcicmd pci command rw, ro */ c[PCI_COMMAND + 1] =3D 0x00; @@ -1306,7 +1310,7 @@ static void ac97_realize(PCIDevice *dev, Error **errp) "ac97-nabm", 256); pci_register_bar(&s->dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &s->io_nam); pci_register_bar(&s->dev, 1, PCI_BASE_ADDRESS_SPACE_IO, &s->io_nabm); - AUD_register_card("ac97", &s->card); + ac97_on_reset(DEVICE(s)); } =20 diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c index 5f979b1487d..bd73806d83a 100644 --- a/hw/audio/adlib.c +++ b/hw/audio/adlib.c @@ -255,6 +255,10 @@ static void adlib_realizefn (DeviceState *dev, Error *= *errp) AdlibState *s =3D ADLIB(dev); struct audsettings as; =20 + if (!AUD_register_card ("adlib", &s->card, errp)) { + return; + } + s->opl =3D OPLCreate (3579545, s->freq); if (!s->opl) { error_setg (errp, "OPLCreate %d failed", s->freq); @@ -270,8 +274,6 @@ static void adlib_realizefn (DeviceState *dev, Error **= errp) as.fmt =3D AUDIO_FORMAT_S16; as.endianness =3D AUDIO_HOST_ENDIANNESS; =20 - AUD_register_card ("adlib", &s->card); - s->voice =3D AUD_open_out ( &s->card, s->voice, diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c index 5c6d6437320..3aa105748d3 100644 --- a/hw/audio/cs4231a.c +++ b/hw/audio/cs4231a.c @@ -678,13 +678,15 @@ static void cs4231a_realizefn (DeviceState *dev, Erro= r **errp) return; } =20 + if (!AUD_register_card ("cs4231a", &s->card, errp)) { + return; + } + s->pic =3D isa_bus_get_irq(bus, s->irq); k =3D ISADMA_GET_CLASS(s->isa_dma); k->register_channel(s->isa_dma, s->dma, cs_dma_read, s); =20 isa_register_ioport (d, &s->ioports, s->port); - - AUD_register_card ("cs4231a", &s->card); } =20 static Property cs4231a_properties[] =3D { diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c index 4f738a0ad88..90f73d4c23d 100644 --- a/hw/audio/es1370.c +++ b/hw/audio/es1370.c @@ -853,6 +853,10 @@ static void es1370_realize(PCIDevice *dev, Error **err= p) ES1370State *s =3D ES1370(dev); uint8_t *c =3D s->dev.config; =20 + if (!AUD_register_card ("es1370", &s->card, errp)) { + return; + } + c[PCI_STATUS + 1] =3D PCI_STATUS_DEVSEL_SLOW >> 8; =20 #if 0 @@ -868,7 +872,6 @@ static void es1370_realize(PCIDevice *dev, Error **errp) memory_region_init_io (&s->io, OBJECT(s), &es1370_io_ops, s, "es1370",= 256); pci_register_bar (&s->dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &s->io); =20 - AUD_register_card ("es1370", &s->card); es1370_reset (s); } =20 diff --git a/hw/audio/gus.c b/hw/audio/gus.c index 787345ce543..6c2b586ca71 100644 --- a/hw/audio/gus.c +++ b/hw/audio/gus.c @@ -241,14 +241,16 @@ static void gus_realizefn (DeviceState *dev, Error **= errp) IsaDmaClass *k; struct audsettings as; =20 + if (!AUD_register_card ("gus", &s->card, errp)) { + return; + } + s->isa_dma =3D isa_bus_get_dma(bus, s->emu.gusdma); if (!s->isa_dma) { error_setg(errp, "ISA controller does not support DMA"); return; } =20 - AUD_register_card ("gus", &s->card); - as.freq =3D s->freq; as.nchannels =3D 2; as.fmt =3D AUDIO_FORMAT_S16; diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c index a26048cf15e..b9ad1f4c39e 100644 --- a/hw/audio/hda-codec.c +++ b/hw/audio/hda-codec.c @@ -685,11 +685,14 @@ static void hda_audio_init(HDACodecDevice *hda, const desc_param *param; uint32_t i, type; =20 + if (!AUD_register_card("hda", &a->card, errp)) { + return; + } + a->desc =3D desc; a->name =3D object_get_typename(OBJECT(a)); dprint(a, 1, "%s: cad %d\n", __func__, a->hda.cad); =20 - AUD_register_card("hda", &a->card); for (i =3D 0; i < a->desc->nnodes; i++) { node =3D a->desc->nodes + i; param =3D hda_codec_find_param(node, AC_PAR_AUDIO_WIDGET_CAP); diff --git a/hw/audio/lm4549.c b/hw/audio/lm4549.c index 418041bc9c6..e7bfcc4b9fe 100644 --- a/hw/audio/lm4549.c +++ b/hw/audio/lm4549.c @@ -281,6 +281,11 @@ void lm4549_init(lm4549_state *s, lm4549_callback data= _req_cb, void* opaque, { struct audsettings as; =20 + /* Register an audio card */ + if (!AUD_register_card("lm4549", &s->card, errp)) { + return; + } + /* Store the callback and opaque pointer */ s->data_req_cb =3D data_req_cb; s->opaque =3D opaque; @@ -288,9 +293,6 @@ void lm4549_init(lm4549_state *s, lm4549_callback data_= req_cb, void* opaque, /* Init the registers */ lm4549_reset(s); =20 - /* Register an audio card */ - AUD_register_card("lm4549", &s->card); - /* Open a default voice */ as.freq =3D 48000; as.nchannels =3D 2; diff --git a/hw/audio/pcspk.c b/hw/audio/pcspk.c index daf92a4ce11..fe7f07ced21 100644 --- a/hw/audio/pcspk.c +++ b/hw/audio/pcspk.c @@ -123,8 +123,6 @@ static int pcspk_audio_init(PCSpkState *s) return 0; } =20 - AUD_register_card(s_spk, &s->card); - s->voice =3D AUD_open_out(&s->card, s->voice, s_spk, s, pcspk_callback= , &as); if (!s->voice) { AUD_log(s_spk, "Could not open voice\n"); @@ -191,7 +189,7 @@ static void pcspk_realizefn(DeviceState *dev, Error **e= rrp) =20 isa_register_ioport(isadev, &s->ioport, s->iobase); =20 - if (s->card.state) { + if (s->card.state && AUD_register_card(s_spk, &s->card, errp)) { pcspk_audio_init(s); } =20 diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c index 535ccccdc98..18f6d252db3 100644 --- a/hw/audio/sb16.c +++ b/hw/audio/sb16.c @@ -1402,6 +1402,10 @@ static void sb16_realizefn (DeviceState *dev, Error = **errp) SB16State *s =3D SB16 (dev); IsaDmaClass *k; =20 + if (!AUD_register_card ("sb16", &s->card, errp)) { + return; + } + s->isa_hdma =3D isa_bus_get_dma(bus, s->hdma); s->isa_dma =3D isa_bus_get_dma(bus, s->dma); if (!s->isa_dma || !s->isa_hdma) { @@ -1434,8 +1438,6 @@ static void sb16_realizefn (DeviceState *dev, Error *= *errp) k->register_channel(s->isa_dma, s->dma, SB_read_DMA, s); =20 s->can_write =3D 1; - - AUD_register_card ("sb16", &s->card); } =20 static Property sb16_properties[] =3D { diff --git a/hw/audio/via-ac97.c b/hw/audio/via-ac97.c index 676254b7a40..30095a4c7aa 100644 --- a/hw/audio/via-ac97.c +++ b/hw/audio/via-ac97.c @@ -426,6 +426,10 @@ static void via_ac97_realize(PCIDevice *pci_dev, Error= **errp) ViaAC97State *s =3D VIA_AC97(pci_dev); Object *o =3D OBJECT(s); =20 + if (!AUD_register_card ("via-ac97", &s->card, errp)) { + return; + } + /* * Command register Bus Master bit is documented to be fixed at 0 but = it's * needed for PCI DMA to work in QEMU. The pegasos2 firmware writes 0 = here @@ -445,8 +449,6 @@ static void via_ac97_realize(PCIDevice *pci_dev, Error = **errp) pci_register_bar(pci_dev, 1, PCI_BASE_ADDRESS_SPACE_IO, &s->fm); memory_region_init_io(&s->midi, o, &midi_ops, s, "via-ac97.midi", 4); pci_register_bar(pci_dev, 2, PCI_BASE_ADDRESS_SPACE_IO, &s->midi); - - AUD_register_card ("via-ac97", &s->card); } =20 static void via_ac97_exit(PCIDevice *dev) diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c index b5722b37c36..57954a63144 100644 --- a/hw/audio/wm8750.c +++ b/hw/audio/wm8750.c @@ -624,7 +624,10 @@ static void wm8750_realize(DeviceState *dev, Error **e= rrp) { WM8750State *s =3D WM8750(dev); =20 - AUD_register_card(CODEC, &s->card); + if (!AUD_register_card(CODEC, &s->card, errp)) { + return; + } + wm8750_reset(I2C_SLAVE(s)); } =20 diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index 341e91e886f..eee8f33a584 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -1302,6 +1302,10 @@ static void xlnx_dp_realize(DeviceState *dev, Error = **errp) DisplaySurface *surface; struct audsettings as; =20 + if (!AUD_register_card("xlnx_dp.audio", &s->aud_card, errp)) { + return; + } + aux_bus_realize(s->aux_bus); =20 qdev_realize(DEVICE(s->dpcd), BUS(s->aux_bus), &error_fatal); @@ -1320,8 +1324,6 @@ static void xlnx_dp_realize(DeviceState *dev, Error *= *errp) as.fmt =3D AUDIO_FORMAT_S16; as.endianness =3D 0; =20 - AUD_register_card("xlnx_dp.audio", &s->aud_card); - s->amixer_output_stream =3D AUD_open_out(&s->aud_card, s->amixer_output_stream, "xlnx_dp.audio.out", diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c index e7960a50696..3a1e1130f86 100644 --- a/hw/input/tsc210x.c +++ b/hw/input/tsc210x.c @@ -1102,7 +1102,7 @@ static void tsc210x_init(TSC210xState *s, s->card.name =3D g_strdup(current_machine->audiodev); s->card.state =3D audio_state_by_name(s->card.name, &error_fatal); } - AUD_register_card(s->name, &s->card); + AUD_register_card(s->name, &s->card, &error_abort); =20 qemu_register_reset((void *) tsc210x_reset, s); vmstate_register(NULL, 0, vmsd, s); diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c index 8748c1ba040..d5ac1f8962e 100644 --- a/hw/usb/dev-audio.c +++ b/hw/usb/dev-audio.c @@ -944,12 +944,15 @@ static void usb_audio_realize(USBDevice *dev, Error *= *errp) USBAudioState *s =3D USB_AUDIO(dev); int i; =20 + if (!AUD_register_card(TYPE_USB_AUDIO, &s->card, errp)) { + return; + } + dev->usb_desc =3D s->multi ? &desc_audio_multi : &desc_audio; =20 usb_desc_create_serial(dev); usb_desc_init(dev); s->dev.opaque =3D s; - AUD_register_card(TYPE_USB_AUDIO, &s->card); =20 s->out.altset =3D ALTSET_OFF; s->out.vol.mute =3D false; --=20 2.41.0 From nobody Fri May 17 10:13:24 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1695459437; cv=none; d=zohomail.com; s=zohoarc; b=OyMxme6F642J1vRrvcLhxS1WmnB0/DDp7KTdCoACpCRPxcV/p03Q/Gkl9RlDSw5L/6F1kANIG0JhxUJEy1NEYBwAUO1kG7rP/PBwk0DSKIziuOrBVoTmXIBVVSn4robRPjI0Kj420BQng0WoBo1AlpJxKRW7/IBppOZBtNkofOw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695459437; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3JK2tj7whN8l41R/kMQ/GZt9XPUjOpzPaF7tlFY13Pw=; b=ldF+xXiueXAYM7+mzE69PTr3W3adcmVz48uSs6pNjbOPiX9gQa+zCS+AdTivgjOYaFe82VSfJwQstGHsRiKFJdfz4NeF3JsF4ceeUXCVj+GB0uymwazg7Pt6gyM34U3s4AuPmwdmo9HD24lgpkjrYu/hFNWPllyV8xydIhT20FQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16954594378441007.4336485157547; Sat, 23 Sep 2023 01:57:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qjyQP-0002xs-RJ; Sat, 23 Sep 2023 04:55:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQO-0002xX-2C for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qjyQM-0000aY-OE for qemu-devel@nongnu.org; Sat, 23 Sep 2023 04:55:39 -0400 Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-282-Wyoz4CKdO2uKeBjybqgNxA-1; Sat, 23 Sep 2023 04:55:36 -0400 Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-5030ed95acdso4637112e87.2 for ; Sat, 23 Sep 2023 01:55:36 -0700 (PDT) Received: from [192.168.10.118] ([2001:b07:6468:f312:5e2c:eb9a:a8b6:fd3e]) by smtp.gmail.com with ESMTPSA id z8-20020adff748000000b0031fedb25b85sm6420699wrp.84.2023.09.23.01.55.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 01:55:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695459338; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3JK2tj7whN8l41R/kMQ/GZt9XPUjOpzPaF7tlFY13Pw=; b=axShES/LFsl9a5cGnIJvvUoIuXD8424eUPBdB6ZyjSWgKDVIZDTL9dCCsIh95bL7bcfVdT U8MkUZhdz0Zai0A7GZy7dIH6Sg8Sh60SD5/pj94iAfSC5oytoZpdFiQ5YLsH7x15d4OU/b 27MdtEZxX2PoiuENgk1n9lcRFaA+T6E= X-MC-Unique: Wyoz4CKdO2uKeBjybqgNxA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695459334; x=1696064134; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3JK2tj7whN8l41R/kMQ/GZt9XPUjOpzPaF7tlFY13Pw=; b=NPlV1EzFjxslXj26F/b0xdPE5jj1k/43MXLvHsSf2+patmAhI8WwXn9/qdQ0ew/Aj/ jkJcOKSq8zTUI1Fri9wbKG9HpKEBbtfN9B7IkyBoZvVVnSEbJG1YEYvIBPdW5v/MLN+Y HXLSvA9gkoKaCpB8Jv+6b1yESmaAq/zpvgec5CPu2k9kRMzPNvffIavAja3vkOKp4FeE +ZTco/g3kHXA7+HIdqwXopSq0sqK8AFS+fgnIHaZA3+Z14W6snHBZYhDSB7A41i1TNTV PV7dqcX1HKBfSVtEXxe08d3KCetwAuQMupcxrfxBjlCLYZ8Kn17bVX73k4bY58o3woS7 PesA== X-Gm-Message-State: AOJu0Yyf+YKr2EthtZWi/UVgrz7l7KImoBvPJ9DBbT5+pQ7FPo76M7+G zNi6wOzBnpMJEERKMXKyeFHyuup8YnqiTX3GHpwhA29SR3GrKQYjQbNYM+o4ZXgEY2ifdWAqmov DrX7T9vk7Foym/4Aice4FwcB+x2r7IJMhMHjZTzhQah7R2nngeoO/Mg7MDUxSmx1t+tn6U2wzD3 0= X-Received: by 2002:a19:4f10:0:b0:503:8fa:da21 with SMTP id d16-20020a194f10000000b0050308fada21mr1561736lfb.43.1695459334350; Sat, 23 Sep 2023 01:55:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFiU+OE/a92jGODlRI6oSj0hoIw1caDPCOv6fuKXH3oIi5W1pE6cNe/aG8aFmIH2JOOrRLpzQ== X-Received: by 2002:a19:4f10:0:b0:503:8fa:da21 with SMTP id d16-20020a194f10000000b0050308fada21mr1561727lfb.43.1695459334065; Sat, 23 Sep 2023 01:55:34 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: mkletzan@redhat.com, vr_qemu@t-online.de, balaton@eik.bme.hu Subject: [PATCH 13/13] audio: forbid default audiodev backend with -nodefaults Date: Sat, 23 Sep 2023 10:55:06 +0200 Message-ID: <20230923085507.399260-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230923085507.399260-1-pbonzini@redhat.com> References: <20230923085507.399260-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1695459438415100001 Content-Type: text/plain; charset="utf-8" Now that all callers support setting an audiodev, forbid using the default audiodev if -nodefaults is provided on the command line. Signed-off-by: Paolo Bonzini --- audio/audio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audio/audio.c b/audio/audio.c index 7dd95018a05..3489fd07b20 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1804,7 +1804,7 @@ static AudioState *audio_init(Audiodev *dev) bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **err= p) { if (!card->state) { - if (!QSIMPLEQ_EMPTY(&audiodevs)) { + if (!QSIMPLEQ_EMPTY(&audiodevs) || !defaults_enabled()) { error_setg(errp, "No audiodev specified for %s", name); return false; } --=20 2.41.0