Message ID | 20240326182345.326758-6-eric.auger@redhat.com |
---|---|
State | New |
Headers | show |
Series | ARM Nested Virt Support | expand |
On 3/26/24 08:22, Eric Auger wrote: > From: Haibo Xu<haibo.xu@linaro.org> > > Up to now virt support on guest has been only supported with TCG. > Now it becomes feasible to use it with KVM acceleration. > > Also check only in-kernel GICv3 is used along with KVM EL2. > > Signed-off-by: Haibo Xu<haibo.xu@linaro.org> > Signed-off-by: Miguel Luis<miguel.luis@oracle.com> > Signed-off-by: Eric Auger<eric.auger@redhat.com> > > --- > v2 -> v3: > - check gic version/in-kernel implementation when kvm el2 is set (Peter) > > v1 -> v2: > - fixed test ordering: virt && ((kvm && !kvm_el2) || hvf) [Richard] > - tweeked the commit title & message > --- > hw/arm/virt.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/hw/arm/virt.c b/hw/arm/virt.c index b20b20edf4..e4d6b9bc35 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -759,6 +759,13 @@ static void create_gic(VirtMachineState *vms, MemoryRegion *mem) default: g_assert_not_reached(); } + + if (kvm_enabled() && vms->virt && + (revision != 3 || !kvm_irqchip_in_kernel())) { + error_report("KVM EL2 only is supported with in-kernel GICv3"); + exit(1); + } + vms->gic = qdev_new(gictype); qdev_prop_set_uint32(vms->gic, "revision", revision); qdev_prop_set_uint32(vms->gic, "num-cpu", smp_cpus); @@ -2155,7 +2162,8 @@ static void machvirt_init(MachineState *machine) exit(1); } - if (vms->virt && (kvm_enabled() || hvf_enabled())) { + if (vms->virt && + ((kvm_enabled() && !kvm_arm_el2_supported()) || hvf_enabled())) { error_report("mach-virt: %s does not support providing " "Virtualization extensions to the guest CPU", current_accel_name());