qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [question] hw/arm/virt: about the default gic-version in accelerated


From: Andrew Jones
Subject: Re: [question] hw/arm/virt: about the default gic-version in accelerated mode
Date: Tue, 28 Jan 2020 15:52:41 +0100

On Tue, Jan 28, 2020 at 02:53:25PM +0100, Auger Eric wrote:
> Hi,
> 
> On 1/28/20 1:41 PM, Andrew Jones wrote:
> > On Tue, Jan 28, 2020 at 01:34:06PM +0100, Auger Eric wrote:
> >> Hi Drew,
> >>
> >> On 1/28/20 1:29 PM, Andrew Jones wrote:
> >>> On Tue, Jan 28, 2020 at 10:52:50AM +0000, Peter Maydell wrote:
> >>>> On Tue, 28 Jan 2020 at 10:47, Auger Eric <address@hidden> wrote:
> >>>>> When arm virt machine is run in accelerated mode with "-cpu host
> >>>>> -machine virt", the default gic version is 2.
> >>>>>
> >>>>> I understand the rationale with TCG where we don't have MSI ITS
> >>>>> emulation along with GICv3 so we need to choose GICv2 to get GICv2M
> >>>>> functionality.
> >>>>>
> >>>>> However in KVM mode, I would have expected to see the host GIC probed to
> >>>>> set the same version on guest. Indeed most of our HW now have GICv3
> >>>>> without GICv2 compat mode so our default values lead to weird traces:
> >>>>>
> >>>>> "
> >>>>> qemu-system-aarch64: PMU: KVM_SET_DEVICE_ATTR: Invalid argument
> >>>>> qemu-system-aarch64: failed to set irq for PMU
> >>>>> "
> >>>>>
> >>>>> I would like to propose a patch to improve those errors and also suggest
> >>>>> a hint. But I also wanted to know whether you would accept to change the
> >>>>> default value with KVM and choose the host version instead of 2. For TCG
> >>>>> we would keep v2.
> >>>>
> >>>> As with the -cpu option, the default is there for command
> >>>> line backward compatibility primarily. Even if we had
> >>>> better support for MSI ITS emulation we'd still leave
> >>>> the default at GICv2.
> >>>>
> >>>> If you want "do the best you can, regardless of accelerator"
> >>>> that is "-cpu max -machine gic-version=max".
> >>>>
> >>>
> >>> There is a case where we can probe without breaking backward
> >>> compatibility. That case is kvm-enabled and no gic-version
> >>> specified. The reason it would be safe to probe the GIC version
> >>> is because unless the host was a gicv2 host, then that command
> >>> line wouldn't have worked anyway.
> >> Except if the host GICv3 has a GICv2 compat (which is pretty unlikely)?
> > 
> > Is there a way to probe that? If so, and the setting up of gicv2 on
> > a gicv3 host with the gicv2-compat is the same as setting up gicv2,
> > then we can just choose gicv2 to keep the command line compatibility.
> I think that if the host GICv3 is GICv2 compatible then you can create
> both a KVM_DEV_TYPE_ARM_VGIC_V2 device and a KVM_DEV_TYPE_ARM_VGIC_V3
> device. Otherwise you can only create a KVM_DEV_TYPE_ARM_VGIC_V3 KVM device.

So it should be backward compatible to switch to probing. Just try gicv2
first. If it works, then use it.

Thanks,
drew




reply via email to

[Prev in Thread] Current Thread [Next in Thread]