Searched refs:scifdev (Results 1 - 15 of 15) sorted by relevance

/linux-4.4.14/drivers/misc/mic/scif/
H A Dscif_map.h25 struct scif_dev *scifdev, size_t size, scif_alloc_coherent()
30 if (scifdev_self(scifdev)) { scif_alloc_coherent()
35 va = dma_alloc_coherent(&scifdev->sdev->dev, scif_alloc_coherent()
37 if (va && scifdev_is_p2p(scifdev)) scif_alloc_coherent()
38 *dma_handle = *dma_handle + scifdev->base_addr; scif_alloc_coherent()
45 struct scif_dev *scifdev, size_t size) scif_free_coherent()
47 if (scifdev_self(scifdev)) { scif_free_coherent()
50 if (scifdev_is_p2p(scifdev) && local > scifdev->base_addr) scif_free_coherent()
51 local = local - scifdev->base_addr; scif_free_coherent()
52 dma_free_coherent(&scifdev->sdev->dev, scif_free_coherent()
59 void *local, struct scif_dev *scifdev, size_t size) scif_map_single()
63 if (scifdev_self(scifdev)) { scif_map_single()
66 *dma_handle = dma_map_single(&scifdev->sdev->dev, scif_map_single()
68 if (dma_mapping_error(&scifdev->sdev->dev, *dma_handle)) scif_map_single()
70 else if (scifdev_is_p2p(scifdev)) scif_map_single()
71 *dma_handle = *dma_handle + scifdev->base_addr; scif_map_single()
79 scif_unmap_single(dma_addr_t local, struct scif_dev *scifdev, scif_unmap_single() argument
82 if (!scifdev_self(scifdev)) { scif_unmap_single()
83 if (scifdev_is_p2p(scifdev)) scif_unmap_single()
84 local = local - scifdev->base_addr; scif_unmap_single()
85 dma_unmap_single(&scifdev->sdev->dev, local, scif_unmap_single()
91 scif_ioremap(dma_addr_t phys, size_t size, struct scif_dev *scifdev) scif_ioremap() argument
94 struct scif_hw_dev *sdev = scifdev->sdev; scif_ioremap()
96 if (scifdev_self(scifdev)) scif_ioremap()
105 scif_iounmap(void *virt, size_t len, struct scif_dev *scifdev) scif_iounmap() argument
107 if (!scifdev_self(scifdev)) { scif_iounmap()
108 struct scif_hw_dev *sdev = scifdev->sdev; scif_iounmap()
116 struct scif_dev *scifdev) scif_map_page()
120 if (scifdev_self(scifdev)) { scif_map_page()
123 struct scif_hw_dev *sdev = scifdev->sdev; scif_map_page()
129 else if (scifdev_is_p2p(scifdev)) scif_map_page()
130 *dma_handle = *dma_handle + scifdev->base_addr; scif_map_page()
24 scif_alloc_coherent(dma_addr_t *dma_handle, struct scif_dev *scifdev, size_t size, gfp_t gfp) scif_alloc_coherent() argument
44 scif_free_coherent(void *va, dma_addr_t local, struct scif_dev *scifdev, size_t size) scif_free_coherent() argument
58 scif_map_single(dma_addr_t *dma_handle, void *local, struct scif_dev *scifdev, size_t size) scif_map_single() argument
115 scif_map_page(dma_addr_t *dma_handle, struct page *page, struct scif_dev *scifdev) scif_map_page() argument
H A Dscif_main.c43 struct scif_dev *scifdev = scif_intr_bh_handler() local
46 if (scifdev_self(scifdev)) scif_intr_bh_handler()
47 scif_loopb_msg_handler(scifdev, scifdev->qpairs); scif_intr_bh_handler()
49 scif_nodeqp_intrhandler(scifdev, scifdev->qpairs); scif_intr_bh_handler()
52 int scif_setup_intr_wq(struct scif_dev *scifdev) scif_setup_intr_wq() argument
54 if (!scifdev->intr_wq) { scif_setup_intr_wq()
55 snprintf(scifdev->intr_wqname, sizeof(scifdev->intr_wqname), scif_setup_intr_wq()
56 "SCIF INTR %d", scifdev->node); scif_setup_intr_wq()
57 scifdev->intr_wq = scif_setup_intr_wq()
58 alloc_ordered_workqueue(scifdev->intr_wqname, 0); scif_setup_intr_wq()
59 if (!scifdev->intr_wq) scif_setup_intr_wq()
61 INIT_WORK(&scifdev->intr_bh, scif_intr_bh_handler); scif_setup_intr_wq()
66 void scif_destroy_intr_wq(struct scif_dev *scifdev) scif_destroy_intr_wq() argument
68 if (scifdev->intr_wq) { scif_destroy_intr_wq()
69 destroy_workqueue(scifdev->intr_wq); scif_destroy_intr_wq()
70 scifdev->intr_wq = NULL; scif_destroy_intr_wq()
76 struct scif_dev *scifdev = data; scif_intr_handler() local
77 struct scif_hw_dev *sdev = scifdev->sdev; scif_intr_handler()
79 sdev->hw_ops->ack_interrupt(sdev, scifdev->db); scif_intr_handler()
80 queue_work(scifdev->intr_wq, &scifdev->intr_bh); scif_intr_handler()
86 struct scif_dev *scifdev = container_of(work, struct scif_dev, scif_qp_setup_handler() local
88 struct scif_hw_dev *sdev = scifdev->sdev; scif_qp_setup_handler()
96 scifdev->rdb = bp->h2c_scif_db; scif_qp_setup_handler()
101 scifdev->rdb = ioread8(&bp->c2h_scif_db); scif_qp_setup_handler()
104 err = scif_qp_response(da, scifdev); scif_qp_setup_handler()
106 dev_err(&scifdev->sdev->dev, scif_qp_setup_handler()
109 schedule_delayed_work(&scifdev->qp_dwork, scif_qp_setup_handler()
125 struct scif_dev *scifdev = &scif_dev[i]; scif_setup_scifdev() local
127 scifdev->node = i; scif_setup_scifdev()
128 scifdev->exit = OP_IDLE; scif_setup_scifdev()
129 init_waitqueue_head(&scifdev->disconn_wq); scif_setup_scifdev()
130 mutex_init(&scifdev->lock); scif_setup_scifdev()
131 INIT_WORK(&scifdev->peer_add_work, scif_add_peer_device); scif_setup_scifdev()
132 INIT_DELAYED_WORK(&scifdev->p2p_dwork, scif_setup_scifdev()
134 INIT_DELAYED_WORK(&scifdev->qp_dwork, scif_setup_scifdev()
136 INIT_LIST_HEAD(&scifdev->p2p); scif_setup_scifdev()
137 RCU_INIT_POINTER(scifdev->spdev, NULL); scif_setup_scifdev()
149 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; scif_probe() local
153 scifdev->sdev = sdev; scif_probe()
164 rc = scif_setup_intr_wq(scifdev); scif_probe()
167 rc = scif_setup_qp(scifdev); scif_probe()
170 scifdev->db = sdev->hw_ops->next_db(sdev); scif_probe()
171 scifdev->cookie = sdev->hw_ops->request_irq(sdev, scif_intr_handler, scif_probe()
172 "SCIF_INTR", scifdev, scif_probe()
173 scifdev->db); scif_probe()
174 if (IS_ERR(scifdev->cookie)) { scif_probe()
175 rc = PTR_ERR(scifdev->cookie); scif_probe()
181 bp->c2h_scif_db = scifdev->db; scif_probe()
182 bp->scif_host_dma_addr = scifdev->qp_dma_addr; scif_probe()
186 iowrite8(scifdev->db, &bp->h2c_scif_db); scif_probe()
187 writeq(scifdev->qp_dma_addr, &bp->scif_card_dma_addr); scif_probe()
189 schedule_delayed_work(&scifdev->qp_dwork, scif_probe()
193 scif_free_qp(scifdev); scif_probe()
195 scif_destroy_intr_wq(scifdev); scif_probe()
203 void scif_stop(struct scif_dev *scifdev) scif_stop() argument
218 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; scif_remove() local
232 scif_disconnect_node(scifdev->node, true); scif_remove()
235 scif_stop(scifdev); scif_remove()
239 if (scifdev->cookie) { scif_remove()
240 sdev->hw_ops->free_irq(sdev, scifdev->cookie, scifdev); scif_remove()
241 scifdev->cookie = NULL; scif_remove()
243 scif_destroy_intr_wq(scifdev); scif_remove()
244 cancel_delayed_work(&scifdev->qp_dwork); scif_remove()
245 scif_free_qp(scifdev); scif_remove()
246 scifdev->rdb = -1; scif_remove()
247 scifdev->sdev = NULL; scif_remove()
H A Dscif_peer_bus.c34 struct scif_dev *scifdev = &scif_dev[sdev->dnode]; scif_peer_release_dev() local
36 scif_cleanup_scifdev(scifdev); scif_peer_release_dev()
40 static int scif_peer_initialize_device(struct scif_dev *scifdev) scif_peer_initialize_device() argument
51 spdev->dev.parent = scifdev->sdev->dev.parent; scif_peer_initialize_device()
53 spdev->dnode = scifdev->node; scif_peer_initialize_device()
59 rcu_assign_pointer(scifdev->spdev, spdev); scif_peer_initialize_device()
67 dev_err(&scifdev->sdev->dev, scif_peer_initialize_device()
68 "dnode %d: initialize_device rc %d\n", scifdev->node, ret); scif_peer_initialize_device()
72 static int scif_peer_add_device(struct scif_dev *scifdev) scif_peer_add_device() argument
74 struct scif_peer_dev *spdev = rcu_dereference(scifdev->spdev); scif_peer_add_device()
81 dev_err(&scifdev->sdev->dev, scif_peer_add_device()
82 "dnode %d: peer device_add failed\n", scifdev->node); scif_peer_add_device()
87 scifdev->signal_pool = dmam_pool_create(pool_name, &scifdev->sdev->dev, scif_peer_add_device()
90 if (!scifdev->signal_pool) { scif_peer_add_device()
91 dev_err(&scifdev->sdev->dev, scif_peer_add_device()
92 "dnode %d: dmam_pool_create failed\n", scifdev->node); scif_peer_add_device()
101 RCU_INIT_POINTER(scifdev->spdev, NULL); scif_peer_add_device()
113 struct scif_dev *scifdev = container_of(work, struct scif_dev, scif_add_peer_device() local
116 scif_peer_add_device(scifdev); scif_add_peer_device()
131 void scif_peer_register_device(struct scif_dev *scifdev) scif_peer_register_device() argument
135 mutex_lock(&scifdev->lock); scif_peer_register_device()
136 ret = scif_peer_initialize_device(scifdev); scif_peer_register_device()
139 schedule_work(&scifdev->peer_add_work); scif_peer_register_device()
141 mutex_unlock(&scifdev->lock); scif_peer_register_device()
144 int scif_peer_unregister_device(struct scif_dev *scifdev) scif_peer_unregister_device() argument
148 mutex_lock(&scifdev->lock); scif_peer_unregister_device()
150 flush_work(&scifdev->peer_add_work); scif_peer_unregister_device()
153 * Continue holding scifdev->lock since theoretically unregister_device scif_peer_unregister_device()
156 spdev = rcu_dereference(scifdev->spdev); scif_peer_unregister_device()
158 mutex_unlock(&scifdev->lock); scif_peer_unregister_device()
162 RCU_INIT_POINTER(scifdev->spdev, NULL); scif_peer_unregister_device()
164 mutex_unlock(&scifdev->lock); scif_peer_unregister_device()
H A Dscif_nm.c60 void scif_free_qp(struct scif_dev *scifdev) scif_free_qp() argument
62 struct scif_qp *qp = scifdev->qpairs; scif_free_qp()
66 scif_unmap_single(qp->local_buf, scifdev, qp->inbound_q.size); scif_free_qp()
68 scif_unmap_single(qp->local_qp, scifdev, sizeof(struct scif_qp)); scif_free_qp()
69 kfree(scifdev->qpairs); scif_free_qp()
70 scifdev->qpairs = NULL; scif_free_qp()
155 struct scif_dev *scifdev = &scif_dev[node]; scif_handle_remove_node() local
157 if (scif_peer_unregister_device(scifdev)) scif_handle_remove_node()
158 scif_send_acks(scifdev); scif_handle_remove_node()
186 struct scif_dev *scifdev = &scif_dev[node_id]; scif_disconnect_node() local
191 atomic_set(&scifdev->disconn_rescnt, 0); scif_disconnect_node()
202 ret = wait_event_timeout(scifdev->disconn_wq, scif_disconnect_node()
203 (atomic_read(&scifdev->disconn_rescnt) scif_disconnect_node()
206 if (mgmt_initiated && _scifdev_alive(scifdev)) scif_disconnect_node()
211 scif_send_exit(scifdev); scif_disconnect_node()
212 atomic_set(&scifdev->disconn_rescnt, 0); scif_disconnect_node()
217 wait_event_timeout(scifdev->disconn_wq, scif_disconnect_node()
218 (atomic_read(&scifdev->disconn_rescnt) == 1), scif_disconnect_node()
H A Dscif_nodeqp.c106 int local_size, struct scif_dev *scifdev) scif_setup_qp_connect()
124 err = scif_map_single(&qp->local_buf, local_q, scifdev, local_size); scif_setup_qp_connect()
141 scifdev, sizeof(struct scif_qp)); scif_setup_qp_connect()
147 scif_unmap_single(qp->local_buf, scifdev, local_size); scif_setup_qp_connect()
157 struct scif_dev *scifdev) scif_setup_qp_accept()
168 remote_qp = scif_ioremap(phys, sizeof(struct scif_qp), scifdev); scif_setup_qp_accept()
178 remote_q = scif_ioremap(qp->remote_buf, remote_size, scifdev); scif_setup_qp_accept()
198 err = scif_map_single(&qp->local_buf, local_q, scifdev, local_size); scif_setup_qp_accept()
210 err = scif_map_single(qp_offset, qp, scifdev, scif_setup_qp_accept()
217 scif_unmap_single(qp->local_buf, scifdev, local_size); scif_setup_qp_accept()
222 scif_iounmap(remote_q, remote_size, scifdev); scif_setup_qp_accept()
225 scif_iounmap(qp->remote_qp, sizeof(struct scif_qp), scifdev); scif_setup_qp_accept()
230 int scif_setup_qp_connect_response(struct scif_dev *scifdev, scif_setup_qp_connect_response() argument
238 qp->remote_qp = scif_ioremap(payload, sizeof(struct scif_qp), scifdev); scif_setup_qp_connect_response()
246 dev_err(&scifdev->sdev->dev, scif_setup_qp_connect_response()
248 scif_dev[scif_info.nodeid].node, scifdev->node); scif_setup_qp_connect_response()
255 r_buf = scif_ioremap(tmp_phys, remote_size, scifdev); scif_setup_qp_connect_response()
285 scif_send_msg_intr(struct scif_dev *scifdev) scif_send_msg_intr() argument
287 struct scif_hw_dev *sdev = scifdev->sdev; scif_send_msg_intr()
289 if (scifdev_is_p2p(scifdev)) scif_send_msg_intr()
290 sdev->hw_ops->send_p2p_intr(sdev, scifdev->rdb, &scifdev->mmio); scif_send_msg_intr()
292 sdev->hw_ops->send_intr(sdev, scifdev->rdb); scif_send_msg_intr()
295 int scif_qp_response(phys_addr_t phys, struct scif_dev *scifdev) scif_qp_response() argument
300 err = scif_setup_qp_connect_response(scifdev, scifdev->qpairs, phys); scif_qp_response()
307 msg.dst.node = scifdev->node; scif_qp_response()
308 err = scif_nodeqp_send(scifdev, &msg); scif_qp_response()
313 void scif_send_exit(struct scif_dev *scifdev) scif_send_exit() argument
318 scifdev->exit = OP_IN_PROGRESS; scif_send_exit()
321 msg.dst.node = scifdev->node; scif_send_exit()
322 ret = scif_nodeqp_send(scifdev, &msg); scif_send_exit()
326 wait_event_timeout(scif_info.exitwq, scifdev->exit == OP_COMPLETED, scif_send_exit()
329 scifdev->exit = OP_IDLE; scif_send_exit()
332 int scif_setup_qp(struct scif_dev *scifdev) scif_setup_qp() argument
346 scifdev->qpairs = qp; scif_setup_qp()
347 err = scif_setup_qp_connect(qp, &scifdev->qp_dma_addr, scif_setup_qp()
348 local_size, scifdev); scif_setup_qp()
358 kfree(scifdev->qpairs); scif_setup_qp()
359 scifdev->qpairs = NULL; scif_setup_qp()
387 /* Init p2p mappings required to access peerdev from scifdev */
389 scif_init_p2p_info(struct scif_dev *scifdev, struct scif_dev *peerdev) scif_init_p2p_info() argument
394 struct scif_hw_dev *sdev = scifdev->sdev; scif_init_p2p_info()
439 static void scif_deinit_p2p_info(struct scif_dev *scifdev, scif_deinit_p2p_info() argument
442 struct scif_hw_dev *sdev = scifdev->sdev; scif_deinit_p2p_info()
460 static void scif_node_connect(struct scif_dev *scifdev, int dst) scif_node_connect() argument
462 struct scif_dev *dev_j = scifdev; scif_node_connect()
517 dev_err(&scifdev->sdev->dev, scif_node_connect()
549 struct scif_dev *scifdev = &scif_dev[i]; scif_p2p_setup() local
553 scif_node_connect(scifdev, j); scif_p2p_setup()
601 scif_display_message(struct scif_dev *scifdev, struct scifmsg *msg, scif_display_message() argument
607 dev_err(&scifdev->sdev->dev, scif_display_message()
611 dev_info(&scifdev->sdev->dev, scif_display_message()
618 int _scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg) _scif_nodeqp_send() argument
620 struct scif_qp *qp = scifdev->qpairs; _scif_nodeqp_send()
623 scif_display_message(scifdev, msg, "Sent"); _scif_nodeqp_send()
643 if (scifdev_self(scifdev)) _scif_nodeqp_send()
649 queue_work(scifdev->intr_wq, &scifdev->intr_bh); _scif_nodeqp_send()
651 scif_send_msg_intr(scifdev); _scif_nodeqp_send()
655 dev_dbg(&scifdev->sdev->dev, _scif_nodeqp_send()
663 * @scifdev: Scif Device.
666 int scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg) scif_nodeqp_send() argument
673 if (OP_IDLE != scifdev->exit) scif_nodeqp_send()
675 spdev = scif_get_peer_dev(scifdev); scif_nodeqp_send()
681 err = _scif_nodeqp_send(scifdev, msg); scif_nodeqp_send()
707 * @scifdev: Remote SCIF device node
711 scif_init(struct scif_dev *scifdev, struct scifmsg *msg) scif_init() argument
717 flush_delayed_work(&scifdev->qp_dwork); scif_init()
719 scif_peer_register_device(scifdev); scif_init()
730 * @scifdev: Remote SCIF device node
738 scif_exit(struct scif_dev *scifdev, struct scifmsg *unused) scif_exit() argument
740 scifdev->exit_ack_pending = true; scif_exit()
742 scif_disconnect_node(scifdev->node, false); scif_exit()
744 scif_stop(scifdev); scif_exit()
745 schedule_delayed_work(&scifdev->qp_dwork, scif_exit()
751 * @scifdev: Remote SCIF device node
756 scif_exit_ack(struct scif_dev *scifdev, struct scifmsg *unused) scif_exit_ack() argument
758 scifdev->exit = OP_COMPLETED; scif_exit_ack()
764 * @scifdev: Remote SCIF device node
777 scif_node_add(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_add() argument
784 dev_dbg(&scifdev->sdev->dev, scif_node_add()
786 scifdev->node, msg->dst.node, msg->src.node); scif_node_add()
787 dev_dbg(&scifdev->sdev->dev, scif_node_add()
796 dev_err(&scifdev->sdev->dev, scif_node_add()
802 dev_err(&scifdev->sdev->dev, scif_node_add()
818 dev_err(&scifdev->sdev->dev, scif_node_add()
847 dev_err(&scifdev->sdev->dev, scif_node_add()
887 * @scifdev: Remote SCIF device node
895 scif_node_add_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_add_ack() argument
901 dev_dbg(&scifdev->sdev->dev, scif_node_add_ack()
903 scifdev->node, msg->src.node, msg->dst.node); scif_node_add_ack()
904 dev_dbg(&scifdev->sdev->dev, scif_node_add_ack()
947 scif_node_add_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_add_nack() argument
952 dev_dbg(&scifdev->sdev->dev, scif_node_add_nack()
953 "SCIF_NODE_ADD_NACK received from %d\n", scifdev->node); scif_node_add_nack()
965 scif_node_remove(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_remove() argument
981 scif_node_remove_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_node_remove_ack() argument
996 scif_get_node_info_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_get_node_info_resp() argument
1004 scif_nodeqp_send(scifdev, msg); scif_get_node_info_resp()
1018 scif_msg_unknown(struct scif_dev *scifdev, struct scifmsg *msg) scif_msg_unknown() argument
1021 dev_err(&scifdev->sdev->dev, scif_msg_unknown()
1022 "Unknown message 0x%xn scifdev->node 0x%x\n", scif_msg_unknown()
1023 msg->uop, scifdev->node); scif_msg_unknown()
1072 * @scifdev: Remote device to respond to
1082 scif_nodeqp_msg_handler(struct scif_dev *scifdev, scif_nodeqp_msg_handler() argument
1085 scif_display_message(scifdev, msg, "Rcvd"); scif_nodeqp_msg_handler()
1089 dev_err(&scifdev->sdev->dev, scif_nodeqp_msg_handler()
1090 "Unknown message 0x%xn scifdev->node 0x%x\n", scif_nodeqp_msg_handler()
1091 msg->uop, scifdev->node); scif_nodeqp_msg_handler()
1095 scif_intr_func[msg->uop](scifdev, msg); scif_nodeqp_msg_handler()
1100 * @scifdev: Remote device to respond to
1107 void scif_nodeqp_intrhandler(struct scif_dev *scifdev, struct scif_qp *qp) scif_nodeqp_intrhandler() argument
1116 scif_nodeqp_msg_handler(scifdev, qp, &msg); scif_nodeqp_intrhandler()
1139 struct scif_dev *scifdev = scif_info.loopb_dev; scif_loopb_wq_handler() local
1140 struct scif_qp *qp = scifdev->qpairs; scif_loopb_wq_handler()
1155 scif_nodeqp_msg_handler(scifdev, qp, &msg->msg); scif_loopb_wq_handler()
1163 * @scifdev: SCIF device
1194 scif_loopb_msg_handler(struct scif_dev *scifdev, struct scif_qp *qp) scif_loopb_msg_handler() argument
1221 * @scifdev: SCIF device
1225 int scif_setup_loopback_qp(struct scif_dev *scifdev) scif_setup_loopback_qp() argument
1231 err = scif_setup_intr_wq(scifdev); scif_setup_loopback_qp()
1236 "SCIF LOOPB %d", scifdev->node); scif_setup_loopback_qp()
1245 scifdev->qpairs = kzalloc(sizeof(*scifdev->qpairs), GFP_KERNEL); scif_setup_loopback_qp()
1246 if (!scifdev->qpairs) { scif_setup_loopback_qp()
1251 qp = scifdev->qpairs; scif_setup_loopback_qp()
1275 scif_info.nodeid = scifdev->node; scif_setup_loopback_qp()
1277 scif_peer_register_device(scifdev); scif_setup_loopback_qp()
1279 scif_info.loopb_dev = scifdev; scif_setup_loopback_qp()
1282 kfree(scifdev->qpairs); scif_setup_loopback_qp()
1286 scif_destroy_intr_wq(scifdev); scif_setup_loopback_qp()
1293 * @scifdev: SCIF device
1297 int scif_destroy_loopback_qp(struct scif_dev *scifdev) scif_destroy_loopback_qp() argument
1299 scif_peer_unregister_device(scifdev); scif_destroy_loopback_qp()
1301 scif_destroy_intr_wq(scifdev); scif_destroy_loopback_qp()
1302 kfree(scifdev->qpairs->outbound_q.rb_base); scif_destroy_loopback_qp()
1303 kfree(scifdev->qpairs); scif_destroy_loopback_qp()
1304 scifdev->sdev = NULL; scif_destroy_loopback_qp()
1309 void scif_destroy_p2p(struct scif_dev *scifdev) scif_destroy_p2p() argument
1318 list_for_each_safe(pos, tmp, &scifdev->p2p) { scif_destroy_p2p()
1320 dma_unmap_sg(&scifdev->sdev->dev, p2p->ppi_sg[SCIF_PPI_MMIO], scif_destroy_p2p()
1323 dma_unmap_sg(&scifdev->sdev->dev, p2p->ppi_sg[SCIF_PPI_APER], scif_destroy_p2p()
1337 if (p2p->ppi_peer_id == scifdev->node) { scif_destroy_p2p()
105 scif_setup_qp_connect(struct scif_qp *qp, dma_addr_t *qp_offset, int local_size, struct scif_dev *scifdev) scif_setup_qp_connect() argument
155 scif_setup_qp_accept(struct scif_qp *qp, dma_addr_t *qp_offset, dma_addr_t phys, int local_size, struct scif_dev *scifdev) scif_setup_qp_accept() argument
H A Dscif_nodeqp.h184 int scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg);
185 int _scif_nodeqp_send(struct scif_dev *scifdev, struct scifmsg *msg);
186 void scif_nodeqp_intrhandler(struct scif_dev *scifdev, struct scif_qp *qp);
187 int scif_loopb_msg_handler(struct scif_dev *scifdev, struct scif_qp *qp);
188 int scif_setup_qp(struct scif_dev *scifdev);
191 int local_size, struct scif_dev *scifdev);
194 struct scif_dev *scifdev);
195 int scif_setup_qp_connect_response(struct scif_dev *scifdev,
197 int scif_setup_loopback_qp(struct scif_dev *scifdev);
198 int scif_destroy_loopback_qp(struct scif_dev *scifdev);
200 void scif_destroy_p2p(struct scif_dev *scifdev);
201 void scif_send_exit(struct scif_dev *scifdev); scif_get_peer_dev()
202 static inline struct device *scif_get_peer_dev(struct scif_dev *scifdev) scif_get_peer_dev() argument
208 spdev = rcu_dereference(scifdev->spdev); scif_get_peer_dev()
H A Dscif_epd.h77 * @remote_dev: scifdev used by this endpt to communicate with remote node.
194 void scif_cnctreq(struct scif_dev *scifdev, struct scifmsg *msg);
195 void scif_cnctgnt(struct scif_dev *scifdev, struct scifmsg *msg);
196 void scif_cnctgnt_ack(struct scif_dev *scifdev, struct scifmsg *msg);
197 void scif_cnctgnt_nack(struct scif_dev *scifdev, struct scifmsg *msg);
198 void scif_cnctrej(struct scif_dev *scifdev, struct scifmsg *msg);
199 void scif_discnct(struct scif_dev *scifdev, struct scifmsg *msg);
200 void scif_discnt_ack(struct scif_dev *scifdev, struct scifmsg *msg);
201 void scif_clientsend(struct scif_dev *scifdev, struct scifmsg *msg);
202 void scif_clientrcvd(struct scif_dev *scifdev, struct scifmsg *msg);
H A Dscif_epd.c128 void scif_cnctreq(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctreq() argument
174 void scif_cnctgnt(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctgnt() argument
199 void scif_cnctgnt_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctgnt_ack() argument
221 void scif_cnctgnt_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctgnt_nack() argument
238 void scif_cnctrej(struct scif_dev *scifdev, struct scifmsg *msg) scif_cnctrej() argument
263 void scif_discnct(struct scif_dev *scifdev, struct scifmsg *msg) scif_discnct() argument
317 void scif_discnt_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_discnt_ack() argument
333 void scif_clientsend(struct scif_dev *scifdev, struct scifmsg *msg) scif_clientsend() argument
349 void scif_clientrcvd(struct scif_dev *scifdev, struct scifmsg *msg) scif_clientrcvd() argument
H A Dscif_rma.h340 void scif_alloc_req(struct scif_dev *scifdev, struct scifmsg *msg);
341 void scif_alloc_gnt_rej(struct scif_dev *scifdev, struct scifmsg *msg);
342 void scif_free_virt(struct scif_dev *scifdev, struct scifmsg *msg);
343 void scif_recv_reg(struct scif_dev *scifdev, struct scifmsg *msg);
344 void scif_recv_unreg(struct scif_dev *scifdev, struct scifmsg *msg);
345 void scif_recv_reg_ack(struct scif_dev *scifdev, struct scifmsg *msg);
346 void scif_recv_reg_nack(struct scif_dev *scifdev, struct scifmsg *msg);
347 void scif_recv_unreg_ack(struct scif_dev *scifdev, struct scifmsg *msg);
348 void scif_recv_unreg_nack(struct scif_dev *scifdev, struct scifmsg *msg);
349 void scif_recv_munmap(struct scif_dev *scifdev, struct scifmsg *msg);
350 void scif_recv_mark(struct scif_dev *scifdev, struct scifmsg *msg);
351 void scif_recv_mark_resp(struct scif_dev *scifdev, struct scifmsg *msg);
352 void scif_recv_wait(struct scif_dev *scifdev, struct scifmsg *msg);
353 void scif_recv_wait_resp(struct scif_dev *scifdev, struct scifmsg *msg);
354 void scif_recv_sig_local(struct scif_dev *scifdev, struct scifmsg *msg);
355 void scif_recv_sig_remote(struct scif_dev *scifdev, struct scifmsg *msg);
356 void scif_recv_sig_resp(struct scif_dev *scifdev, struct scifmsg *msg);
H A Dscif_peer_bus.h28 int scif_peer_unregister_device(struct scif_dev *scifdev);
H A Dscif_main.h255 * @scifdev: The remote SCIF Device
260 static inline int _scifdev_alive(struct scif_dev *scifdev) _scifdev_alive() argument
265 spdev = rcu_dereference(scifdev->spdev); _scifdev_alive()
274 int scif_setup_intr_wq(struct scif_dev *scifdev);
275 void scif_destroy_intr_wq(struct scif_dev *scifdev);
281 void scif_stop(struct scif_dev *scifdev);
H A Dscif_rma.c480 scif_create_remote_window(struct scif_dev *scifdev, int nr_pages) scif_create_remote_window() argument
501 if (scif_create_remote_lookup(scifdev, window)) scif_create_remote_window()
1057 void scif_alloc_req(struct scif_dev *scifdev, struct scifmsg *msg) scif_alloc_req() argument
1063 window = scif_create_remote_window(scifdev, nr_pages); scif_alloc_req()
1073 err = scif_nodeqp_send(scifdev, msg); scif_alloc_req()
1079 dev_err(&scifdev->sdev->dev, scif_alloc_req()
1083 scif_nodeqp_send(scifdev, msg); scif_alloc_req()
1092 void scif_alloc_gnt_rej(struct scif_dev *scifdev, struct scifmsg *msg) scif_alloc_gnt_rej() argument
1116 void scif_free_virt(struct scif_dev *scifdev, struct scifmsg *msg) scif_free_virt() argument
1154 void scif_recv_reg(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_reg() argument
1190 void scif_recv_unreg(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_unreg() argument
1211 dev_err(&scifdev->sdev->dev, scif_recv_unreg()
1220 dev_err(&scifdev->sdev->dev, scif_recv_unreg()
1255 void scif_recv_reg_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_reg_ack() argument
1274 void scif_recv_reg_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_reg_nack() argument
1292 void scif_recv_unreg_ack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_unreg_ack() argument
1311 void scif_recv_unreg_nack(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_unreg_nack() argument
H A Dscif_fence.c27 void scif_recv_mark(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_mark() argument
48 void scif_recv_mark_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_mark_resp() argument
71 void scif_recv_wait(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_wait() argument
108 void scif_recv_wait_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_wait_resp() argument
129 void scif_recv_sig_local(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_sig_local() argument
150 void scif_recv_sig_remote(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_sig_remote() argument
171 void scif_recv_sig_resp(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_sig_resp() argument
H A Dscif_mmap.c31 void scif_recv_munmap(struct scif_dev *scifdev, struct scifmsg *msg) scif_recv_munmap() argument
51 dev_err(&scifdev->sdev->dev, scif_recv_munmap()
207 struct scif_dev *scifdev = (struct scif_dev *)ep->remote_dev; scif_get_phys() local
208 struct scif_hw_dev *sdev = scifdev->sdev; scif_get_phys()
215 if (!scifdev_self(scifdev) && sdev->aper && sdev->card_rel_da) scif_get_phys()
H A Dscif_dma.c93 struct scif_dev *scifdev; scif_reserve_dma_chan() local
101 scifdev = &scif_dev[0]; scif_reserve_dma_chan()
103 scifdev = ep->remote_dev; scif_reserve_dma_chan()
104 sdev = scifdev->sdev; scif_reserve_dma_chan()
107 chan = sdev->dma_ch[scifdev->dma_ch_idx]; scif_reserve_dma_chan()
108 scifdev->dma_ch_idx = (scifdev->dma_ch_idx + 1) % sdev->num_dma_ch; scif_reserve_dma_chan()

Completed in 220 milliseconds