Lines Matching defs:evtchnfd
1804 struct evtchnfd {
1823 struct evtchnfd *evtchnfd;
1826 /* Protect writes to evtchnfd as well as the idr lookup. */
1828 evtchnfd = idr_find(&kvm->arch.xen.evtchn_ports, port);
1831 if (!evtchnfd)
1836 if (evtchnfd->type != data->u.evtchn.type)
1843 if (!evtchnfd->deliver.port.port ||
1844 evtchnfd->deliver.port.port != data->u.evtchn.deliver.port.port)
1851 evtchnfd->deliver.port.priority = data->u.evtchn.deliver.port.priority;
1852 if (evtchnfd->deliver.port.vcpu_id != data->u.evtchn.deliver.port.vcpu) {
1853 evtchnfd->deliver.port.vcpu_id = data->u.evtchn.deliver.port.vcpu;
1854 evtchnfd->deliver.port.vcpu_idx = -1;
1871 struct evtchnfd *evtchnfd;
1874 evtchnfd = kzalloc(sizeof(struct evtchnfd), GFP_KERNEL);
1875 if (!evtchnfd)
1906 evtchnfd->send_port = data->u.evtchn.send_port;
1907 evtchnfd->type = data->u.evtchn.type;
1909 evtchnfd->deliver.eventfd.ctx = eventfd;
1915 evtchnfd->deliver.port.port = data->u.evtchn.deliver.port.port;
1916 evtchnfd->deliver.port.vcpu_id = data->u.evtchn.deliver.port.vcpu;
1917 evtchnfd->deliver.port.vcpu_idx = -1;
1918 evtchnfd->deliver.port.priority = data->u.evtchn.deliver.port.priority;
1922 ret = idr_alloc(&kvm->arch.xen.evtchn_ports, evtchnfd, port, port + 1,
1934 kfree(evtchnfd);
1940 struct evtchnfd *evtchnfd;
1943 evtchnfd = idr_remove(&kvm->arch.xen.evtchn_ports, port);
1946 if (!evtchnfd)
1950 if (!evtchnfd->deliver.port.port)
1951 eventfd_ctx_put(evtchnfd->deliver.eventfd.ctx);
1952 kfree(evtchnfd);
1958 struct evtchnfd *evtchnfd, **all_evtchnfds;
1966 * critical section, first collect all the evtchnfd objects
1969 idr_for_each_entry(&kvm->arch.xen.evtchn_ports, evtchnfd, i)
1972 all_evtchnfds = kmalloc_array(n, sizeof(struct evtchnfd *), GFP_KERNEL);
1979 idr_for_each_entry(&kvm->arch.xen.evtchn_ports, evtchnfd, i) {
1980 all_evtchnfds[n++] = evtchnfd;
1981 idr_remove(&kvm->arch.xen.evtchn_ports, evtchnfd->send_port);
1988 evtchnfd = all_evtchnfds[n];
1989 if (!evtchnfd->deliver.port.port)
1990 eventfd_ctx_put(evtchnfd->deliver.eventfd.ctx);
1991 kfree(evtchnfd);
2020 struct evtchnfd *evtchnfd;
2032 * evtchnfd is protected by kvm->srcu; the idr lookup instead
2036 evtchnfd = idr_find(&vcpu->kvm->arch.xen.evtchn_ports, send.port);
2038 if (!evtchnfd)
2041 if (evtchnfd->deliver.port.port) {
2042 int ret = kvm_xen_set_evtchn(&evtchnfd->deliver.port, vcpu->kvm);
2046 eventfd_signal(evtchnfd->deliver.eventfd.ctx, 1);
2115 struct evtchnfd *evtchnfd;
2120 idr_for_each_entry(&kvm->arch.xen.evtchn_ports, evtchnfd, i) {
2121 if (!evtchnfd->deliver.port.port)
2122 eventfd_ctx_put(evtchnfd->deliver.eventfd.ctx);
2123 kfree(evtchnfd);