| /linux-6.15/drivers/virt/acrn/ |
| H A D | irqfd.c | 46 irqfd->msi.msi_data); in acrn_irqfd_inject() 57 eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt); in hsm_irqfd_shutdown() 59 kfree(irqfd); in hsm_irqfd_shutdown() 64 struct hsm_irqfd *irqfd; in hsm_irqfd_shutdown_work() local 68 vm = irqfd->vm; in hsm_irqfd_shutdown_work() 80 struct hsm_irqfd *irqfd; in hsm_irqfd_wakeup() local 84 vm = irqfd->vm; in hsm_irqfd_wakeup() 117 irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL); in acrn_irqfd_assign() 118 if (!irqfd) in acrn_irqfd_assign() 121 irqfd->vm = vm; in acrn_irqfd_assign() [all …]
|
| H A D | Makefile | 3 acrn-y := hsm.o vm.o mm.o ioreq.o ioeventfd.o irqfd.o
|
| H A D | hsm.c | 120 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()
|
| /linux-6.15/drivers/hv/ |
| H A D | mshv_eventfd.c | 81 struct mshv_irqfd *irqfd; in mshv_irqfd_resampler_ack() local 244 struct mshv_irqfd *irqfd = in mshv_irqfd_shutdown() local 251 remove_wait_queue(irqfd->irqfd_wqh, &irqfd->irqfd_wait); in mshv_irqfd_shutdown() 262 kfree(irqfd); in mshv_irqfd_shutdown() 350 mshv_copy_girq_info(&irqfd->irqfd_girq_ent, &irqfd->irqfd_lapic_irq); in mshv_irqfd_update() 356 struct mshv_irqfd *irqfd; in mshv_irqfd_routing_update() local 370 irqfd->irqfd_wqh = wqh; in mshv_irqfd_queue_proc() 384 irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL); in mshv_irqfd_assign() 385 if (!irqfd) in mshv_irqfd_assign() 388 irqfd->irqfd_partn = pt; in mshv_irqfd_assign() [all …]
|
| /linux-6.15/virt/kvm/ |
| H A D | eventfd.c | 48 if (!irqfd->resampler) { in irqfd_inject() 136 eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt); in irqfd_shutdown() 156 kfree(irqfd); in irqfd_shutdown() 318 irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL_ACCOUNT); in kvm_irqfd_assign() 319 if (!irqfd) in kvm_irqfd_assign() 322 irqfd->kvm = kvm; in kvm_irqfd_assign() 386 list_add_rcu(&irqfd->resampler_link, &irqfd->resampler->list); in kvm_irqfd_assign() 429 irqfd->consumer.token = (void *)irqfd->eventfd; in kvm_irqfd_assign() 455 kfree(irqfd); in kvm_irqfd_assign() 538 if (irqfd->eventfd == eventfd && irqfd->gsi == args->gsi) { in kvm_irqfd_deassign() [all …]
|
| /linux-6.15/drivers/vfio/ |
| H A D | virqfd.c | 135 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-6.15/drivers/xen/ |
| H A D | privcmd.c | 971 CLASS(fd, f)(irqfd->fd); in privcmd_irqfd_assign() 978 if (copy_from_user(dm_op, u64_to_user_ptr(irqfd->dm_op), irqfd->size)) { in privcmd_irqfd_assign() 983 kirqfd->xbufs.size = irqfd->size; in privcmd_irqfd_assign() 985 kirqfd->dom = irqfd->dom; in privcmd_irqfd_assign() 1045 eventfd = eventfd_ctx_fdget(irqfd->fd); in privcmd_irqfd_deassign() 1075 struct privcmd_irqfd irqfd; in privcmd_ioctl_irqfd() local 1077 if (copy_from_user(&irqfd, udata, sizeof(irqfd))) in privcmd_ioctl_irqfd() 1081 if (irqfd.flags & ~PRIVCMD_IRQFD_FLAG_DEASSIGN) in privcmd_ioctl_irqfd() 1088 if (irqfd.flags & PRIVCMD_IRQFD_FLAG_DEASSIGN) in privcmd_ioctl_irqfd() 1089 return privcmd_irqfd_deassign(&irqfd); in privcmd_ioctl_irqfd() [all …]
|
| H A D | Kconfig | 273 bool "Xen Ioeventfd and irqfd support" 276 Using the ioeventfd / irqfd mechanism a virtio backend running in a
|
| /linux-6.15/arch/loongarch/kvm/ |
| H A D | Makefile | 22 kvm-y += irqfd.o
|
| /linux-6.15/arch/arm64/kvm/ |
| H A D | arm.c | 2749 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local 2751 struct kvm_kernel_irq_routing_entry *irq_entry = &irqfd->irq_entry; in kvm_arch_irq_bypass_add_producer() 2760 return kvm_vgic_v4_set_forwarding(irqfd->kvm, prod->irq, in kvm_arch_irq_bypass_add_producer() 2761 &irqfd->irq_entry); in kvm_arch_irq_bypass_add_producer() 2766 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local 2773 kvm_vgic_v4_unset_forwarding(irqfd->kvm, prod->irq, in kvm_arch_irq_bypass_del_producer() 2774 &irqfd->irq_entry); in kvm_arch_irq_bypass_del_producer() 2779 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_stop() local 2782 kvm_arm_halt_guest(irqfd->kvm); in kvm_arch_irq_bypass_stop() 2787 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_start() local [all …]
|
| H A D | Makefile | 22 vgic/vgic-irqfd.o vgic/vgic-v2.o \
|
| /linux-6.15/tools/testing/selftests/kvm/arm64/ |
| H A D | vgic_irq.c | 629 struct kvm_irqfd irqfd = { in kvm_routing_and_irqfd_check() local 634 vm_ioctl(vm, KVM_IRQFD, &irqfd); in kvm_routing_and_irqfd_check()
|
| /linux-6.15/arch/powerpc/kvm/ |
| H A D | book3s_hv.c | 6112 struct kvm_kernel_irqfd *irqfd = in kvmppc_irq_bypass_add_producer_hv() local 6115 irqfd->producer = prod; in kvmppc_irq_bypass_add_producer_hv() 6117 ret = kvmppc_set_passthru_irq(irqfd->kvm, prod->irq, irqfd->gsi); in kvmppc_irq_bypass_add_producer_hv() 6120 prod->irq, irqfd->gsi, ret); in kvmppc_irq_bypass_add_producer_hv() 6129 struct kvm_kernel_irqfd *irqfd = in kvmppc_irq_bypass_del_producer_hv() local 6132 irqfd->producer = NULL; in kvmppc_irq_bypass_del_producer_hv() 6139 ret = kvmppc_clr_passthru_irq(irqfd->kvm, prod->irq, irqfd->gsi); in kvmppc_irq_bypass_del_producer_hv() 6142 prod->irq, irqfd->gsi, ret); in kvmppc_irq_bypass_del_producer_hv()
|
| H A D | powerpc.c | 861 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local 863 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_add_producer() 874 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local 876 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_del_producer()
|
| /linux-6.15/arch/x86/kvm/ |
| H A D | x86.c | 13565 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local 13567 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_add_producer() 13573 irqfd->producer = prod; in kvm_arch_irq_bypass_add_producer() 13576 prod->irq, irqfd->gsi, 1); in kvm_arch_irq_bypass_add_producer() 13578 kvm_arch_end_assignment(irqfd->kvm); in kvm_arch_irq_bypass_add_producer() 13590 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local 13592 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_del_producer() 13594 WARN_ON(irqfd->producer != prod); in kvm_arch_irq_bypass_del_producer() 13603 irqfd->producer = NULL; in kvm_arch_irq_bypass_del_producer() 13606 prod->irq, irqfd->gsi, 0); in kvm_arch_irq_bypass_del_producer() [all …]
|
| /linux-6.15/Documentation/virt/kvm/ |
| H A D | api.rst | 3159 the guest using the specified gsi pin. The irqfd is removed using 3164 mechanism allowing emulation of level-triggered, irqfd-based 3173 irqfd. The KVM_IRQFD_FLAG_RESAMPLE is only necessary on assignment
|