From nobody Thu Nov 13 23:29:24 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: 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