From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
peter.maydell@linaro.org
Cc: maz@kernel.org, drjones@redhat.com
Subject: [PATCH v3 6/6] hw/arm/virt: kvm: allow gicv3 by default if v2 cannot work
Date: Mon, 2 Mar 2020 11:55:16 +0100 [thread overview]
Message-ID: <20200302105516.5972-7-eric.auger@redhat.com> (raw)
In-Reply-To: <20200302105516.5972-1-eric.auger@redhat.com>
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 <eric.auger@redhat.com>
Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
v2 -> v3:
- add ()
---
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 aeb6c45e51..2d1dee50f8 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 = MACHINE(vms)->smp.max_cpus;
+
if (kvm_enabled()) {
int probe_bitmap = kvm_arm_vgic_probe();
@@ -1552,7 +1554,17 @@ static void finalize_gic_version(VirtMachineState *vms)
switch (vms->gic_version) {
case VIRT_GIC_VERSION_NOSEL:
- vms->gic_version = VIRT_GIC_VERSION_2;
+ if (((probe_bitmap & KVM_ARM_VGIC_V2) && max_cpus <= GIC_NCPU) ||
+ !kvm_irqchip_in_kernel()) {
+ vms->gic_version = VIRT_GIC_VERSION_2;
+ } else {
+ /*
+ * in case the host does not support v2 in-kernel emulation 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 = VIRT_GIC_VERSION_3;
+ }
break;
case VIRT_GIC_VERSION_HOST:
case VIRT_GIC_VERSION_MAX:
--
2.20.1
prev parent reply other threads:[~2020-03-02 10:59 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-02 10:55 [PATCH v3 0/6] hw/arm/virt: kvm: allow gicv3 by default if v2 cannot work Eric Auger
2020-03-02 10:55 ` [PATCH v3 1/6] hw/arm/virt: Document 'max' value in gic-version property description Eric Auger
2020-03-02 10:55 ` [PATCH v3 2/6] hw/arm/virt: Introduce VirtGICType enum type Eric Auger
2020-03-02 11:18 ` Philippe Mathieu-Daudé
2020-03-02 12:18 ` Auger Eric
2020-03-02 12:14 ` Andrew Jones
2020-03-02 17:00 ` Richard Henderson
2020-03-02 10:55 ` [PATCH v3 3/6] hw/arm/virt: Introduce finalize_gic_version() Eric Auger
2020-03-02 10:55 ` [PATCH v3 4/6] target/arm/kvm: Let kvm_arm_vgic_probe() return a bitmap Eric Auger
2020-03-02 10:55 ` [PATCH v3 5/6] hw/arm/virt: kvm: Check the chosen gic version is supported by the host Eric Auger
2020-03-09 13:28 ` Peter Maydell
2020-03-09 14:04 ` Auger Eric
2020-03-10 18:02 ` Auger Eric
2020-03-10 19:55 ` Peter Maydell
2020-03-02 10:55 ` Eric Auger [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200302105516.5972-7-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=drjones@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=maz@kernel.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).