Loading kvm-all.c +2 −1 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ bool kvm_kernel_irqchip; bool kvm_async_interrupts_allowed; bool kvm_irqfds_allowed; bool kvm_msi_via_irqfd_allowed; bool kvm_gsi_routing_allowed; static const KVMCapabilityInfo kvm_required_capabilites[] = { KVM_CAP_INFO(USER_MEMORY), Loading Loading @@ -1099,7 +1100,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg) struct kvm_irq_routing_entry kroute; int virq; if (!kvm_irqchip_in_kernel()) { if (!kvm_gsi_routing_enabled()) { return -ENOSYS; } Loading kvm-stub.c +1 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ bool kvm_kernel_irqchip; bool kvm_async_interrupts_allowed; bool kvm_irqfds_allowed; bool kvm_msi_via_irqfd_allowed; bool kvm_gsi_routing_allowed; int kvm_init_vcpu(CPUArchState *env) { Loading kvm.h +10 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ extern bool kvm_kernel_irqchip; extern bool kvm_async_interrupts_allowed; extern bool kvm_irqfds_allowed; extern bool kvm_msi_via_irqfd_allowed; extern bool kvm_gsi_routing_allowed; #if defined CONFIG_KVM || !defined NEED_CPU_H #define kvm_enabled() (kvm_allowed) Loading Loading @@ -60,12 +61,21 @@ extern bool kvm_msi_via_irqfd_allowed; */ #define kvm_msi_via_irqfd_enabled() (kvm_msi_via_irqfd_allowed) /** * kvm_gsi_routing_enabled: * * Returns: true if GSI routing is enabled (ie the kernel supports * it and we're running in a configuration that permits it). */ #define kvm_gsi_routing_enabled() (kvm_gsi_routing_allowed) #else #define kvm_enabled() (0) #define kvm_irqchip_in_kernel() (false) #define kvm_async_interrupts_enabled() (false) #define kvm_irqfds_enabled() (false) #define kvm_msi_via_irqfd_enabled() (false) #define kvm_gsi_routing_allowed() (false) #endif struct kvm_run; Loading target-i386/kvm.c +2 −1 Original line number Diff line number Diff line Loading @@ -2049,8 +2049,9 @@ void kvm_arch_init_irq_routing(KVMState *s) } /* We know at this point that we're using the in-kernel * irqchip, so we can use irqfds, and on x86 we know * we can use msi via irqfd. * we can use msi via irqfd and GSI routing. */ kvm_irqfds_allowed = true; kvm_msi_via_irqfd_allowed = true; kvm_gsi_routing_allowed = true; } Loading
kvm-all.c +2 −1 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ bool kvm_kernel_irqchip; bool kvm_async_interrupts_allowed; bool kvm_irqfds_allowed; bool kvm_msi_via_irqfd_allowed; bool kvm_gsi_routing_allowed; static const KVMCapabilityInfo kvm_required_capabilites[] = { KVM_CAP_INFO(USER_MEMORY), Loading Loading @@ -1099,7 +1100,7 @@ int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg) struct kvm_irq_routing_entry kroute; int virq; if (!kvm_irqchip_in_kernel()) { if (!kvm_gsi_routing_enabled()) { return -ENOSYS; } Loading
kvm-stub.c +1 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ bool kvm_kernel_irqchip; bool kvm_async_interrupts_allowed; bool kvm_irqfds_allowed; bool kvm_msi_via_irqfd_allowed; bool kvm_gsi_routing_allowed; int kvm_init_vcpu(CPUArchState *env) { Loading
kvm.h +10 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ extern bool kvm_kernel_irqchip; extern bool kvm_async_interrupts_allowed; extern bool kvm_irqfds_allowed; extern bool kvm_msi_via_irqfd_allowed; extern bool kvm_gsi_routing_allowed; #if defined CONFIG_KVM || !defined NEED_CPU_H #define kvm_enabled() (kvm_allowed) Loading Loading @@ -60,12 +61,21 @@ extern bool kvm_msi_via_irqfd_allowed; */ #define kvm_msi_via_irqfd_enabled() (kvm_msi_via_irqfd_allowed) /** * kvm_gsi_routing_enabled: * * Returns: true if GSI routing is enabled (ie the kernel supports * it and we're running in a configuration that permits it). */ #define kvm_gsi_routing_enabled() (kvm_gsi_routing_allowed) #else #define kvm_enabled() (0) #define kvm_irqchip_in_kernel() (false) #define kvm_async_interrupts_enabled() (false) #define kvm_irqfds_enabled() (false) #define kvm_msi_via_irqfd_enabled() (false) #define kvm_gsi_routing_allowed() (false) #endif struct kvm_run; Loading
target-i386/kvm.c +2 −1 Original line number Diff line number Diff line Loading @@ -2049,8 +2049,9 @@ void kvm_arch_init_irq_routing(KVMState *s) } /* We know at this point that we're using the in-kernel * irqchip, so we can use irqfds, and on x86 we know * we can use msi via irqfd. * we can use msi via irqfd and GSI routing. */ kvm_irqfds_allowed = true; kvm_msi_via_irqfd_allowed = true; kvm_gsi_routing_allowed = true; }