Lines Matching refs:p
289 struct kvm_irqfd_pt *p = container_of(pt, struct kvm_irqfd_pt, pt); in kvm_irqfd_register() local
290 struct kvm_kernel_irqfd *irqfd = p->irqfd; in kvm_irqfd_register()
291 struct kvm *kvm = p->kvm; in kvm_irqfd_register()
325 p->ret = add_wait_queue_priority_exclusive(wqh, &irqfd->wait); in kvm_irqfd_register()
327 if (p->ret) in kvm_irqfd_register()
750 ioeventfd_release(struct _ioeventfd *p) in ioeventfd_release() argument
752 eventfd_ctx_put(p->eventfd); in ioeventfd_release()
753 list_del(&p->list); in ioeventfd_release()
754 kfree(p); in ioeventfd_release()
758 ioeventfd_in_range(struct _ioeventfd *p, gpa_t addr, int len, const void *val) in ioeventfd_in_range() argument
762 if (addr != p->addr) in ioeventfd_in_range()
766 if (!p->length) in ioeventfd_in_range()
770 if (len != p->length) in ioeventfd_in_range()
774 if (p->wildcard) in ioeventfd_in_range()
799 return _val == p->datamatch; in ioeventfd_in_range()
807 struct _ioeventfd *p = to_ioeventfd(this); in ioeventfd_write() local
809 if (!ioeventfd_in_range(p, addr, len, val)) in ioeventfd_write()
812 eventfd_signal(p->eventfd); in ioeventfd_write()
823 struct _ioeventfd *p = to_ioeventfd(this); in ioeventfd_destructor() local
825 ioeventfd_release(p); in ioeventfd_destructor()
835 ioeventfd_check_collision(struct kvm *kvm, struct _ioeventfd *p) in ioeventfd_check_collision() argument
840 if (_p->bus_idx == p->bus_idx && in ioeventfd_check_collision()
841 _p->addr == p->addr && in ioeventfd_check_collision()
842 (!_p->length || !p->length || in ioeventfd_check_collision()
843 (_p->length == p->length && in ioeventfd_check_collision()
844 (_p->wildcard || p->wildcard || in ioeventfd_check_collision()
845 _p->datamatch == p->datamatch)))) in ioeventfd_check_collision()
866 struct _ioeventfd *p; in kvm_assign_ioeventfd_idx() local
873 p = kzalloc(sizeof(*p), GFP_KERNEL_ACCOUNT); in kvm_assign_ioeventfd_idx()
874 if (!p) { in kvm_assign_ioeventfd_idx()
879 INIT_LIST_HEAD(&p->list); in kvm_assign_ioeventfd_idx()
880 p->addr = args->addr; in kvm_assign_ioeventfd_idx()
881 p->bus_idx = bus_idx; in kvm_assign_ioeventfd_idx()
882 p->length = args->len; in kvm_assign_ioeventfd_idx()
883 p->eventfd = eventfd; in kvm_assign_ioeventfd_idx()
887 p->datamatch = args->datamatch; in kvm_assign_ioeventfd_idx()
889 p->wildcard = true; in kvm_assign_ioeventfd_idx()
894 if (ioeventfd_check_collision(kvm, p)) { in kvm_assign_ioeventfd_idx()
899 kvm_iodevice_init(&p->dev, &ioeventfd_ops); in kvm_assign_ioeventfd_idx()
901 ret = kvm_io_bus_register_dev(kvm, bus_idx, p->addr, p->length, in kvm_assign_ioeventfd_idx()
902 &p->dev); in kvm_assign_ioeventfd_idx()
907 list_add_tail(&p->list, &kvm->ioeventfds); in kvm_assign_ioeventfd_idx()
915 kfree(p); in kvm_assign_ioeventfd_idx()
927 struct _ioeventfd *p; in kvm_deassign_ioeventfd_idx() local
941 list_for_each_entry(p, &kvm->ioeventfds, list) { in kvm_deassign_ioeventfd_idx()
942 if (p->bus_idx != bus_idx || in kvm_deassign_ioeventfd_idx()
943 p->eventfd != eventfd || 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()
946 p->wildcard != wildcard) in kvm_deassign_ioeventfd_idx()
949 if (!p->wildcard && p->datamatch != args->datamatch) in kvm_deassign_ioeventfd_idx()
952 kvm_io_bus_unregister_dev(kvm, bus_idx, &p->dev); in kvm_deassign_ioeventfd_idx()