Home
last modified time | relevance | path

Searched refs:irqfd (Results 1 – 23 of 23) sorted by relevance

/linux/drivers/virt/acrn/
H A Dirqfd.c39 static void acrn_irqfd_inject(struct hsm_irqfd *irqfd) in acrn_irqfd_inject() argument
41 struct acrn_vm *vm = irqfd->vm; in acrn_irqfd_inject()
43 acrn_msi_inject(vm, irqfd->msi.msi_addr, in acrn_irqfd_inject()
44 irqfd->msi.msi_data); in acrn_irqfd_inject()
47 static void hsm_irqfd_shutdown(struct hsm_irqfd *irqfd) in hsm_irqfd_shutdown() argument
51 lockdep_assert_held(&irqfd->vm->irqfds_lock); in hsm_irqfd_shutdown()
54 list_del_init(&irqfd->list); in hsm_irqfd_shutdown()
55 eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt); in hsm_irqfd_shutdown()
56 eventfd_ctx_put(irqfd->eventfd); in hsm_irqfd_shutdown()
57 kfree(irqfd); in hsm_irqfd_shutdown()
[all …]
H A Dhsm.c120 struct acrn_irqfd irqfd; in acrn_dev_ioctl() local
412 if (copy_from_user(&irqfd, (void __user *)ioctl_param, in acrn_dev_ioctl()
413 sizeof(irqfd))) in acrn_dev_ioctl()
415 ret = acrn_irqfd_config(vm, &irqfd); in acrn_dev_ioctl()
H A DMakefile3 acrn-y := hsm.o vm.o mm.o ioreq.o ioeventfd.o irqfd.o
/linux/drivers/hv/
H A Dmshv_eventfd.c81 struct mshv_irqfd *irqfd; in mshv_irqfd_resampler_ack() local
90 hlist_for_each_entry_srcu(irqfd, &resampler->rsmplr_irqfd_list, in mshv_irqfd_resampler_ack()
93 if (hv_should_clear_interrupt(irqfd->irqfd_lapic_irq.lapic_control.interrupt_type)) in mshv_irqfd_resampler_ack()
96 eventfd_signal(irqfd->irqfd_resamplefd); in mshv_irqfd_resampler_ack()
154 static int mshv_try_assert_irq_fast(struct mshv_irqfd *irqfd) in mshv_try_assert_irq_fast() argument
156 struct mshv_partition *partition = irqfd->irqfd_partn; in mshv_try_assert_irq_fast()
157 struct mshv_lapic_irq *irq = &irqfd->irqfd_lapic_irq; in mshv_try_assert_irq_fast()
189 static int mshv_try_assert_irq_fast(struct mshv_irqfd *irqfd) in mshv_try_assert_irq_fast() argument
195 static void mshv_assert_irq_slow(struct mshv_irqfd *irqfd) in mshv_assert_irq_slow() argument
197 struct mshv_partition *partition = irqfd->irqfd_partn; in mshv_assert_irq_slow()
[all …]
/linux/virt/kvm/
H A Deventfd.c44 struct kvm_kernel_irqfd *irqfd = in irqfd_inject() local
46 struct kvm *kvm = irqfd->kvm; in irqfd_inject()
48 if (!irqfd->resampler) { in irqfd_inject()
49 kvm_set_irq(kvm, KVM_USERSPACE_IRQ_SOURCE_ID, irqfd->gsi, 1, in irqfd_inject()
51 kvm_set_irq(kvm, KVM_USERSPACE_IRQ_SOURCE_ID, irqfd->gsi, 0, in irqfd_inject()
55 irqfd->gsi, 1, false); in irqfd_inject()
60 struct kvm_kernel_irqfd *irqfd; in irqfd_resampler_notify() local
62 list_for_each_entry_srcu(irqfd, &resampler->list, resampler_link, in irqfd_resampler_notify()
64 eventfd_signal(irqfd->resamplefd); in irqfd_resampler_notify()
92 irqfd_resampler_shutdown(struct kvm_kernel_irqfd *irqfd) in irqfd_resampler_shutdown() argument
[all …]
/linux/arch/um/drivers/
H A Dvfio_user.c150 static int vfio_set_irqs(int device, int start, int count, int *irqfd) in vfio_set_irqs() argument
153 int argsz = sizeof(*irq_set) + sizeof(*irqfd) * count; in vfio_set_irqs()
165 memcpy(irq_set->data, irqfd, sizeof(*irqfd) * count); in vfio_set_irqs()
226 dev->irqfd = uml_kmalloc(sizeof(int) * dev->irq_count, UM_GFP_KERNEL); in uml_vfio_user_setup_device()
227 if (!dev->irqfd) { in uml_vfio_user_setup_device()
232 memset(dev->irqfd, -1, sizeof(int) * dev->irq_count); in uml_vfio_user_setup_device()
234 err = vfio_set_irqs(dev->device, 0, dev->irq_count, dev->irqfd); in uml_vfio_user_setup_device()
241 kfree(dev->irqfd); in uml_vfio_user_setup_device()
251 kfree(dev->irqfd); in uml_vfio_user_teardown_device()
258 int irqfd; in uml_vfio_user_activate_irq() local
[all …]
H A Dvfio_kern.c165 int irqfd = dev->udev.irqfd[index]; in uml_vfio_interrupt() local
171 r = os_read_file(irqfd, &v, sizeof(v)); in uml_vfio_interrupt()
183 int err, irqfd; in uml_vfio_activate_irq() local
188 irqfd = uml_vfio_user_activate_irq(&dev->udev, index); in uml_vfio_activate_irq()
189 if (irqfd < 0) in uml_vfio_activate_irq()
190 return irqfd; in uml_vfio_activate_irq()
192 ctx->irq = um_request_irq(UM_IRQ_ALLOC, irqfd, IRQ_READ, in uml_vfio_activate_irq()
200 err = add_sigio_fd(irqfd); in uml_vfio_activate_irq()
219 ignore_sigio_fd(dev->udev.irqfd[index]); in uml_vfio_deactivate_irq()
H A Dvfio_user.h14 int32_t *irqfd; member
/linux/arch/x86/kvm/
H A Dirq.c426 static int kvm_pi_update_irte(struct kvm_kernel_irqfd *irqfd, in kvm_pi_update_irte() argument
429 unsigned int host_irq = irqfd->producer->irq; in kvm_pi_update_irte()
430 struct kvm *kvm = irqfd->kvm; in kvm_pi_update_irte()
458 if (!irqfd->irq_bypass_vcpu && !vcpu) in kvm_pi_update_irte()
461 r = kvm_x86_call(pi_update_irte)(irqfd, irqfd->kvm, host_irq, irqfd->gsi, in kvm_pi_update_irte()
464 WARN_ON_ONCE(irqfd->irq_bypass_vcpu && !vcpu); in kvm_pi_update_irte()
465 irqfd->irq_bypass_vcpu = NULL; in kvm_pi_update_irte()
469 irqfd->irq_bypass_vcpu = vcpu; in kvm_pi_update_irte()
471 trace_kvm_pi_irte_update(host_irq, vcpu, irqfd->gsi, irq.vector, !!vcpu); in kvm_pi_update_irte()
478 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local
[all …]
/linux/drivers/vfio/
H A Dvirqfd.c135 CLASS(fd, irqfd)(fd); in vfio_virqfd_enable()
136 if (fd_empty(irqfd)) { in vfio_virqfd_enable()
141 ctx = eventfd_ctx_fileget(fd_file(irqfd)); in vfio_virqfd_enable()
173 events = vfs_poll(fd_file(irqfd), &virqfd->pt); in vfio_virqfd_enable()
/linux/drivers/xen/
H A Dprivcmd.c976 static int privcmd_irqfd_assign(struct privcmd_irqfd *irqfd) in privcmd_irqfd_assign() argument
984 CLASS(fd, f)(irqfd->fd); in privcmd_irqfd_assign()
986 kirqfd = kzalloc(sizeof(*kirqfd) + irqfd->size, GFP_KERNEL); in privcmd_irqfd_assign()
991 if (copy_from_user(dm_op, u64_to_user_ptr(irqfd->dm_op), irqfd->size)) { in privcmd_irqfd_assign()
996 kirqfd->xbufs.size = irqfd->size; in privcmd_irqfd_assign()
998 kirqfd->dom = irqfd->dom; in privcmd_irqfd_assign()
1052 static int privcmd_irqfd_deassign(struct privcmd_irqfd *irqfd) in privcmd_irqfd_deassign() argument
1058 eventfd = eventfd_ctx_fdget(irqfd->fd); in privcmd_irqfd_deassign()
1088 struct privcmd_irqfd irqfd; in privcmd_ioctl_irqfd() local
1090 if (copy_from_user(&irqfd, udata, sizeof(irqfd))) in privcmd_ioctl_irqfd()
[all …]
H A DKconfig274 bool "Xen Ioeventfd and irqfd support"
277 Using the ioeventfd / irqfd mechanism a virtio backend running in a
/linux/arch/x86/kvm/svm/
H A Davic.c872 static void svm_ir_list_del(struct kvm_kernel_irqfd *irqfd) in svm_ir_list_del() argument
874 struct kvm_vcpu *vcpu = irqfd->irq_bypass_vcpu; in svm_ir_list_del()
881 list_del(&irqfd->vcpu_list); in svm_ir_list_del()
885 int avic_pi_update_irte(struct kvm_kernel_irqfd *irqfd, struct kvm *kvm, in avic_pi_update_irte() argument
893 svm_ir_list_del(irqfd); in avic_pi_update_irte()
949 irqfd->irq_bypass_data = pi_data.ir_data; in avic_pi_update_irte()
950 list_add(&irqfd->vcpu_list, &svm->ir_list); in avic_pi_update_irte()
989 struct kvm_kernel_irqfd *irqfd; in avic_update_iommu_vcpu_affinity() local
1000 list_for_each_entry(irqfd, &svm->ir_list, vcpu_list) { in avic_update_iommu_vcpu_affinity()
1001 void *data = irqfd->irq_bypass_data; in avic_update_iommu_vcpu_affinity()
H A Dsvm.h913 int avic_pi_update_irte(struct kvm_kernel_irqfd *irqfd, struct kvm *kvm,
/linux/arch/arm64/kvm/
H A Darm.c2895 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local
2897 struct kvm_kernel_irq_routing_entry *irq_entry = &irqfd->irq_entry; in kvm_arch_irq_bypass_add_producer()
2906 return kvm_vgic_v4_set_forwarding(irqfd->kvm, prod->irq, in kvm_arch_irq_bypass_add_producer()
2907 &irqfd->irq_entry); in kvm_arch_irq_bypass_add_producer()
2913 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local
2915 struct kvm_kernel_irq_routing_entry *irq_entry = &irqfd->irq_entry; in kvm_arch_irq_bypass_del_producer()
2920 kvm_vgic_v4_unset_forwarding(irqfd->kvm, prod->irq); in kvm_arch_irq_bypass_del_producer()
2923 void kvm_arch_update_irqfd_routing(struct kvm_kernel_irqfd *irqfd, in kvm_arch_update_irqfd_routing() argument
2939 return kvm_vgic_v4_unset_forwarding(irqfd->kvm, irqfd->producer->irq); in kvm_arch_update_irqfd_routing()
2944 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_stop() local
[all …]
/linux/arch/x86/kvm/vmx/
H A Dposted_intr.h17 int vmx_pi_update_irte(struct kvm_kernel_irqfd *irqfd, struct kvm *kvm,
H A Dposted_intr.c305 int vmx_pi_update_irte(struct kvm_kernel_irqfd *irqfd, struct kvm *kvm, in vmx_pi_update_irte() argument
/linux/arch/loongarch/kvm/
H A DMakefile24 kvm-y += irqfd.o
/linux/arch/powerpc/kvm/
H A Dpowerpc.c855 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local
857 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_add_producer()
868 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local
870 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_del_producer()
/linux/tools/testing/selftests/kvm/include/
H A Dkvm_util.h542 struct kvm_irqfd irqfd = { in __kvm_irqfd() local
549 return __vm_ioctl(vm, KVM_IRQFD, &irqfd); in __kvm_irqfd()
/linux/arch/x86/include/asm/
H A Dkvm_host.h1940 int (*pi_update_irte)(struct kvm_kernel_irqfd *irqfd, struct kvm *kvm,
/linux/include/linux/
H A Dkvm_host.h2426 void kvm_arch_update_irqfd_routing(struct kvm_kernel_irqfd *irqfd,
/linux/Documentation/virt/kvm/
H A Dapi.rst3191 the guest using the specified gsi pin. The irqfd is removed using
3196 mechanism allowing emulation of level-triggered, irqfd-based
3205 irqfd. The KVM_IRQFD_FLAG_RESAMPLE is only necessary on assignment