There is a doubt about qemu ! At present, when the host kernel (kvm) didn't configure CONFIG_KVM_ARM_VGIC, qemu load guest kernel(without CONFIG_ARCH_TIMER configuration) will be failure, and print: "KVM Cortex-A15 without in-kernel VGIC is not a valid configuration. Check that: * you have passed -machine kernel_irqchip=on to QEMU * your host kernel was built with CONFIG_KVM_ARM_VGIC * the device tree passed to your host kernel has a " valid node for the GIC" In my opinion, loading guest kernel using GIC by qemu's simulating must be successful . (I remeber that the host kernel of brach v5 didn't simulate VGIC in kvm. At that time, we loaded the guest kernel using GIC which qemu simulated). So I think the logic should be like this : case A: When the host kernel didn't configure CONFIG_KVM_ARM_VGIC: 1.Of course, CONFIG_KVM_ARM_TIMER was not configured too, that is, the guest kernel loading don't support ARCH_TIMER(cp15 virtual timer). If the guest kernel configured ARCH_TIMER, loading kernel will be failure, oppositely, loading kernel will be success using GIC which qemu simulated. case B: When the host kernel configured CONFIG_KVM_ARM_VGIC(here, you can configure CONFIG_KVM_ARM_TIMER or not): 1. when the host kernel configured CONFIG_KVM_ARM_TIMER Whether the guest kernel configured ARCH_TIMER or not ,loading kernel will be success. 2. when the host kernel didn't configure CONFIG_KVM_ARM_TIMER If the guest kernel configured ARCH_TIMER ,loading kernel will be failure, oppositely, loading kernel will be success using VGIC which KVM simulated. Code changed as follow: diff --git a/hw/a15mpcore.c b/hw/a15mpcore.c index 828e625..97dafc6 100644 --- a/hw/a15mpcore.c +++ b/hw/a15mpcore.c @@ -43,24 +43,10 @@ static int a15mp_priv_init(SysBusDevice *dev) A15MPPrivState *s = FROM_SYSBUS(A15MPPrivState, dev); SysBusDevice *busdev; - if (kvm_enabled()) { - if (!kvm_irqchip_in_kernel()) { - /* KVM A15 which doesn't use the in-kernel VGIC is not - * a supported combination, because using the cp15 timers - * requires use of the VGIC, and there is no way to hide - * the cp15 timers from a guest. - */ - fprintf(stderr, "KVM Cortex-A15 without in-kernel VGIC is not a " - "valid configuration. Check that:\n" - " * you have passed -machine kernel_irqchip=on to QEMU\n" - " * your host kernel was built with CONFIG_KVM_ARM_VGIC\n" - " * the device tree passed to your host kernel has a " - "valid node for the GIC\n"); - abort(); - } - s->gic = qdev_create(NULL, "kvm-arm_gic"); - } else { - s->gic = qdev_create(NULL, "arm_gic"); + if (!kvm_irqchip_in_kernel()){ + s->gic = qdev_create(NULL, "arm_gic"); + }else{ + s->gic = qdev_create(NULL, "kvm-arm_gic"); I do not know whether this changes is correct... _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm