From nobody Thu Nov 13 21:52:15 2025 Delivered-To: importer@patchew.org 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; 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=1583059335; cv=none; d=zohomail.com; s=zohoarc; b=EvXO7pCGh1foNJ5I68CJ+LA2MnmJAxyVgzugEK1poQE4caC88FyuJy6KkNs1E2/VavXUNtnZJQLXtQjhiJUuDD1lZWSPoGu4XW0P9S1ejjI4lgDe7hGNED5t++6zT8DBYgRNtjURoXvyS8O7vWYEc/mnS+9njBDEjUiV2YP6KrE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583059335; 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=Mzg2H0YBbCisRyrMCUrRICbJ3hx43H9G2Ap69t8824M=; b=Vv3TdByXgJRH1+S1f8SNx/haYSwGkqi0V13rS/3OdedTZRyWAroDRhiLH7YouNjk1GH46gpCZN5Tb3hML4CVXwRvmdedHhr7R+hUH9abZ3n1g89zwHvkMZa6xUEzbzTXuk8D4qsF5+dUz1mvd6UamedDJPrBJ4M5449zor033Ws= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 158305933562341.087863383824015; Sun, 1 Mar 2020 02:42:15 -0800 (PST) Received: from localhost ([::1]:47530 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M34-0003Pa-Ep for importer@patchew.org; Sun, 01 Mar 2020 05:42:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52886) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M1p-0001UB-VG for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:40:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8M1p-0001kZ-0l for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:40:57 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:41743 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8M1o-0001kT-UH for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:40:56 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-235-amk9fKtiODSGWBgRk82jjg-1; Sun, 01 Mar 2020 05:40:53 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 191F08017CC; Sun, 1 Mar 2020 10:40:52 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id 501CF60C80; Sun, 1 Mar 2020 10:40:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583059256; 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=Mzg2H0YBbCisRyrMCUrRICbJ3hx43H9G2Ap69t8824M=; b=BB3n0tvtlazRG5iU/CJSjCq5hSsMjHEBadQzMBKUwVBHwu15jWW0USYMOJKctV4f+f/hKd pU4yQXVqDlE5iKydP6syJzpAHZLZbabMrbqUkfQeNNxHA0s24M6qhcFg/1hwcrWUNUxMRm U5tbYbpxvkvHWHNhvVYYHWDKbkNoSTM= X-MC-Unique: amk9fKtiODSGWBgRk82jjg-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org Subject: [PATCH v2 1/6] hw/arm/virt: Document 'max' value in gic-version property description Date: Sun, 1 Mar 2020 11:40:35 +0100 Message-Id: <20200301104040.15186-2-eric.auger@redhat.com> In-Reply-To: <20200301104040.15186-1-eric.auger@redhat.com> References: <20200301104040.15186-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maz@kernel.org, drjones@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Mention 'max' value in the gic-version property description. Signed-off-by: Eric Auger Reviewed-by: Andrew Jones Reviewed-by: Richard Henderson --- hw/arm/virt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 856808599d..c093f0ab85 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2144,7 +2144,8 @@ static void virt_instance_init(Object *obj) virt_set_gic_version, NULL); object_property_set_description(obj, "gic-version", "Set GIC version. " - "Valid values are 2, 3 and host", NULL= ); + "Valid values are 2, 3, host and max", + NULL); =20 vms->highmem_ecam =3D !vmc->no_highmem_ecam; =20 --=20 2.20.1 From nobody Thu Nov 13 21:52:15 2025 Delivered-To: importer@patchew.org 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; 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=1583059334; cv=none; d=zohomail.com; s=zohoarc; b=X3177z0a394VGU06M35JeG/LvLFquf+9d1wpBadgBrmHsl6sgvy3I8gmYGxoGR6MkWrT78EryIaNmLCL/XBZzs99ZNCvdpZ17pBcWjiA4Zzwpp3Hj2KeXicnQUBSCcuxrNBYhFspPlFUXUhsVaPEroxQ+noMfl7uH8BAU9QmKtI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583059334; 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=vJoSaYvsmUf4fGx2lrmEd69ekJPOQoW9mYbvAXJjlRo=; b=c0RjC64CSXQ9Qr60QuTb8ZOyZhZuOaNFuHF3CJakMmObjfMvkzVwUFRfWK6K/zVZ6Ng7+MzV2pc1TuOrrYK37NqH8FygUWPOQ59iDQzSqtk43pRu7pySH/p0j/A/PQd/u85STGBEF0bYpP5Jdz2p4ZhMbXv6bbpOcJ5i6JqxEEY= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1583059334706481.34649378823406; Sun, 1 Mar 2020 02:42:14 -0800 (PST) Received: from localhost ([::1]:47528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M33-0003NS-4l for importer@patchew.org; Sun, 01 Mar 2020 05:42:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52903) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M1q-0001UD-MN for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:40:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8M1p-0001ki-8x for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:40:58 -0500 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:27195 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8M1p-0001kV-5E for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:40:57 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-39-vaMQ6Gi3MBquCL5-YptMgA-1; Sun, 01 Mar 2020 05:40:55 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 31E9E189F760; Sun, 1 Mar 2020 10:40:54 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6E7EE60C80; Sun, 1 Mar 2020 10:40:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583059256; 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=vJoSaYvsmUf4fGx2lrmEd69ekJPOQoW9mYbvAXJjlRo=; b=hDSJbgsyLT6K26RGOrEl2iLIBoqo+xF8yK0Z8gJ2tvP3czYjyMXjcY/2GmwIS+KijDqTzh IsPNU+Y1Ufyg+u4vBsN6hQt1TpwtGUV4R3fBIiQmCHp8GtD61rb1MErj/NY6zdG88NT8jR 1kGTbpgFHfGPiILMw4jILNSkM8Y0yPM= X-MC-Unique: vaMQ6Gi3MBquCL5-YptMgA-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org Subject: [PATCH v2 2/6] hw/arm/virt: Use VIRT_GIC_VERSION defines Date: Sun, 1 Mar 2020 11:40:36 +0100 Message-Id: <20200301104040.15186-3-eric.auger@redhat.com> In-Reply-To: <20200301104040.15186-1-eric.auger@redhat.com> References: <20200301104040.15186-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maz@kernel.org, drjones@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" We plan to introduce yet another value for the gic version (nosel). As we already use exotic values such as 0 and -1, let's introduce some defines. Signed-off-by: Eric Auger Reviewed-by: Andrew Jones Reviewed-by: Richard Henderson --- hw/arm/virt.c | 30 +++++++++++++++--------------- include/hw/arm/virt.h | 7 ++++++- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index c093f0ab85..b449a445de 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -298,7 +298,7 @@ static void fdt_add_timer_nodes(const VirtMachineState = *vms) irqflags =3D GIC_FDT_IRQ_FLAGS_EDGE_LO_HI; } =20 - if (vms->gic_version =3D=3D 2) { + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_2) { irqflags =3D deposit32(irqflags, GIC_FDT_IRQ_PPI_CPU_START, GIC_FDT_IRQ_PPI_CPU_WIDTH, (1 << vms->smp_cpus) - 1); @@ -439,7 +439,7 @@ static void fdt_add_gic_node(VirtMachineState *vms) qemu_fdt_setprop_cell(vms->fdt, nodename, "#address-cells", 0x2); qemu_fdt_setprop_cell(vms->fdt, nodename, "#size-cells", 0x2); qemu_fdt_setprop(vms->fdt, nodename, "ranges", NULL, 0); - if (vms->gic_version =3D=3D 3) { + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_3) { int nb_redist_regions =3D virt_gicv3_redist_region_count(vms); =20 qemu_fdt_setprop_string(vms->fdt, nodename, "compatible", @@ -518,7 +518,7 @@ static void fdt_add_pmu_nodes(const VirtMachineState *v= ms) } } =20 - if (vms->gic_version =3D=3D 2) { + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_2) { irqflags =3D deposit32(irqflags, GIC_FDT_IRQ_PPI_CPU_START, GIC_FDT_IRQ_PPI_CPU_WIDTH, (1 << vms->smp_cpus) - 1); @@ -1469,7 +1469,7 @@ static uint64_t virt_cpu_mp_affinity(VirtMachineState= *vms, int idx) * purposes are to make TCG consistent (with 64-bit KVM hosts) * and to improve SGI efficiency. */ - if (vms->gic_version =3D=3D 3) { + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_3) { clustersz =3D GICV3_TARGETLIST_BITS; } else { clustersz =3D GIC_TARGETLIST_BITS; @@ -1560,15 +1560,15 @@ static void machvirt_init(MachineState *machine) /* We can probe only here because during property set * KVM is not available yet */ - if (vms->gic_version <=3D 0) { - /* "host" or "max" */ + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST || + vms->gic_version =3D=3D VIRT_GIC_VERSION_MAX) { if (!kvm_enabled()) { - if (vms->gic_version =3D=3D 0) { + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST) { error_report("gic-version=3Dhost requires KVM"); exit(1); } else { /* "max": currently means 3 for TCG */ - vms->gic_version =3D 3; + vms->gic_version =3D VIRT_GIC_VERSION_3; } } else { vms->gic_version =3D kvm_arm_vgic_probe(); @@ -1627,7 +1627,7 @@ static void machvirt_init(MachineState *machine) /* The maximum number of CPUs depends on the GIC version, or on how * many redistributors we can fit into the memory map. */ - if (vms->gic_version =3D=3D 3) { + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_3) { virt_max_cpus =3D vms->memmap[VIRT_GIC_REDIST].size / GICV3_REDIST_SIZE; virt_max_cpus +=3D @@ -1855,7 +1855,7 @@ static void virt_set_its(Object *obj, bool value, Err= or **errp) static char *virt_get_gic_version(Object *obj, Error **errp) { VirtMachineState *vms =3D VIRT_MACHINE(obj); - const char *val =3D vms->gic_version =3D=3D 3 ? "3" : "2"; + const char *val =3D vms->gic_version =3D=3D VIRT_GIC_VERSION_3 ? "3" := "2"; =20 return g_strdup(val); } @@ -1865,13 +1865,13 @@ static void virt_set_gic_version(Object *obj, const= char *value, Error **errp) VirtMachineState *vms =3D VIRT_MACHINE(obj); =20 if (!strcmp(value, "3")) { - vms->gic_version =3D 3; + vms->gic_version =3D VIRT_GIC_VERSION_3; } else if (!strcmp(value, "2")) { - vms->gic_version =3D 2; + vms->gic_version =3D VIRT_GIC_VERSION_2; } else if (!strcmp(value, "host")) { - vms->gic_version =3D 0; /* Will probe later */ + vms->gic_version =3D VIRT_GIC_VERSION_HOST; /* Will probe later */ } else if (!strcmp(value, "max")) { - vms->gic_version =3D -1; /* Will probe later */ + vms->gic_version =3D VIRT_GIC_VERSION_MAX; /* Will probe later */ } else { error_setg(errp, "Invalid gic-version value"); error_append_hint(errp, "Valid values are 3, 2, host, max.\n"); @@ -2139,7 +2139,7 @@ static void virt_instance_init(Object *obj) "physical address space above 32 bits", NULL); /* Default GIC type is v2 */ - vms->gic_version =3D 2; + vms->gic_version =3D VIRT_GIC_VERSION_2; object_property_add_str(obj, "gic-version", virt_get_gic_version, virt_set_gic_version, NULL); object_property_set_description(obj, "gic-version", diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 02f500cb8e..6325b98269 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -95,6 +95,11 @@ typedef enum VirtIOMMUType { VIRT_IOMMU_VIRTIO, } VirtIOMMUType; =20 +#define VIRT_GIC_VERSION_MAX (-1) +#define VIRT_GIC_VERSION_HOST 0 +#define VIRT_GIC_VERSION_2 2 +#define VIRT_GIC_VERSION_3 3 + typedef struct MemMapEntry { hwaddr base; hwaddr size; @@ -162,7 +167,7 @@ static inline int virt_gicv3_redist_region_count(VirtMa= chineState *vms) uint32_t redist0_capacity =3D vms->memmap[VIRT_GIC_REDIST].size / GICV3_REDIST_SIZE; =20 - assert(vms->gic_version =3D=3D 3); + assert(vms->gic_version =3D=3D VIRT_GIC_VERSION_3); =20 return vms->smp_cpus > redist0_capacity ? 2 : 1; } --=20 2.20.1 From nobody Thu Nov 13 21:52:15 2025 Delivered-To: importer@patchew.org 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; 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=1583059408; cv=none; d=zohomail.com; s=zohoarc; b=gYtLQiQ+Lr6sZDOu62Ffm484BcRBhrlxmi1q208x+khwG2TKEPR5FOlg5Opac+Zj0uuChOU+mujH3G4q3bDcpQqubHeMPhvMLUByxrlOpYCSwEiAugt52CM+Wh3x9koweWSkDWnYfNoO6L0fsEGGL2FtZoyHqJQ/X7mhjWrR8Q4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583059408; 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=IEMzmuyV2juLppS5NQsF4RN5lh06edhDi1oAMTXdTOo=; b=XACOW0rF6Z9K5KGT0DmFvJU0nbZypDNKWWbehvh2mDmKgL++NhiqcpBCgv1isLpKmg4CM3WOPx3irtjruwIt+znJ9O/7ULkyTPRG3FvyCGs5FJvtTCZ4Gtouz13Di17bUbP1swO8m8d2AvPGIOG3ZWhGwcrgQu9qKSKReF1Q7cU= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1583059408546883.2502803445212; Sun, 1 Mar 2020 02:43:28 -0800 (PST) Received: from localhost ([::1]:47560 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M4F-0006Vq-BM for importer@patchew.org; Sun, 01 Mar 2020 05:43:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52943) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M1s-0001Xg-Me for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8M1r-0001lK-Ib for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:00 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:60477 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8M1r-0001l5-F0 for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:40:59 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-402-45Th_9YTMzWU06szO4dmCQ-1; Sun, 01 Mar 2020 05:40:57 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 575D3100550E; Sun, 1 Mar 2020 10:40:56 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8B1E560C80; Sun, 1 Mar 2020 10:40:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583059259; 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=IEMzmuyV2juLppS5NQsF4RN5lh06edhDi1oAMTXdTOo=; b=GKKOhre+U5ytxAykqXTn85DeTghdSbH7pB7If8HeAE/5kYfWeNRkbgvIWq748X8VcBiNAh 4K+wBPSyK4bgCCZ5YEprR34/n3D7DCfN1vrph2nBBMrJioZfihUDCvdmS1FeEFEI6QVQDC mJ/niJ+A3xmOQfmsivEk/xnCypIvhqE= X-MC-Unique: 45Th_9YTMzWU06szO4dmCQ-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org Subject: [PATCH v2 3/6] hw/arm/virt: Introduce finalize_gic_version() Date: Sun, 1 Mar 2020 11:40:37 +0100 Message-Id: <20200301104040.15186-4-eric.auger@redhat.com> In-Reply-To: <20200301104040.15186-1-eric.auger@redhat.com> References: <20200301104040.15186-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maz@kernel.org, drjones@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Let's move the code which freezes which gic-version to be applied in a dedicated function. We also now set by default the VIRT_GIC_VERSION_NO_SET. This eventually turns into the legacy v2 choice in the finalize() function. Signed-off-by: Eric Auger Reviewed-by: Andrew Jones Reviewed-by: Richard Henderson --- hw/arm/virt.c | 54 ++++++++++++++++++++++++++----------------- include/hw/arm/virt.h | 1 + 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index b449a445de..338d56999f 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1534,6 +1534,37 @@ static void virt_set_memmap(VirtMachineState *vms) } } =20 +/* + * finalize_gic_version - Determines the final gic_version + * according to the gic-version property + * + * Default GIC type is v2 + */ +static void finalize_gic_version(VirtMachineState *vms) +{ + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST || + vms->gic_version =3D=3D VIRT_GIC_VERSION_MAX) { + if (!kvm_enabled()) { + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST) { + error_report("gic-version=3Dhost requires KVM"); + exit(1); + } else { + /* "max": currently means 3 for TCG */ + vms->gic_version =3D VIRT_GIC_VERSION_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); + } + } + } else if (vms->gic_version =3D=3D VIRT_GIC_VERSION_NOSEL) { + vms->gic_version =3D VIRT_GIC_VERSION_2; + } +} + static void machvirt_init(MachineState *machine) { VirtMachineState *vms =3D VIRT_MACHINE(machine); @@ -1560,25 +1591,7 @@ static void machvirt_init(MachineState *machine) /* We can probe only here because during property set * KVM is not available yet */ - if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST || - vms->gic_version =3D=3D VIRT_GIC_VERSION_MAX) { - if (!kvm_enabled()) { - if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST) { - error_report("gic-version=3Dhost requires KVM"); - exit(1); - } else { - /* "max": currently means 3 for TCG */ - vms->gic_version =3D VIRT_GIC_VERSION_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); - } - } - } + finalize_gic_version(vms); =20 if (!cpu_type_valid(machine->cpu_type)) { error_report("mach-virt: CPU type %s not supported", machine->cpu_= type); @@ -2138,8 +2151,7 @@ static void virt_instance_init(Object *obj) "Set on/off to enable/disable using " "physical address space above 32 bits", NULL); - /* Default GIC type is v2 */ - vms->gic_version =3D VIRT_GIC_VERSION_2; + vms->gic_version =3D VIRT_GIC_VERSION_NOSEL; object_property_add_str(obj, "gic-version", virt_get_gic_version, virt_set_gic_version, NULL); object_property_set_description(obj, "gic-version", diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 6325b98269..5785416480 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -95,6 +95,7 @@ typedef enum VirtIOMMUType { VIRT_IOMMU_VIRTIO, } VirtIOMMUType; =20 +#define VIRT_GIC_VERSION_NOSEL (-2) #define VIRT_GIC_VERSION_MAX (-1) #define VIRT_GIC_VERSION_HOST 0 #define VIRT_GIC_VERSION_2 2 --=20 2.20.1 From nobody Thu Nov 13 21:52:15 2025 Delivered-To: importer@patchew.org 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; 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=1583059406; cv=none; d=zohomail.com; s=zohoarc; b=hYBLA5zh9PS+5DN+AK0S4KHp+MgvZVj4evRkUHSyMwgqVLaEqJ9D2lnGrRHj3/1GFH9RKwaxo7PZWsUaoaaXF4lh5ShuqA0o25IzUJT8NyeGEp9hUL92FoyjBJ04xNFpBByWgGtMqhCMtMkviLhtwCnb0kCCZAj3HzBBFwjlxz8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583059406; 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=LbMJWaSMveCKH0fxbinwHNcIfj7hkCYL8NMTeMzPqU8=; b=lDnXmOU8MLhtINQ3nn0HPPCJl3krWOfC4wU/J4BvayfnCewmWgoGt2WAdjMQypGPgdX7X2N4KKiWx3LgUtldQTXnTNIyqthp1NvaOOuhfXqyf99eXhn3qqyxesCAp2zEf5G92Jepm5d6I/Oy82rERn90P/WanBOiX8fW54/mVzQ= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1583059406164890.5239766354523; Sun, 1 Mar 2020 02:43:26 -0800 (PST) Received: from localhost ([::1]:47558 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M4D-0006QD-0b for importer@patchew.org; Sun, 01 Mar 2020 05:43:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52983) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M1u-0001c1-Gu for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8M1t-0001lt-EM for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:02 -0500 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:44647 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8M1t-0001ll-Am for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:01 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-313-0SUvEUVMNN-kt1aup0sybw-1; Sun, 01 Mar 2020 05:40:59 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 73DF6800D5A; Sun, 1 Mar 2020 10:40:58 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id AEC8C60C80; Sun, 1 Mar 2020 10:40:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583059261; 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=LbMJWaSMveCKH0fxbinwHNcIfj7hkCYL8NMTeMzPqU8=; b=XYjxOgdT8ZMn0Y7afPM+OW27pxPUVzDlD4+IhrZC+nQ2OWUjd2uyh3mGad8kFtVLmtXk6/ 7hpff8isuHbkxdqIof1Oue+qx9qmTX76VaxuvlakH4kPBknfO0qMQatCqdi5HQpj7C2W26 EGHSY/m0MIB6/EINoGJ1MN94F/2J/lw= X-MC-Unique: 0SUvEUVMNN-kt1aup0sybw-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org Subject: [PATCH v2 4/6] target/arm/kvm: Let kvm_arm_vgic_probe() return a bitmap Date: Sun, 1 Mar 2020 11:40:38 +0100 Message-Id: <20200301104040.15186-5-eric.auger@redhat.com> In-Reply-To: <20200301104040.15186-1-eric.auger@redhat.com> References: <20200301104040.15186-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maz@kernel.org, drjones@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Convert kvm_arm_vgic_probe() so that it returns a bitmap of supported in-kernel emulation VGIC versions instead of the max version: at the moment values can be v2 and v3. This allows to expose the case where the host GICv3 also supports GICv2 emulation. This will be useful to choose the default version in KVM accelerated mode. Signed-off-by: Eric Auger Reviewed-by: Andrew Jones Reviewed-by: Richard Henderson --- hw/arm/virt.c | 11 +++++++++-- target/arm/kvm.c | 14 ++++++++------ target/arm/kvm_arm.h | 3 +++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 338d56999f..eb8c57c85e 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1553,11 +1553,18 @@ static void finalize_gic_version(VirtMachineState *= vms) vms->gic_version =3D VIRT_GIC_VERSION_3; } } else { - vms->gic_version =3D kvm_arm_vgic_probe(); - if (!vms->gic_version) { + int probe_bitmap =3D kvm_arm_vgic_probe(); + + if (!probe_bitmap) { error_report( "Unable to determine GIC version supported by host"); exit(1); + } else { + if (probe_bitmap & KVM_ARM_VGIC_V3) { + vms->gic_version =3D VIRT_GIC_VERSION_3; + } else { + vms->gic_version =3D VIRT_GIC_VERSION_2; + } } } } else if (vms->gic_version =3D=3D VIRT_GIC_VERSION_NOSEL) { diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 85860e6f95..390077c518 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -874,15 +874,17 @@ int kvm_arch_irqchip_create(KVMState *s) =20 int kvm_arm_vgic_probe(void) { + int val =3D 0; + if (kvm_create_device(kvm_state, KVM_DEV_TYPE_ARM_VGIC_V3, true) =3D=3D 0) { - return 3; - } else if (kvm_create_device(kvm_state, - KVM_DEV_TYPE_ARM_VGIC_V2, true) =3D=3D 0)= { - return 2; - } else { - return 0; + val |=3D KVM_ARM_VGIC_V3; } + if (kvm_create_device(kvm_state, + KVM_DEV_TYPE_ARM_VGIC_V2, true) =3D=3D 0) { + val |=3D KVM_ARM_VGIC_V2; + } + return val; } =20 int kvm_arm_set_irq(int cpu, int irqtype, int irq, int level) diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index ae9e075d75..48bf5e16d5 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -15,6 +15,9 @@ #include "exec/memory.h" #include "qemu/error-report.h" =20 +#define KVM_ARM_VGIC_V2 (1 << 0) +#define KVM_ARM_VGIC_V3 (1 << 1) + /** * kvm_arm_vcpu_init: * @cs: CPUState --=20 2.20.1 From nobody Thu Nov 13 21:52:15 2025 Delivered-To: importer@patchew.org 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; 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=1583059338; cv=none; d=zohomail.com; s=zohoarc; b=AxUOaG4wH3+c77Y3q+/1FjwFMmHIfOouttkT11kwDIWj4lltNjU5HVUNcexASEay9c1jNx+ncT5q9ll+xy1r9H/K5oErGiizOdCL3i2FS2Gsz1025GkkwHqTjPwk2sp4IssqDZoXAFPA0vM/Jeo/rNHizCM6H1me3aG/bzYAh5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583059338; 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=or+pwHOdBKJ1Y8fuxHbiGTGb/Xj7RPu4QnwCSHvcEkY=; b=k+jNHM07zSxnB+/KmVr70L99M0uyTEO8OgySKzYRoM1zLZLA1vYeQ396qFQ5tmZHvifeVp7QK/S59KJ/zPKRJo1tJNm9p+ERoPSuJrKVmJlkoaiODVTsz23ZNGTmqQYi2155ZqeGs7u2xWsEWeFcpICelvbYnyAaHxjRYccYyhM= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 158305933886532.52929445965219; Sun, 1 Mar 2020 02:42:18 -0800 (PST) Received: from localhost ([::1]:47532 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M37-0003bH-MH for importer@patchew.org; Sun, 01 Mar 2020 05:42:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53079) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M1z-0001mS-Td for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8M1y-0001oA-Pz for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:07 -0500 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:55376 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8M1y-0001o0-Mm for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:06 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-62-iglKXyYyPP2rqsIh2ny30Q-1; Sun, 01 Mar 2020 05:41:01 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 93E26800D4E; Sun, 1 Mar 2020 10:41:00 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id CC4DD60C80; Sun, 1 Mar 2020 10:40:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583059266; 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=or+pwHOdBKJ1Y8fuxHbiGTGb/Xj7RPu4QnwCSHvcEkY=; b=YOpAbX5LtAwdAFcC3oePRtKPOVW71jKLRbu3TOE/w+OeeWlpgE2fmCyHC3Z5cMjq7OfeV3 +SnMRgLSkvpUTHDUhUp4U+yF20uQehNJhrCI//Uv6wDOPcSDs2VoJd77IMcxR3NI7fSxU8 iyfu/VdCtJVyRIVKQqupABok63QYwp8= X-MC-Unique: iglKXyYyPP2rqsIh2ny30Q-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org Subject: [PATCH v2 5/6] hw/arm/virt: kvm: Check the chosen gic version is supported by the host Date: Sun, 1 Mar 2020 11:40:39 +0100 Message-Id: <20200301104040.15186-6-eric.auger@redhat.com> In-Reply-To: <20200301104040.15186-1-eric.auger@redhat.com> References: <20200301104040.15186-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.61 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maz@kernel.org, drjones@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Restructure the finalize_gic_version with switch cases and, in KVM mode, explictly check whether the chosen version is supported by the host. if the end-user explicitly sets v2/v3 and this is not supported by the host, then the user gets an explicit error message. Signed-off-by: Eric Auger Reviewed-by: Andrew Jones Reviewed-by: Richard Henderson --- hw/arm/virt.c | 76 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index eb8c57c85e..610bfc9ee9 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1542,33 +1542,61 @@ static void virt_set_memmap(VirtMachineState *vms) */ static void finalize_gic_version(VirtMachineState *vms) { - if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST || - vms->gic_version =3D=3D VIRT_GIC_VERSION_MAX) { - if (!kvm_enabled()) { - if (vms->gic_version =3D=3D VIRT_GIC_VERSION_HOST) { - error_report("gic-version=3Dhost requires KVM"); - exit(1); - } else { - /* "max": currently means 3 for TCG */ - vms->gic_version =3D VIRT_GIC_VERSION_3; - } - } else { - int probe_bitmap =3D kvm_arm_vgic_probe(); + if (kvm_enabled()) { + int probe_bitmap =3D kvm_arm_vgic_probe(); =20 - if (!probe_bitmap) { - error_report( - "Unable to determine GIC version supported by host"); - exit(1); - } else { - if (probe_bitmap & KVM_ARM_VGIC_V3) { - vms->gic_version =3D VIRT_GIC_VERSION_3; - } else { - vms->gic_version =3D VIRT_GIC_VERSION_2; - } - } + if (!probe_bitmap) { + error_report("Unable to determine GIC version supported by hos= t"); + exit(1); } - } else if (vms->gic_version =3D=3D VIRT_GIC_VERSION_NOSEL) { + + switch (vms->gic_version) { + case VIRT_GIC_VERSION_NOSEL: + vms->gic_version =3D VIRT_GIC_VERSION_2; + break; + case VIRT_GIC_VERSION_HOST: + case VIRT_GIC_VERSION_MAX: + if (probe_bitmap & KVM_ARM_VGIC_V3) { + vms->gic_version =3D VIRT_GIC_VERSION_3; + } else { + vms->gic_version =3D VIRT_GIC_VERSION_2; + } + return; + case VIRT_GIC_VERSION_2: + case VIRT_GIC_VERSION_3: + break; + } + + if (!kvm_irqchip_in_kernel()) { + return; + } + + /* Check chosen version is effectively supported by the host */ + if (vms->gic_version =3D=3D VIRT_GIC_VERSION_2 && + !(probe_bitmap & KVM_ARM_VGIC_V2)) { + error_report("host does not support in-kernel GICv2 emulat= ion"); + exit(1); + } else if (vms->gic_version =3D=3D VIRT_GIC_VERSION_3 && + !(probe_bitmap & KVM_ARM_VGIC_V3)) { + error_report("host does not support in-kernel GICv3 emulat= ion"); + exit(1); + } + return; + } + + /* TCG mode */ + switch (vms->gic_version) { + case VIRT_GIC_VERSION_NOSEL: vms->gic_version =3D VIRT_GIC_VERSION_2; + break; + case VIRT_GIC_VERSION_MAX: + vms->gic_version =3D VIRT_GIC_VERSION_3; + break; + case VIRT_GIC_VERSION_HOST: + error_report("gic-version=3Dhost requires KVM"); + exit(1); + default: /* explicit V2/V3 are left untouched */ + break; } } =20 --=20 2.20.1 From nobody Thu Nov 13 21:52:15 2025 Delivered-To: importer@patchew.org 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; 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=1583059443; cv=none; d=zohomail.com; s=zohoarc; b=lmxDHXzyc9XTKD/anT6O+obinlWIWxJbDCp/uxQMWmX5yPEAzMh1ZIv2y66I/Vzab7n8PS/paeOUGElqsMjBiv+QTUB675/LlTD35MbkObIbAwrjh3jpLyM48NBuNeD2wBlfG0Bio/7VsJ0Nhj/o/JN0PN6sRNeRKe7zQQpP2Ag= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583059443; 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=/PfT/l8PmlPfpYXOLH7rb/lsJEybZL4C79XAA00tJhE=; b=WlS3CJEj6RhSZp3vYHEZYa2ajM/DqEvkMs8IrW5bACW1Fy+B1xxWxpzXmfusFMCr/sQT3BZP1aWLpyyMMfgXG8Z7GQFfEGD+boEK/QX2QJCCLScrBaKilArrE5hGeUxrIOS7TC7EDUIOKusEbngBlkzgSwdbN8/Rme+3EQny3TU= 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) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1583059443532892.9562397066258; Sun, 1 Mar 2020 02:44:03 -0800 (PST) Received: from localhost ([::1]:47562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M4o-0007Mr-CW for importer@patchew.org; Sun, 01 Mar 2020 05:44:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53126) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j8M23-0001ws-IV for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j8M22-0001ow-ID for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:11 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:41951 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j8M22-0001om-F4 for qemu-devel@nongnu.org; Sun, 01 Mar 2020 05:41:10 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-236-jskvppMnNkanzehtZpWQ2g-1; Sun, 01 Mar 2020 05:41:06 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1F22B189F760; Sun, 1 Mar 2020 10:41:05 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id ECA4560C80; Sun, 1 Mar 2020 10:41:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583059270; 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=/PfT/l8PmlPfpYXOLH7rb/lsJEybZL4C79XAA00tJhE=; b=dFQRdYeju6sMEcbz1KFQahH9K2UHg5xSPlcPRU2KwxqC1B7w3zP5HRL2PQW1e9OLyjp3a3 j8+ZvIm6kBbjyhBo9wyP+mkyVtblf6vxRW/ETObkkgcse8z0xUNOtuti6TyJECxx6p+6gG hxGUQ1hIq+VUql/VQ7qH5ytaFd2Io5I= X-MC-Unique: jskvppMnNkanzehtZpWQ2g-1 From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, peter.maydell@linaro.org Subject: [PATCH v2 6/6] hw/arm/virt: kvm: allow gicv3 by default if v2 cannot work Date: Sun, 1 Mar 2020 11:40:40 +0100 Message-Id: <20200301104040.15186-7-eric.auger@redhat.com> In-Reply-To: <20200301104040.15186-1-eric.auger@redhat.com> References: <20200301104040.15186-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maz@kernel.org, drjones@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" At the moment if the end-user does not specify the gic-version along with KVM acceleration, v2 is set by default. However most of the systems now have GICv3 and sometimes they do not support GICv2 compatibility. This patch keeps the default v2 selection in all cases except in the KVM accelerated mode when either - the host does not support GICv2 in-kernel emulation or - number of VCPUS exceeds 8. Those cases did not work anyway so we do not break any compatibility. Now we get v3 selected in such a case. Signed-off-by: Eric Auger Reported-by: Dr. David Alan Gilbert Reviewed-by: Andrew Jones Reviewed-by: Richard Henderson --- hw/arm/virt.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 610bfc9ee9..2d12a7b0b8 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1542,6 +1542,8 @@ static void virt_set_memmap(VirtMachineState *vms) */ static void finalize_gic_version(VirtMachineState *vms) { + unsigned int max_cpus =3D MACHINE(vms)->smp.max_cpus; + if (kvm_enabled()) { int probe_bitmap =3D kvm_arm_vgic_probe(); =20 @@ -1552,7 +1554,17 @@ static void finalize_gic_version(VirtMachineState *v= ms) =20 switch (vms->gic_version) { case VIRT_GIC_VERSION_NOSEL: - vms->gic_version =3D VIRT_GIC_VERSION_2; + if ((probe_bitmap & KVM_ARM_VGIC_V2 && max_cpus <=3D GIC_NCPU)= || + !kvm_irqchip_in_kernel()) { + vms->gic_version =3D VIRT_GIC_VERSION_2; + } else { + /* + * in case the host does not support v2 in-kernel emulatio= n or + * the end-user requested more than 8 VCPUs we now default + * to v3. In any case defaulting to v2 would be broken. + */ + vms->gic_version =3D VIRT_GIC_VERSION_3; + } break; case VIRT_GIC_VERSION_HOST: case VIRT_GIC_VERSION_MAX: --=20 2.20.1