Home
last modified time | relevance | path

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

/linux/drivers/virt/acrn/
H A Dirqfd.c41 static void acrn_irqfd_inject(struct hsm_irqfd *irqfd) in acrn_irqfd_inject() argument
43 struct acrn_vm *vm = irqfd->vm; in acrn_irqfd_inject()
45 acrn_msi_inject(vm, irqfd->msi.msi_addr, in acrn_irqfd_inject()
46 irqfd->msi.msi_data); in acrn_irqfd_inject()
49 static void hsm_irqfd_shutdown(struct hsm_irqfd *irqfd) in hsm_irqfd_shutdown() argument
53 lockdep_assert_held(&irqfd->vm->irqfds_lock); in hsm_irqfd_shutdown()
56 list_del_init(&irqfd->list); in hsm_irqfd_shutdown()
57 eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt); in hsm_irqfd_shutdown()
58 eventfd_ctx_put(irqfd->eventfd); in hsm_irqfd_shutdown()
59 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/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/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.c963 static int privcmd_irqfd_assign(struct privcmd_irqfd *irqfd) in privcmd_irqfd_assign() argument
971 CLASS(fd, f)(irqfd->fd); in privcmd_irqfd_assign()
973 kirqfd = kzalloc(sizeof(*kirqfd) + irqfd->size, GFP_KERNEL); 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()
1039 static int privcmd_irqfd_deassign(struct privcmd_irqfd *irqfd) in privcmd_irqfd_deassign() argument
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()
[all …]
H A DKconfig273 bool "Xen Ioeventfd and irqfd support"
276 Using the ioeventfd / irqfd mechanism a virtio backend running in a
/linux/arch/arm64/kvm/
H A Darm.c2715 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local
2718 return kvm_vgic_v4_set_forwarding(irqfd->kvm, prod->irq, in kvm_arch_irq_bypass_add_producer()
2719 &irqfd->irq_entry); in kvm_arch_irq_bypass_add_producer()
2724 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local
2727 kvm_vgic_v4_unset_forwarding(irqfd->kvm, prod->irq, in kvm_arch_irq_bypass_del_producer()
2728 &irqfd->irq_entry); in kvm_arch_irq_bypass_del_producer()
2733 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_stop() local
2736 kvm_arm_halt_guest(irqfd->kvm); in kvm_arch_irq_bypass_stop()
2741 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_start() local
2744 kvm_arm_resume_guest(irqfd->kvm); in kvm_arch_irq_bypass_start()
H A DMakefile22 vgic/vgic-irqfd.o vgic/vgic-v2.o \
/linux/tools/testing/selftests/kvm/aarch64/
H A Dvgic_irq.c
/linux/arch/x86/kvm/
H A Dx86.c13555 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local
13559 irqfd->producer = prod; in kvm_arch_irq_bypass_add_producer()
13560 kvm_arch_start_assignment(irqfd->kvm); in kvm_arch_irq_bypass_add_producer()
13561 ret = kvm_x86_call(pi_update_irte)(irqfd->kvm, in kvm_arch_irq_bypass_add_producer()
13562 prod->irq, irqfd->gsi, 1); in kvm_arch_irq_bypass_add_producer()
13564 kvm_arch_end_assignment(irqfd->kvm); in kvm_arch_irq_bypass_add_producer()
13573 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local
13576 WARN_ON(irqfd->producer != prod); in kvm_arch_irq_bypass_del_producer()
13577 irqfd->producer = NULL; in kvm_arch_irq_bypass_del_producer()
13585 ret = kvm_x86_call(pi_update_irte)(irqfd->kvm, in kvm_arch_irq_bypass_del_producer()
[all …]
/linux/Documentation/virt/kvm/
H A Dapi.rst3155 the guest using the specified gsi pin. The irqfd is removed using
3160 mechanism allowing emulation of level-triggered, irqfd-based
3169 irqfd. The KVM_IRQFD_FLAG_RESAMPLE is only necessary on assignment