Lines Matching refs:args
36 kvm_arch_irqfd_allowed(struct kvm *kvm, struct kvm_irqfd *args) in kvm_arch_irqfd_allowed() argument
356 kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args) in kvm_irqfd_assign() argument
368 if (!kvm_arch_irqfd_allowed(kvm, args)) in kvm_irqfd_assign()
376 irqfd->gsi = args->gsi; in kvm_irqfd_assign()
382 CLASS(fd, f)(args->fd); in kvm_irqfd_assign()
396 if (args->flags & KVM_IRQFD_FLAG_RESAMPLE) { in kvm_irqfd_assign()
399 resamplefd = eventfd_ctx_fdget(args->resamplefd); in kvm_irqfd_assign()
576 kvm_irqfd_deassign(struct kvm *kvm, struct kvm_irqfd *args) in kvm_irqfd_deassign() argument
581 eventfd = eventfd_ctx_fdget(args->fd); in kvm_irqfd_deassign()
588 if (irqfd->eventfd == eventfd && irqfd->gsi == args->gsi) { in kvm_irqfd_deassign()
616 kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args) in kvm_irqfd() argument
618 if (args->flags & ~(KVM_IRQFD_FLAG_DEASSIGN | KVM_IRQFD_FLAG_RESAMPLE)) in kvm_irqfd()
621 if (args->flags & KVM_IRQFD_FLAG_DEASSIGN) in kvm_irqfd()
622 return kvm_irqfd_deassign(kvm, args); in kvm_irqfd()
624 return kvm_irqfd_assign(kvm, args); in kvm_irqfd()
862 struct kvm_ioeventfd *args) in kvm_assign_ioeventfd_idx() argument
869 eventfd = eventfd_ctx_fdget(args->fd); in kvm_assign_ioeventfd_idx()
880 p->addr = args->addr; in kvm_assign_ioeventfd_idx()
882 p->length = args->len; in kvm_assign_ioeventfd_idx()
886 if (args->flags & KVM_IOEVENTFD_FLAG_DATAMATCH) in kvm_assign_ioeventfd_idx()
887 p->datamatch = args->datamatch; in kvm_assign_ioeventfd_idx()
925 struct kvm_ioeventfd *args) in kvm_deassign_ioeventfd_idx() argument
933 eventfd = eventfd_ctx_fdget(args->fd); in kvm_deassign_ioeventfd_idx()
937 wildcard = !(args->flags & KVM_IOEVENTFD_FLAG_DATAMATCH); in kvm_deassign_ioeventfd_idx()
944 p->addr != args->addr || in kvm_deassign_ioeventfd_idx()
945 p->length != args->len || in kvm_deassign_ioeventfd_idx()
949 if (!p->wildcard && p->datamatch != args->datamatch) in kvm_deassign_ioeventfd_idx()
967 static int kvm_deassign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) in kvm_deassign_ioeventfd() argument
969 enum kvm_bus bus_idx = ioeventfd_bus_from_flags(args->flags); in kvm_deassign_ioeventfd()
970 int ret = kvm_deassign_ioeventfd_idx(kvm, bus_idx, args); in kvm_deassign_ioeventfd()
972 if (!args->len && bus_idx == KVM_MMIO_BUS) in kvm_deassign_ioeventfd()
973 kvm_deassign_ioeventfd_idx(kvm, KVM_FAST_MMIO_BUS, args); in kvm_deassign_ioeventfd()
979 kvm_assign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) in kvm_assign_ioeventfd() argument
984 bus_idx = ioeventfd_bus_from_flags(args->flags); in kvm_assign_ioeventfd()
986 switch (args->len) { in kvm_assign_ioeventfd()
998 if (args->addr + args->len < args->addr) in kvm_assign_ioeventfd()
1002 if (args->flags & ~KVM_IOEVENTFD_VALID_FLAG_MASK) in kvm_assign_ioeventfd()
1006 if (!args->len && (args->flags & KVM_IOEVENTFD_FLAG_DATAMATCH)) in kvm_assign_ioeventfd()
1009 ret = kvm_assign_ioeventfd_idx(kvm, bus_idx, args); in kvm_assign_ioeventfd()
1016 if (!args->len && bus_idx == KVM_MMIO_BUS) { in kvm_assign_ioeventfd()
1017 ret = kvm_assign_ioeventfd_idx(kvm, KVM_FAST_MMIO_BUS, args); in kvm_assign_ioeventfd()
1025 kvm_deassign_ioeventfd_idx(kvm, bus_idx, args); in kvm_assign_ioeventfd()
1031 kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) in kvm_ioeventfd() argument
1033 if (args->flags & KVM_IOEVENTFD_FLAG_DEASSIGN) in kvm_ioeventfd()
1034 return kvm_deassign_ioeventfd(kvm, args); in kvm_ioeventfd()
1036 return kvm_assign_ioeventfd(kvm, args); in kvm_ioeventfd()