From nobody Sat Oct 25 08:57:53 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520341250717912.3646586838549; Tue, 6 Mar 2018 05:00:50 -0800 (PST) Received: from localhost ([::1]:55287 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etCD3-0003v7-VH for importer@patchew.org; Tue, 06 Mar 2018 08:00:50 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41416) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etC8A-0008TV-1O for qemu-devel@nongnu.org; Tue, 06 Mar 2018 07:55:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1etC84-0004rX-4v for qemu-devel@nongnu.org; Tue, 06 Mar 2018 07:55:46 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:46810) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1etC81-0004jX-Sj; Tue, 06 Mar 2018 07:55:38 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1etC7v-0004Wn-Mg; Tue, 06 Mar 2018 12:55:31 +0000 From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Date: Tue, 6 Mar 2018 12:55:26 +0000 Message-Id: <20180306125526.27838-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180306125526.27838-1-peter.maydell@linaro.org> References: <20180306125526.27838-1-peter.maydell@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PATCH v2 6/6] hw/arm/virt: Support -machine gic-version=max X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Igor Mammedov , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , patches@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add support for passing 'max' to -machine gic-version. By analogy with the -cpu max option, this picks the "best available" GIC version whether you're using KVM or TCG, so it behaves like 'host' when using KVM, and gives you GICv3 when using TCG. Also like '-cpu host', using -machine gic-version=3Dmax' means there is no guarantee of migration compatibility between QEMU versions; in future 'max' might mean '4'. Signed-off-by: Peter Maydell --- hw/arm/virt.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index cda4b83586..2c07245047 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1207,16 +1207,23 @@ static void machvirt_init(MachineState *machine) /* We can probe only here because during property set * KVM is not available yet */ - if (!vms->gic_version) { + if (vms->gic_version <=3D 0) { + /* "host" or "max" */ if (!kvm_enabled()) { - error_report("gic-version=3Dhost requires KVM"); - exit(1); - } - - vms->gic_version =3D kvm_arm_vgic_probe(); - if (!vms->gic_version) { - error_report("Unable to determine GIC version supported by hos= t"); - exit(1); + if (vms->gic_version =3D=3D 0) { + error_report("gic-version=3Dhost requires KVM"); + exit(1); + } else { + /* "max": currently means 3 for TCG */ + vms->gic_version =3D 3; + } + } else { + vms->gic_version =3D kvm_arm_vgic_probe(); + if (!vms->gic_version) { + error_report( + "Unable to determine GIC version supported by host"); + exit(1); + } } } =20 @@ -1480,9 +1487,11 @@ static void virt_set_gic_version(Object *obj, const = char *value, Error **errp) vms->gic_version =3D 2; } else if (!strcmp(value, "host")) { vms->gic_version =3D 0; /* Will probe later */ + } else if (!strcmp(value, "max")) { + vms->gic_version =3D -1; /* Will probe later */ } else { error_setg(errp, "Invalid gic-version value"); - error_append_hint(errp, "Valid values are 3, 2, host.\n"); + error_append_hint(errp, "Valid values are 3, 2, host, max.\n"); } } =20 --=20 2.16.2