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