Lines Matching refs:handle
171 struct vmci_handle handle; member
211 struct vmci_handle handle; member
892 struct vmci_handle handle) in qp_list_find() argument
896 if (vmci_handle_is_invalid(handle)) in qp_list_find()
900 if (vmci_handle_is_equal(entry->handle, handle)) in qp_list_find()
911 qp_guest_handle_to_entry(struct vmci_handle handle) in qp_guest_handle_to_entry() argument
914 struct qp_entry *qp = qp_list_find(&qp_guest_endpoints, handle); in qp_guest_handle_to_entry()
925 qp_broker_handle_to_entry(struct vmci_handle handle) in qp_broker_handle_to_entry() argument
928 struct qp_entry *qp = qp_list_find(&qp_broker_list, handle); in qp_broker_handle_to_entry()
939 static int qp_notify_peer_local(bool attach, struct vmci_handle handle) in qp_notify_peer_local() argument
951 ev.payload.handle = handle; in qp_notify_peer_local()
964 qp_guest_endpoint_create(struct vmci_handle handle, in qp_guest_endpoint_create() argument
978 if (vmci_handle_is_invalid(handle)) { in qp_guest_endpoint_create()
981 handle = vmci_make_handle(context_id, VMCI_INVALID_ID); in qp_guest_endpoint_create()
999 handle); in qp_guest_endpoint_create()
1000 entry->qp.handle = vmci_resource_handle(&entry->resource); in qp_guest_endpoint_create()
1002 qp_list_find(&qp_guest_endpoints, entry->qp.handle)) { in qp_guest_endpoint_create()
1004 handle.context, handle.resource, result); in qp_guest_endpoint_create()
1050 alloc_msg->handle = entry->qp.handle; in qp_alloc_hypercall()
1071 static int qp_detatch_hypercall(struct vmci_handle handle) in qp_detatch_hypercall() argument
1078 detach_msg.hdr.payload_size = sizeof(handle); in qp_detatch_hypercall()
1079 detach_msg.handle = handle; in qp_detatch_hypercall()
1107 static int qp_detatch_guest_work(struct vmci_handle handle) in qp_detatch_guest_work() argument
1115 entry = qp_guest_handle_to_entry(handle); in qp_detatch_guest_work()
1125 result = qp_notify_peer_local(false, handle); in qp_detatch_guest_work()
1134 result = qp_detatch_hypercall(handle); in qp_detatch_guest_work()
1177 static int qp_alloc_guest_work(struct vmci_handle *handle, in qp_alloc_guest_work() argument
1200 queue_pair_entry = qp_guest_handle_to_entry(*handle); in qp_alloc_guest_work()
1225 result = qp_notify_peer_local(true, *handle); in qp_alloc_guest_work()
1252 queue_pair_entry = qp_guest_endpoint_create(*handle, peer, flags, in qp_alloc_guest_work()
1286 if (queue_pair_entry->qp.handle.context != context_id || in qp_alloc_guest_work()
1312 *handle = queue_pair_entry->qp.handle; in qp_alloc_guest_work()
1323 vmci_q_header_init((*produce_q)->q_header, *handle); in qp_alloc_guest_work()
1324 vmci_q_header_init((*consume_q)->q_header, *handle); in qp_alloc_guest_work()
1366 static int qp_broker_create(struct vmci_handle handle, in qp_broker_create() argument
1392 if (handle.context != context_id && handle.context != peer) in qp_broker_create()
1425 entry->qp.handle = handle; in qp_broker_create()
1500 handle); in qp_broker_create()
1503 handle.context, handle.resource, result); in qp_broker_create()
1507 entry->qp.handle = vmci_resource_handle(&entry->resource); in qp_broker_create()
1510 entry->qp.handle); in qp_broker_create()
1512 entry->qp.handle); in qp_broker_create()
1515 vmci_ctx_qp_create(context, entry->qp.handle); in qp_broker_create()
1536 struct vmci_handle handle, in qp_notify_peer() argument
1543 if (vmci_handle_is_invalid(handle) || my_id == VMCI_INVALID_ID || in qp_notify_peer()
1561 ev.payload.handle = handle; in qp_notify_peer()
1747 qp_notify_peer(true, entry->qp.handle, context_id, in qp_broker_attach()
1751 entry->create_id, entry->qp.handle.context, in qp_broker_attach()
1752 entry->qp.handle.resource); in qp_broker_attach()
1767 vmci_ctx_qp_create(context, entry->qp.handle); in qp_broker_attach()
1779 static int qp_broker_alloc(struct vmci_handle handle, in qp_broker_alloc() argument
1798 if (vmci_handle_is_invalid(handle) || in qp_broker_alloc()
1802 handle.context == VMCI_INVALID_ID) { in qp_broker_alloc()
1816 if (!is_local && vmci_ctx_qp_exists(context, handle)) { in qp_broker_alloc()
1818 context_id, handle.context, handle.resource); in qp_broker_alloc()
1823 if (handle.resource != VMCI_INVALID_ID) in qp_broker_alloc()
1824 entry = qp_broker_handle_to_entry(handle); in qp_broker_alloc()
1829 qp_broker_create(handle, peer, flags, priv_flags, in qp_broker_alloc()
1853 static int qp_alloc_host_work(struct vmci_handle *handle, in qp_alloc_host_work() argument
1870 if (vmci_handle_is_invalid(*handle)) { in qp_alloc_host_work()
1874 new_handle = *handle; in qp_alloc_host_work()
1897 *handle = vmci_resource_handle(&entry->resource); in qp_alloc_host_work()
1899 *handle = VMCI_INVALID_HANDLE; in qp_alloc_host_work()
1912 int vmci_qp_alloc(struct vmci_handle *handle, in vmci_qp_alloc() argument
1924 if (!handle || !produce_q || !consume_q || in vmci_qp_alloc()
1929 return qp_alloc_guest_work(handle, produce_q, in vmci_qp_alloc()
1934 return qp_alloc_host_work(handle, produce_q, in vmci_qp_alloc()
1945 static int qp_detatch_host_work(struct vmci_handle handle) in qp_detatch_host_work() argument
1952 result = vmci_qp_broker_detach(handle, context); in qp_detatch_host_work()
1962 static int qp_detatch(struct vmci_handle handle, bool guest_endpoint) in qp_detatch() argument
1964 if (vmci_handle_is_invalid(handle)) in qp_detatch()
1968 return qp_detatch_guest_work(handle); in qp_detatch()
1970 return qp_detatch_host_work(handle); in qp_detatch()
2013 int vmci_qp_broker_alloc(struct vmci_handle handle, in vmci_qp_broker_alloc() argument
2022 return qp_broker_alloc(handle, peer, flags, priv_flags, in vmci_qp_broker_alloc()
2043 int vmci_qp_broker_set_page_store(struct vmci_handle handle, in vmci_qp_broker_set_page_store() argument
2052 if (vmci_handle_is_invalid(handle) || !context || in vmci_qp_broker_set_page_store()
2066 if (!vmci_ctx_qp_exists(context, handle)) { in vmci_qp_broker_set_page_store()
2068 context_id, handle.context, handle.resource); in vmci_qp_broker_set_page_store()
2073 entry = qp_broker_handle_to_entry(handle); in vmci_qp_broker_set_page_store()
2119 qp_notify_peer(true, handle, context_id, entry->create_id); in vmci_qp_broker_set_page_store()
2122 entry->create_id, entry->qp.handle.context, in vmci_qp_broker_set_page_store()
2123 entry->qp.handle.resource); in vmci_qp_broker_set_page_store()
2162 int vmci_qp_broker_detach(struct vmci_handle handle, struct vmci_ctx *context) in vmci_qp_broker_detach() argument
2170 if (vmci_handle_is_invalid(handle) || !context || in vmci_qp_broker_detach()
2177 if (!vmci_ctx_qp_exists(context, handle)) { in vmci_qp_broker_detach()
2179 context_id, handle.context, handle.resource); in vmci_qp_broker_detach()
2184 entry = qp_broker_handle_to_entry(handle); in vmci_qp_broker_detach()
2187 context_id, handle.context, handle.resource); in vmci_qp_broker_detach()
2229 handle.context, handle.resource, in vmci_qp_broker_detach()
2272 vmci_ctx_qp_destroy(context, handle); in vmci_qp_broker_detach()
2274 qp_notify_peer(false, handle, context_id, peer_id); in vmci_qp_broker_detach()
2283 vmci_ctx_qp_destroy(context, handle); in vmci_qp_broker_detach()
2298 int vmci_qp_broker_map(struct vmci_handle handle, in vmci_qp_broker_map() argument
2307 if (vmci_handle_is_invalid(handle) || !context || in vmci_qp_broker_map()
2313 if (!vmci_ctx_qp_exists(context, handle)) { in vmci_qp_broker_map()
2315 context_id, handle.context, handle.resource); in vmci_qp_broker_map()
2320 entry = qp_broker_handle_to_entry(handle); in vmci_qp_broker_map()
2323 context_id, handle.context, handle.resource); in vmci_qp_broker_map()
2409 int vmci_qp_broker_unmap(struct vmci_handle handle, in vmci_qp_broker_unmap() argument
2418 if (vmci_handle_is_invalid(handle) || !context || in vmci_qp_broker_unmap()
2424 if (!vmci_ctx_qp_exists(context, handle)) { in vmci_qp_broker_unmap()
2426 context_id, handle.context, handle.resource); in vmci_qp_broker_unmap()
2431 entry = qp_broker_handle_to_entry(handle); in vmci_qp_broker_unmap()
2434 context_id, handle.context, handle.resource); in vmci_qp_broker_unmap()
2451 handle.context, handle.resource, result); in vmci_qp_broker_unmap()
2498 qp_detatch_hypercall(entry->handle); in vmci_qp_guest_endpoints_exit()
2759 struct vmci_handle *handle, in vmci_qpair_alloc() argument
2831 retval = vmci_qp_alloc(handle, in vmci_qpair_alloc()
2848 my_qpair->handle = *handle; in vmci_qpair_alloc()
2871 result = qp_detatch(old_qpair->handle, old_qpair->guest_endpoint); in vmci_qpair_detach()
2884 old_qpair->handle = VMCI_INVALID_HANDLE; in vmci_qpair_detach()