[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 14/24] kvm: assume that many ioeventfds can be created
|
From: |
Paolo Bonzini |
|
Subject: |
[PULL 14/24] kvm: assume that many ioeventfds can be created |
|
Date: |
Thu, 26 Oct 2023 01:27:07 +0200 |
NR_IOBUS_DEVS was increased to 200 in Linux 2.6.34. By Linux 3.5 it had
increased to 1000 and later ioeventfds were changed to not count against
the limit. But the earlier limit of 200 would already be enough for
kvm_check_many_ioeventfds() to be true, so remove the check.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
accel/kvm/kvm-all.c | 47 ----------------------------------------
accel/stubs/kvm-stub.c | 5 -----
hw/virtio/virtio-pci.c | 4 ----
include/sysemu/kvm.h | 1 -
include/sysemu/kvm_int.h | 1 -
5 files changed, 58 deletions(-)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 50717a0d634..05be687be1b 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1253,43 +1253,6 @@ static int kvm_set_ioeventfd_pio(int fd, uint16_t addr,
uint16_t val,
}
-static int kvm_check_many_ioeventfds(void)
-{
- /* Userspace can use ioeventfd for io notification. This requires a host
- * that supports eventfd(2) and an I/O thread; since eventfd does not
- * support SIGIO it cannot interrupt the vcpu.
- *
- * Older kernels have a 6 device limit on the KVM io bus. Find out so we
- * can avoid creating too many ioeventfds.
- */
-#if defined(CONFIG_EVENTFD)
- int ioeventfds[7];
- int i, ret = 0;
- for (i = 0; i < ARRAY_SIZE(ioeventfds); i++) {
- ioeventfds[i] = eventfd(0, EFD_CLOEXEC);
- if (ioeventfds[i] < 0) {
- break;
- }
- ret = kvm_set_ioeventfd_pio(ioeventfds[i], 0, i, true, 2, true);
- if (ret < 0) {
- close(ioeventfds[i]);
- break;
- }
- }
-
- /* Decide whether many devices are supported or not */
- ret = i == ARRAY_SIZE(ioeventfds);
-
- while (i-- > 0) {
- kvm_set_ioeventfd_pio(ioeventfds[i], 0, i, false, 2, true);
- close(ioeventfds[i]);
- }
- return ret;
-#else
- return 0;
-#endif
-}
-
static const KVMCapabilityInfo *
kvm_check_extension_list(KVMState *s, const KVMCapabilityInfo *list)
{
@@ -2648,8 +2611,6 @@ static int kvm_init(MachineState *ms)
memory_listener_register(&kvm_coalesced_pio_listener,
&address_space_io);
- s->many_ioeventfds = kvm_check_many_ioeventfds();
-
s->sync_mmu = !!kvm_vm_check_extension(kvm_state, KVM_CAP_SYNC_MMU);
if (!s->sync_mmu) {
ret = ram_block_discard_disable(true);
@@ -3218,14 +3179,6 @@ int kvm_max_nested_state_length(void)
return kvm_state->max_nested_state_len;
}
-int kvm_has_many_ioeventfds(void)
-{
- if (!kvm_enabled()) {
- return 0;
- }
- return kvm_state->many_ioeventfds;
-}
-
int kvm_has_gsi_routing(void)
{
#ifdef KVM_CAP_IRQ_ROUTING
diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c
index 19d58f2778f..b2d8885853f 100644
--- a/accel/stubs/kvm-stub.c
+++ b/accel/stubs/kvm-stub.c
@@ -40,11 +40,6 @@ bool kvm_has_sync_mmu(void)
return false;
}
-int kvm_has_many_ioeventfds(void)
-{
- return 0;
-}
-
int kvm_on_sigbus_vcpu(CPUState *cpu, int code, void *addr)
{
return 1;
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index af1f4bc187c..5f614334ec4 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -2114,10 +2114,6 @@ static void virtio_pci_realize(PCIDevice *pci_dev, Error
**errp)
bool pcie_port = pci_bus_is_express(pci_get_bus(pci_dev)) &&
!pci_bus_is_root(pci_get_bus(pci_dev));
- if (kvm_enabled() && !kvm_has_many_ioeventfds()) {
- proxy->flags &= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD;
- }
-
/* fd-based ioevents can't be synchronized in record/replay */
if (replay_mode != REPLAY_MODE_NONE) {
proxy->flags &= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD;
diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
index bcc9bd96a92..8c5867ba8a4 100644
--- a/include/sysemu/kvm.h
+++ b/include/sysemu/kvm.h
@@ -214,7 +214,6 @@ int kvm_has_vcpu_events(void);
int kvm_has_robust_singlestep(void);
int kvm_has_debugregs(void);
int kvm_max_nested_state_length(void);
-int kvm_has_many_ioeventfds(void);
int kvm_has_gsi_routing(void);
/**
diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h
index 817238b9582..840b905a2e9 100644
--- a/include/sysemu/kvm_int.h
+++ b/include/sysemu/kvm_int.h
@@ -84,7 +84,6 @@ struct KVMState
QTAILQ_HEAD(, kvm_sw_breakpoint) kvm_sw_breakpoints;
#endif
int max_nested_state_len;
- int many_ioeventfds;
int kvm_shadow_mem;
bool kernel_irqchip_allowed;
bool kernel_irqchip_required;
--
2.41.0
- [PULL 04/24] tests/tcg/i386: test-avx: add test cases for SHA new instructions, (continued)
- [PULL 04/24] tests/tcg/i386: test-avx: add test cases for SHA new instructions, Paolo Bonzini, 2023/10/25
- [PULL 05/24] target/i386: group common checks in the decoding phase, Paolo Bonzini, 2023/10/25
- [PULL 06/24] target/i386: validate VEX.W for AVX instructions, Paolo Bonzini, 2023/10/25
- [PULL 08/24] kvm: remove unnecessary stub, Paolo Bonzini, 2023/10/25
- [PULL 03/24] tests/tcg/i386: initialize more registers in test-avx, Paolo Bonzini, 2023/10/25
- [PULL 10/24] kvm: require KVM_CAP_SIGNAL_MSI, Paolo Bonzini, 2023/10/25
- [PULL 07/24] target/i386: check CPUID_PAE to determine 36 bit processor address space, Paolo Bonzini, 2023/10/25
- [PULL 12/24] kvm: require KVM_IRQFD for kernel irqchip, Paolo Bonzini, 2023/10/25
- [PULL 13/24] kvm: drop reference to KVM_CAP_PCI_2_3, Paolo Bonzini, 2023/10/25
- [PULL 09/24] kvm: require KVM_CAP_INTERNAL_ERROR_DATA, Paolo Bonzini, 2023/10/25
- [PULL 14/24] kvm: assume that many ioeventfds can be created,
Paolo Bonzini <=
- [PULL 11/24] kvm: require KVM_IRQFD for kernel irqchip, Paolo Bonzini, 2023/10/25
- [PULL 15/24] kvm: require KVM_CAP_IOEVENTFD and KVM_CAP_IOEVENTFD_ANY_LENGTH, Paolo Bonzini, 2023/10/25
- [PULL 17/24] kvm: i386: move KVM_CAP_IRQ_ROUTING detection to kvm_arch_required_capabilities, Paolo Bonzini, 2023/10/25
- [PULL 18/24] kvm: i386: require KVM_CAP_DEBUGREGS, Paolo Bonzini, 2023/10/25
- [PULL 20/24] kvm: i386: require KVM_CAP_SET_VCPU_EVENTS and KVM_CAP_X86_ROBUST_SINGLESTEP, Paolo Bonzini, 2023/10/25
- [PULL 19/24] kvm: i386: require KVM_CAP_XSAVE, Paolo Bonzini, 2023/10/25
- [PULL 22/24] kvm: i386: require KVM_CAP_ADJUST_CLOCK, Paolo Bonzini, 2023/10/25
- [PULL 23/24] kvm: i386: require KVM_CAP_SET_IDENTITY_MAP_ADDR, Paolo Bonzini, 2023/10/25
- [PULL 21/24] kvm: i386: require KVM_CAP_MCE, Paolo Bonzini, 2023/10/25
- [PULL 16/24] kvm: unify listeners for PIO address space, Paolo Bonzini, 2023/10/25