kvm: Introduce kvm_arch_irqchip_create
Introduce kvm_arch_irqchip_create an arch-specific hook in preparation for architecture-specific use of the device control API to create IRQ chips. Following patches will implement the ARM irqchip create method to prefer the device control API over the older KVM_CREATE_IRQCHIP API. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org> Message-id: 1392687720-26806-3-git-send-email-christoffer.dall@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
876074c228
commit
d6032e06d1
|
@ -319,4 +319,16 @@ int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq);
|
||||||
void kvm_pc_gsi_handler(void *opaque, int n, int level);
|
void kvm_pc_gsi_handler(void *opaque, int n, int level);
|
||||||
void kvm_pc_setup_irq_routing(bool pci_enabled);
|
void kvm_pc_setup_irq_routing(bool pci_enabled);
|
||||||
void kvm_init_irq_routing(KVMState *s);
|
void kvm_init_irq_routing(KVMState *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* kvm_arch_irqchip_create:
|
||||||
|
* @KVMState: The KVMState pointer
|
||||||
|
*
|
||||||
|
* Allow architectures to create an in-kernel irq chip themselves.
|
||||||
|
*
|
||||||
|
* Returns: < 0: error
|
||||||
|
* 0: irq chip was not created
|
||||||
|
* > 0: irq chip was created
|
||||||
|
*/
|
||||||
|
int kvm_arch_irqchip_create(KVMState *s);
|
||||||
#endif
|
#endif
|
||||||
|
|
11
kvm-all.c
11
kvm-all.c
|
@ -1298,10 +1298,17 @@ static int kvm_irqchip_create(KVMState *s)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = kvm_vm_ioctl(s, KVM_CREATE_IRQCHIP);
|
/* First probe and see if there's a arch-specific hook to create the
|
||||||
|
* in-kernel irqchip for us */
|
||||||
|
ret = kvm_arch_irqchip_create(s);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
fprintf(stderr, "Create kernel irqchip failed\n");
|
|
||||||
return ret;
|
return ret;
|
||||||
|
} else if (ret == 0) {
|
||||||
|
ret = kvm_vm_ioctl(s, KVM_CREATE_IRQCHIP);
|
||||||
|
if (ret < 0) {
|
||||||
|
fprintf(stderr, "Create kernel irqchip failed\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kvm_kernel_irqchip = true;
|
kvm_kernel_irqchip = true;
|
||||||
|
|
|
@ -27,3 +27,4 @@ stub-obj-y += vm-stop.o
|
||||||
stub-obj-y += vmstate.o
|
stub-obj-y += vmstate.o
|
||||||
stub-obj-$(CONFIG_WIN32) += fd-register.o
|
stub-obj-$(CONFIG_WIN32) += fd-register.o
|
||||||
stub-obj-y += cpus.o
|
stub-obj-y += cpus.o
|
||||||
|
stub-obj-y += kvm.o
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#include "qemu-common.h"
|
||||||
|
#include "sysemu/kvm.h"
|
||||||
|
|
||||||
|
int kvm_arch_irqchip_create(KVMState *s)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue