From nobody Thu May  8 01:53:13 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=linaro.org
ARC-Seal: i=1; a=rsa-sha256; t=1584032600; cv=none;
	d=zohomail.com; s=zohoarc;
	b=U29EucQWbcYG/gu+ntcd1wjqrT1k1zggtGTBismcC/WDg66Q20lyYobUxtWHG3vyKAYKNvzuloqGIAtuKSgiTbIAkm0qqvUfDm0fA1zNwddADb3U4tTCOS8Uu/7JLYM0OBS38OYXXorsUpkpzK/SgzAb34bpD2b5Xb8a7LmnOeo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1584032600;
 h=Content-Type:Content-Transfer-Encoding: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=LW+uhVLtDVUYFrSt24tGGyA8LHnhD06A1jm/O2Dydpk=;
	b=gwgsTPEr/KAmmdiLzabzJ5I/i9w3nTEbQ4ScW8wNwnUGh+Ng4WitM2peL5vRxZuc02TNOiNZ9jQ6JkMdWg4EUvZQ7xb7Ha1miUt7h9i2Ev+uOIycSZ4vpTuLPj8b7eqp2ALyglY76AgQ9wEJsfpu/UFFIMFM4nOr0pgr1ZBT4Zw=
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=<peter.maydell@linaro.org> (p=none dis=none)
 header.from=<peter.maydell@linaro.org>
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1584032600701846.3125311856915;
 Thu, 12 Mar 2020 10:03:20 -0700 (PDT)
Received: from localhost ([::1]:45968 helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces+importer=patchew.org@nongnu.org>)
	id 1jCREt-0003wx-Fv
	for importer@patchew.org; Thu, 12 Mar 2020 13:03:19 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:35903)
 by lists.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <peter.maydell@linaro.org>) id 1jCQxq-0000lz-DD
 for qemu-devel@nongnu.org; Thu, 12 Mar 2020 12:45:43 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <peter.maydell@linaro.org>) id 1jCQxo-0005Ie-Rs
 for qemu-devel@nongnu.org; Thu, 12 Mar 2020 12:45:42 -0400
Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:35242)
 by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)
 (Exim 4.71) (envelope-from <peter.maydell@linaro.org>)
 id 1jCQxo-0005IR-K8
 for qemu-devel@nongnu.org; Thu, 12 Mar 2020 12:45:40 -0400
Received: by mail-wm1-x333.google.com with SMTP id m3so7127477wmi.0
 for <qemu-devel@nongnu.org>; Thu, 12 Mar 2020 09:45:40 -0700 (PDT)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148])
 by smtp.gmail.com with ESMTPSA id j15sm36838640wrp.85.2020.03.12.09.45.38
 for <qemu-devel@nongnu.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 12 Mar 2020 09:45:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=from:to:subject:date:message-id:in-reply-to:references:mime-version
 :content-transfer-encoding;
 bh=LW+uhVLtDVUYFrSt24tGGyA8LHnhD06A1jm/O2Dydpk=;
 b=euoNpR0zJ0xaOGfQPCASYBml2PVfr0s3neeidYkZzOs9iQycoiqyi9JxKT+QIEjds/
 ENPGz2w18J0t0/VcDvUD2/WgVcuyOmFXjvLAWw9YXDRYJHg3AmgLKc8EUQb5z0obBdpA
 XoEvC8YhU9ymOkgRcVSvMGBQeKiau7A70E9L0vXzmb3Y9NUALr+movcDgKCDEsaTsbHV
 8+YoJy2QwoVHWS0bc/ytahcQi8k41xUzZ/rmg3OlXERcguFE0Lz9a/lstjVjRyf1RLP5
 qoMnMLVhxjejPWr0/xGtZzEtAZxuW67Q9Pxwoh7omXa8+s8QomH6L1WyC7zfZU89NsLf
 ngzA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=LW+uhVLtDVUYFrSt24tGGyA8LHnhD06A1jm/O2Dydpk=;
 b=KXnzPE+fQXNSpTjVcaAkXwCcead187WAYNAu0aq/yD8IuvLfE99dc/gct+CtZk3gOS
 xc4dR19G/0MHoNiC6JjuCFN6utIee8dQR79WMf0lGJeKECrWR8KwjQDfy8zspVsQHqb3
 KjPdMi4cyeWg4K4cQKaUlz9NpOSEXSNmB13kXqTqZfqQdPKrTRQRSOFtMnKP75eT887g
 4wO2oviyv6qh/HMqE/Wb6WrEgctqP1H6Wi5dFi/ge4Ypl2gCzji2X3SJx89Ad5eySwn8
 WxOCw/r+h23YEFHTQhuqjEDPBcAt6CF7HDRW04alAZvA38UeiG5NQ8K+Or9KxgfOqECv
 OqzA==
X-Gm-Message-State: ANhLgQ0ouO0vjuOHJcjeKzvqJ27MlGeDtxQr3Ev7OU4gGhPhyKyEn2/d
 2rs7LewWvAzDh7CfhSXYJhZ4uROd0+vz7Q==
X-Google-Smtp-Source: 
 ADFU+vvik/FlM3IXtJ9k3iyLgKslKazyKDJDOtUq4OGNS1saa/KpDx9nX+yvnQpagX7K0wTqvQcRpg==
X-Received: by 2002:a7b:c7cd:: with SMTP id z13mr5401096wmk.97.1584031539304;
 Thu, 12 Mar 2020 09:45:39 -0700 (PDT)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 31/36] hw/arm/virt: Introduce VirtGICType enum type
Date: Thu, 12 Mar 2020 16:44:54 +0000
Message-Id: <20200312164459.25924-32-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200312164459.25924-1-peter.maydell@linaro.org>
References: <20200312164459.25924-1-peter.maydell@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
 recognized.
X-Received-From: 2a00:1450:4864:20::333
X-BeenThere: qemu-devel@nongnu.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: <qemu-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org
Sender: "Qemu-devel" <qemu-devel-bounces+importer=patchew.org@nongnu.org>
X-ZohoMail-DKIM: pass (identity @linaro.org)

From: Eric Auger <eric.auger@redhat.com>

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
a dedicated enum type and let vms->gic_version take this
type.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@redhat.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Message-id: 20200311131618.7187-3-eric.auger@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 include/hw/arm/virt.h | 11 +++++++++--
 hw/arm/virt.c         | 30 +++++++++++++++---------------
 2 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
index 02f500cb8e2..c0827cacdf3 100644
--- a/include/hw/arm/virt.h
+++ b/include/hw/arm/virt.h
@@ -95,6 +95,13 @@ typedef enum VirtIOMMUType {
     VIRT_IOMMU_VIRTIO,
 } VirtIOMMUType;
=20
+typedef enum VirtGICType {
+    VIRT_GIC_VERSION_MAX,
+    VIRT_GIC_VERSION_HOST,
+    VIRT_GIC_VERSION_2,
+    VIRT_GIC_VERSION_3,
+} VirtGICType;
+
 typedef struct MemMapEntry {
     hwaddr base;
     hwaddr size;
@@ -123,7 +130,7 @@ typedef struct {
     bool highmem_ecam;
     bool its;
     bool virt;
-    int32_t gic_version;
+    VirtGICType gic_version;
     VirtIOMMUType iommu;
     uint16_t virtio_iommu_bdf;
     struct arm_boot_info bootinfo;
@@ -162,7 +169,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;
 }
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 7c38c6c7f91..4ed1f0cb2e5 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -299,7 +299,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);
@@ -440,7 +440,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",
@@ -519,7 +519,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);
@@ -1470,7 +1470,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;
@@ -1561,15 +1561,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();
@@ -1628,7 +1628,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
@@ -1856,7 +1856,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);
 }
@@ -1866,13 +1866,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");
@@ -2141,7 +2141,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",
--=20
2.20.1