On 2014/7/8 15:55, Marc Zyngier wrote: > On Tue, Jul 08 2014 at 4:42:56 am BST, wanghaibin <wanghaibin.wang@xxxxxxxxxx> wrote: >> On 2014/6/19 17:45, Andre Przywara wrote: >> >>> With the introduction of a second emulated GIC model we need to let >>> userspace specify the GIC model to use for each VM. Pass the >>> userspace provided value down into the vGIC code to differentiate >>> later. >>> >>> Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> >>> --- >>> arch/arm/kvm/arm.c | 2 +- >>> include/kvm/arm_vgic.h | 4 ++-- >>> virt/kvm/arm/vgic.c | 4 ++-- >>> 3 files changed, 5 insertions(+), 5 deletions(-) >>> >>> diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c >>> index 9ffe962..fa37fa1 100644 >>> --- a/arch/arm/kvm/arm.c >>> +++ b/arch/arm/kvm/arm.c >>> @@ -804,7 +804,7 @@ long kvm_arch_vm_ioctl(struct file *filp, >>> switch (ioctl) { >>> case KVM_CREATE_IRQCHIP: { >>> if (vgic_present) >>> - return kvm_vgic_create(kvm); >>> + return kvm_vgic_create(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); >> >> Weird! In my opinion, qemu can use either KVM_CREATE_IRQCHIP interface >> or kvm_device_ops interface to create the VGIC module. Is there >> should be consider the VGIC_V3? I think qemu create the VGIC device >> should be add the the version of VGIC info. > > Weird? No. KVM_CREATE_IRQCHIP is now a deprecated interface on ARM, and > will only create a GICv2, forever. This interface doesn't offer any of > the flexibility we require for GICv3. How would you tell the kernel that > you want a GICv3 when KVM_CREATE_IRQCHIP doesn't even take a parameter? OK, I get it! the qemu will test to create device first, if success(now kvm has the capability), there will skip the old KVM_CREATE_IRQCHIP interface, and will real create device in kvm_arm_gic_realize(here, we already know which version of gic will be created in virt.c or vexpress.c). It seems that the KVM_CREATE_IRQCHIP interface will be unuseful for now and later kvm version, and for the old kvm version, the KVM_CREATE_IRQCHIP interface may be useful, but it's not support VGICv3. Thanks! > > The way to create a GICv3 is to use KVM_CREATE_DEVICE, which is > flexible and extensible. GICv2 has already been converted to this. > > Thanks, > > M. _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm