mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
kvm: require KVM_IRQFD for kernel irqchip
KVM_IRQFD was introduced in Linux 2.6.32, and since then it has always been available on architectures that support an in-kernel interrupt controller. We can require it unconditionally. Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
cc5e719e2c
commit
a788260b20
5 changed files with 10 additions and 14 deletions
|
@ -91,7 +91,6 @@ bool kvm_split_irqchip;
|
|||
bool kvm_async_interrupts_allowed;
|
||||
bool kvm_halt_in_kernel_allowed;
|
||||
bool kvm_eventfds_allowed;
|
||||
bool kvm_irqfds_allowed;
|
||||
bool kvm_resamplefds_allowed;
|
||||
bool kvm_msi_via_irqfd_allowed;
|
||||
bool kvm_gsi_routing_allowed;
|
||||
|
@ -2128,10 +2127,6 @@ static int kvm_irqchip_assign_irqfd(KVMState *s, EventNotifier *event,
|
|||
}
|
||||
}
|
||||
|
||||
if (!kvm_irqfds_enabled()) {
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
return kvm_vm_ioctl(s, KVM_IRQFD, &irqfd);
|
||||
}
|
||||
|
||||
|
@ -2292,6 +2287,11 @@ static void kvm_irqchip_create(KVMState *s)
|
|||
return;
|
||||
}
|
||||
|
||||
if (kvm_check_extension(s, KVM_CAP_IRQFD) <= 0) {
|
||||
fprintf(stderr, "kvm: irqfd not implemented\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* 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);
|
||||
|
@ -2589,9 +2589,6 @@ static int kvm_init(MachineState *ms)
|
|||
kvm_eventfds_allowed =
|
||||
(kvm_check_extension(s, KVM_CAP_IOEVENTFD) > 0);
|
||||
|
||||
kvm_irqfds_allowed =
|
||||
(kvm_check_extension(s, KVM_CAP_IRQFD) > 0);
|
||||
|
||||
kvm_resamplefds_allowed =
|
||||
(kvm_check_extension(s, KVM_CAP_IRQFD_RESAMPLE) > 0);
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@ KVMState *kvm_state;
|
|||
bool kvm_kernel_irqchip;
|
||||
bool kvm_async_interrupts_allowed;
|
||||
bool kvm_eventfds_allowed;
|
||||
bool kvm_irqfds_allowed;
|
||||
bool kvm_resamplefds_allowed;
|
||||
bool kvm_msi_via_irqfd_allowed;
|
||||
bool kvm_gsi_routing_allowed;
|
||||
|
|
|
@ -123,7 +123,7 @@ static void kvm_arm_its_realize(DeviceState *dev, Error **errp)
|
|||
|
||||
kvm_msi_use_devid = true;
|
||||
kvm_gsi_direct_mapping = false;
|
||||
kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled();
|
||||
kvm_msi_via_irqfd_allowed = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -37,7 +37,6 @@ extern bool kvm_split_irqchip;
|
|||
extern bool kvm_async_interrupts_allowed;
|
||||
extern bool kvm_halt_in_kernel_allowed;
|
||||
extern bool kvm_eventfds_allowed;
|
||||
extern bool kvm_irqfds_allowed;
|
||||
extern bool kvm_resamplefds_allowed;
|
||||
extern bool kvm_msi_via_irqfd_allowed;
|
||||
extern bool kvm_gsi_routing_allowed;
|
||||
|
@ -102,8 +101,10 @@ extern bool kvm_msi_use_devid;
|
|||
* Returns: true if we can use irqfds to inject interrupts into
|
||||
* a KVM CPU (ie the kernel supports irqfds and we are running
|
||||
* with a configuration where it is meaningful to use them).
|
||||
*
|
||||
* Always available if running with in-kernel irqchip.
|
||||
*/
|
||||
#define kvm_irqfds_enabled() (kvm_irqfds_allowed)
|
||||
#define kvm_irqfds_enabled() kvm_irqchip_in_kernel()
|
||||
|
||||
/**
|
||||
* kvm_resamplefds_enabled:
|
||||
|
@ -167,7 +168,6 @@ extern bool kvm_msi_use_devid;
|
|||
#define kvm_async_interrupts_enabled() (false)
|
||||
#define kvm_halt_in_kernel() (false)
|
||||
#define kvm_eventfds_enabled() (false)
|
||||
#define kvm_irqfds_enabled() (false)
|
||||
#define kvm_resamplefds_enabled() (false)
|
||||
#define kvm_msi_via_irqfd_enabled() (false)
|
||||
#define kvm_gsi_routing_allowed() (false)
|
||||
|
|
|
@ -1420,7 +1420,7 @@ void kvm_riscv_aia_create(MachineState *machine, uint64_t group_shift,
|
|||
exit(1);
|
||||
}
|
||||
|
||||
kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled();
|
||||
kvm_msi_via_irqfd_allowed = true;
|
||||
}
|
||||
|
||||
static void kvm_cpu_instance_init(CPUState *cs)
|
||||
|
|
Loading…
Reference in a new issue