[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 5/6] hw/arm/virt: kvm: Check the chosen gic version is sup
From: |
Peter Maydell |
Subject: |
Re: [PATCH v3 5/6] hw/arm/virt: kvm: Check the chosen gic version is supported by the host |
Date: |
Mon, 9 Mar 2020 13:28:34 +0000 |
On Mon, 2 Mar 2020 at 10:55, Eric Auger <address@hidden> wrote:
>
> Restructure the finalize_gic_version with switch cases and, in
> KVM mode, explictly check whether the chosen version is supported
> by the host.
>
> if the end-user explicitly sets v2/v3 and this is not supported by
> the host, then the user gets an explicit error message.
>
> Signed-off-by: Eric Auger <address@hidden>
> Reviewed-by: Richard Henderson <address@hidden>
> Reviewed-by: Andrew Jones <address@hidden>
>
> ---
>
> v2 -> v3:
> - explictly list V2 and V3 in the switch/case
> - fix indent
> ---
> hw/arm/virt.c | 77 +++++++++++++++++++++++++++++++++++----------------
> 1 file changed, 53 insertions(+), 24 deletions(-)
>
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index eb8c57c85e..aeb6c45e51 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -1542,33 +1542,62 @@ static void virt_set_memmap(VirtMachineState *vms)
> */
> static void finalize_gic_version(VirtMachineState *vms)
> {
> - if (vms->gic_version == VIRT_GIC_VERSION_HOST ||
> - vms->gic_version == VIRT_GIC_VERSION_MAX) {
> - if (!kvm_enabled()) {
> - if (vms->gic_version == VIRT_GIC_VERSION_HOST) {
> - error_report("gic-version=host requires KVM");
> - exit(1);
> - } else {
> - /* "max": currently means 3 for TCG */
> - vms->gic_version = VIRT_GIC_VERSION_3;
> - }
> - } else {
> - int probe_bitmap = kvm_arm_vgic_probe();
> + if (kvm_enabled()) {
> + int probe_bitmap = kvm_arm_vgic_probe();
Previously we would only do kvm_arm_vgic_probe() if the
user asked for 'host' or 'max'. Now we do it always,
which means that if the user is on a really old kernel
where the CREATE_DEVICE ioctl doesn't exist then we
will now fail if the user specifically asked for gicv2,
where previously we (probably) would have succeeded.
I don't think we should put too much weight on continuing
to theoretically support ancient kernels which we're not
actually testing against, but it does seem a bit odd to
probe even if we don't need to know the answer.
More relevant to actual plausible use cases, if
kvm_irqchip_in_kernel() == false, we shouldn't be
probing the kernel to ask what kind of GIC to use.
thanks
-- PMM
- [PATCH v3 0/6] hw/arm/virt: kvm: allow gicv3 by default if v2 cannot work, Eric Auger, 2020/03/02
- [PATCH v3 2/6] hw/arm/virt: Introduce VirtGICType enum type, Eric Auger, 2020/03/02
- [PATCH v3 3/6] hw/arm/virt: Introduce finalize_gic_version(), Eric Auger, 2020/03/02
- [PATCH v3 1/6] hw/arm/virt: Document 'max' value in gic-version property description, Eric Auger, 2020/03/02
- [PATCH v3 4/6] target/arm/kvm: Let kvm_arm_vgic_probe() return a bitmap, Eric Auger, 2020/03/02
- [PATCH v3 5/6] hw/arm/virt: kvm: Check the chosen gic version is supported by the host, Eric Auger, 2020/03/02
- Re: [PATCH v3 5/6] hw/arm/virt: kvm: Check the chosen gic version is supported by the host,
Peter Maydell <=
- [PATCH v3 6/6] hw/arm/virt: kvm: allow gicv3 by default if v2 cannot work, Eric Auger, 2020/03/02