From nobody Fri May  9 03:49:38 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=1584032813; cv=none;
	d=zohomail.com; s=zohoarc;
	b=dkp6tKm5jRYPIMwrSWDKGPSVVD1qv1U1012tPpimt33RGcU0jy/smu5YFkksg6NHH8cXswyoQQa31bQUGAYKAOtcYBRJZraf2vDlDr6N3XrjKpd2YbuX9DUAWZbjk09eeNxNXib0+W/KvDqq1tQ+yK8SMX8HH0oeKLM+vlaprXw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1584032813;
 h=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=Pp0Qd7rAylrm+t6bYKOIAaXuON6hnfSMoBAAsNzgCDc=;
	b=bSOdi+vrRu+0ExHN6x+WIwnADWgQ9PIfKlJD87y/xHW/C+xVyxztHT4G8QrC920ceG3s8ev6vylaOfuw6eQzBnJpyNZAcrRsN4ueW8l9xPzMmhkXH32CCClKu6Epr/5oAJCJUF8n1kBFw1zhcyDhakr/8B5oHwTrz85iTAP7Mzg=
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 1584032813558315.34581096249894;
 Thu, 12 Mar 2020 10:06:53 -0700 (PDT)
Received: from localhost ([::1]:46088 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 1jCRIK-0000Jh-FX
	for importer@patchew.org; Thu, 12 Mar 2020 13:06:52 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:35931)
 by lists.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <peter.maydell@linaro.org>) id 1jCQxs-0000qP-0k
 for qemu-devel@nongnu.org; Thu, 12 Mar 2020 12:45:45 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <peter.maydell@linaro.org>) id 1jCQxq-0005JV-RP
 for qemu-devel@nongnu.org; Thu, 12 Mar 2020 12:45:43 -0400
Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:54214)
 by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)
 (Exim 4.71) (envelope-from <peter.maydell@linaro.org>)
 id 1jCQxq-0005JE-Kw
 for qemu-devel@nongnu.org; Thu, 12 Mar 2020 12:45:42 -0400
Received: by mail-wm1-x32b.google.com with SMTP id 25so6857428wmk.3
 for <qemu-devel@nongnu.org>; Thu, 12 Mar 2020 09:45:42 -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.40
 for <qemu-devel@nongnu.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 12 Mar 2020 09:45:40 -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=Pp0Qd7rAylrm+t6bYKOIAaXuON6hnfSMoBAAsNzgCDc=;
 b=XRJC1MzBldxZB9nziuYqM/r06vnjTYWM4MJsR4G9v1lKmrwdCkwhkC2UYxONq8HZez
 hmOYHskAFx/+BxKJ5mflp5GKhPTPY62zaej3hzE92IKz70fQp+/dvu8RHwo26dotknxS
 cQiipf8euk9dJGk+/ti6YBw/Mi4IbVi8cCfA1txTXdNqEMQq9/SQfZ0cGA+ShN9JwPrU
 vEJV5dLZjCwK1d3VQH9gb7RHMefcn5qHFXom1/eha99+u1BiOUVUGp7fZ5ZFE8w/ujGc
 QXfgEJVMPOlyV3MW+pjqMv6s+WcGYwTnMl+t8p+2D/rgtj7Tcg1oYCdp7hNNmoADK9/S
 Os9w==
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=Pp0Qd7rAylrm+t6bYKOIAaXuON6hnfSMoBAAsNzgCDc=;
 b=iuzAfRcLBb+3Uy7CqjoJGfpJLRYoVG++hSCwEtsHE3/4XOrIc9Bxd2s2FP7uisBztL
 1OVjhO8tl1mtWrykq3t0X3Ozte+URCOplhZAcchReFWYu6/lc/6Eget3B1vnIpTHxGph
 VkF0CuQSHQNhR3W8lR0HsyoMfXf/zHd3lAcD7LSJ6zPzYzQkUXeZO56z4YjIT1FBu5RQ
 maxaj/ncl1q0a+p5+KxKpOWQNXHAv6mjdsxotgTwvcdBjV7ghykO1DneICCZlAhYasxd
 v1hZqBqP8y88WA1jS0s/Fg8S1vsT6q17nZA9yBFR0OtsKAYV7uSOtTugYMxXRQqQBjqy
 uwwg==
X-Gm-Message-State: ANhLgQ0eu+mlo1Ntz3itS8He1+sEizh8T2+otm++2t9tD7gclgpfvDvQ
 T+GOCk5da4uIadp1c57DRbUfnr9MYOCR/Q==
X-Google-Smtp-Source: 
 ADFU+vvfWLb3hKEXXDkWJux4Gok592ibvWZB3z2YpcMFzBesYmj4GC0TFNR9iqLIOOrj2MXDtava1A==
X-Received: by 2002:a1c:7205:: with SMTP id n5mr5921474wmc.95.1584031541392;
 Thu, 12 Mar 2020 09:45:41 -0700 (PDT)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 33/36] target/arm/kvm: Let kvm_arm_vgic_probe() return a bitmap
Date: Thu, 12 Mar 2020 16:44:56 +0000
Message-Id: <20200312164459.25924-34-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-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::32b
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)
Content-Type: text/plain; charset="utf-8"

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

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 <eric.auger@redhat.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20200311131618.7187-5-eric.auger@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 target/arm/kvm_arm.h |  3 +++
 hw/arm/virt.c        | 11 +++++++++--
 target/arm/kvm.c     | 14 ++++++++------
 3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h
index ae9e075d754..48bf5e16d58 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
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index e55cafa014b..a94bc5ddae5 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1554,11 +1554,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 85860e6f954..390077c5182 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)
--=20
2.20.1