/Linux-v5.15/drivers/virt/acrn/ |
D | irqfd.c | 42 static void acrn_irqfd_inject(struct hsm_irqfd *irqfd) in acrn_irqfd_inject() argument 44 struct acrn_vm *vm = irqfd->vm; in acrn_irqfd_inject() 46 acrn_msi_inject(vm, irqfd->msi.msi_addr, in acrn_irqfd_inject() 47 irqfd->msi.msi_data); in acrn_irqfd_inject() 50 static void hsm_irqfd_shutdown(struct hsm_irqfd *irqfd) in hsm_irqfd_shutdown() argument 54 lockdep_assert_held(&irqfd->vm->irqfds_lock); in hsm_irqfd_shutdown() 57 list_del_init(&irqfd->list); in hsm_irqfd_shutdown() 58 eventfd_ctx_remove_wait_queue(irqfd->eventfd, &irqfd->wait, &cnt); in hsm_irqfd_shutdown() 59 eventfd_ctx_put(irqfd->eventfd); in hsm_irqfd_shutdown() 60 kfree(irqfd); in hsm_irqfd_shutdown() [all …]
|
D | hsm.c | 119 struct acrn_irqfd irqfd; in acrn_dev_ioctl() local 353 if (copy_from_user(&irqfd, (void __user *)ioctl_param, in acrn_dev_ioctl() 354 sizeof(irqfd))) in acrn_dev_ioctl() 356 ret = acrn_irqfd_config(vm, &irqfd); in acrn_dev_ioctl()
|
D | Makefile | 3 acrn-y := hsm.o vm.o mm.o ioreq.o ioeventfd.o irqfd.o
|
/Linux-v5.15/virt/kvm/ |
D | eventfd.c | 44 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() 68 struct kvm_kernel_irqfd *irqfd; in irqfd_resampler_ack() local 80 list_for_each_entry_rcu(irqfd, &resampler->list, resampler_link) in irqfd_resampler_ack() 81 eventfd_signal(irqfd->resamplefd, 1); in irqfd_resampler_ack() 87 irqfd_resampler_shutdown(struct kvm_kernel_irqfd *irqfd) in irqfd_resampler_shutdown() argument [all …]
|
/Linux-v5.15/drivers/vfio/ |
D | virqfd.c | 112 struct fd irqfd; in vfio_virqfd_enable() local 131 irqfd = fdget(fd); in vfio_virqfd_enable() 132 if (!irqfd.file) { in vfio_virqfd_enable() 137 ctx = eventfd_ctx_fileget(irqfd.file); in vfio_virqfd_enable() 169 events = vfs_poll(irqfd.file, &virqfd->pt); in vfio_virqfd_enable() 184 fdput(irqfd); in vfio_virqfd_enable() 190 fdput(irqfd); in vfio_virqfd_enable()
|
/Linux-v5.15/arch/arm64/kvm/ |
D | arm.c | 2022 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local 2025 return kvm_vgic_v4_set_forwarding(irqfd->kvm, prod->irq, in kvm_arch_irq_bypass_add_producer() 2026 &irqfd->irq_entry); in kvm_arch_irq_bypass_add_producer() 2031 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local 2034 kvm_vgic_v4_unset_forwarding(irqfd->kvm, prod->irq, in kvm_arch_irq_bypass_del_producer() 2035 &irqfd->irq_entry); in kvm_arch_irq_bypass_del_producer() 2040 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_stop() local 2043 kvm_arm_halt_guest(irqfd->kvm); in kvm_arch_irq_bypass_stop() 2048 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_start() local 2051 kvm_arm_resume_guest(irqfd->kvm); in kvm_arch_irq_bypass_start()
|
D | Makefile | 21 vgic/vgic-irqfd.o vgic/vgic-v2.o \
|
/Linux-v5.15/arch/powerpc/kvm/ |
D | book3s_hv.c | 5538 struct kvm_kernel_irqfd *irqfd = in kvmppc_irq_bypass_add_producer_hv() local 5541 irqfd->producer = prod; in kvmppc_irq_bypass_add_producer_hv() 5543 ret = kvmppc_set_passthru_irq(irqfd->kvm, prod->irq, irqfd->gsi); in kvmppc_irq_bypass_add_producer_hv() 5546 prod->irq, irqfd->gsi, ret); in kvmppc_irq_bypass_add_producer_hv() 5555 struct kvm_kernel_irqfd *irqfd = in kvmppc_irq_bypass_del_producer_hv() local 5558 irqfd->producer = NULL; in kvmppc_irq_bypass_del_producer_hv() 5565 ret = kvmppc_clr_passthru_irq(irqfd->kvm, prod->irq, irqfd->gsi); in kvmppc_irq_bypass_del_producer_hv() 5568 prod->irq, irqfd->gsi, ret); in kvmppc_irq_bypass_del_producer_hv()
|
D | powerpc.c | 848 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local 850 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_add_producer() 861 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local 863 struct kvm *kvm = irqfd->kvm; in kvm_arch_irq_bypass_del_producer()
|
/Linux-v5.15/arch/x86/kvm/ |
D | x86.c | 12080 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_add_producer() local 12084 irqfd->producer = prod; in kvm_arch_irq_bypass_add_producer() 12085 kvm_arch_start_assignment(irqfd->kvm); in kvm_arch_irq_bypass_add_producer() 12086 ret = static_call(kvm_x86_update_pi_irte)(irqfd->kvm, in kvm_arch_irq_bypass_add_producer() 12087 prod->irq, irqfd->gsi, 1); in kvm_arch_irq_bypass_add_producer() 12090 kvm_arch_end_assignment(irqfd->kvm); in kvm_arch_irq_bypass_add_producer() 12099 struct kvm_kernel_irqfd *irqfd = in kvm_arch_irq_bypass_del_producer() local 12102 WARN_ON(irqfd->producer != prod); in kvm_arch_irq_bypass_del_producer() 12103 irqfd->producer = NULL; in kvm_arch_irq_bypass_del_producer() 12111 ret = static_call(kvm_x86_update_pi_irte)(irqfd->kvm, prod->irq, irqfd->gsi, 0); in kvm_arch_irq_bypass_del_producer() [all …]
|
/Linux-v5.15/Documentation/virt/kvm/ |
D | api.rst | 2836 the guest using the specified gsi pin. The irqfd is removed using 2841 mechanism allowing emulation of level-triggered, irqfd-based 2850 irqfd. The KVM_IRQFD_FLAG_RESAMPLE is only necessary on assignment
|