Lines Matching refs:dmb_node

51 	struct dibs_lo_dmb_node *dmb_node, *tmp_node;  in dibs_lo_register_dmb()  local
67 dmb_node = kzalloc_obj(*dmb_node); in dibs_lo_register_dmb()
68 if (!dmb_node) { in dibs_lo_register_dmb()
73 dmb_node->sba_idx = sba_idx; in dibs_lo_register_dmb()
74 dmb_node->len = dmb->dmb_len; in dibs_lo_register_dmb()
79 get_order(dmb_node->len)); in dibs_lo_register_dmb()
84 dmb_node->cpu_addr = folio_address(folio); in dibs_lo_register_dmb()
85 dmb_node->dma_addr = DIBS_DMA_ADDR_INVALID; in dibs_lo_register_dmb()
86 refcount_set(&dmb_node->refcnt, 1); in dibs_lo_register_dmb()
90 get_random_bytes(&dmb_node->token, sizeof(dmb_node->token)); in dibs_lo_register_dmb()
92 hash_for_each_possible(ldev->dmb_ht, tmp_node, list, dmb_node->token) { in dibs_lo_register_dmb()
93 if (tmp_node->token == dmb_node->token) { in dibs_lo_register_dmb()
98 hash_add(ldev->dmb_ht, &dmb_node->list, dmb_node->token); in dibs_lo_register_dmb()
102 dmb->idx = dmb_node->sba_idx; in dibs_lo_register_dmb()
103 dmb->dmb_tok = dmb_node->token; in dibs_lo_register_dmb()
104 dmb->cpu_addr = dmb_node->cpu_addr; in dibs_lo_register_dmb()
105 dmb->dma_addr = dmb_node->dma_addr; in dibs_lo_register_dmb()
106 dmb->dmb_len = dmb_node->len; in dibs_lo_register_dmb()
115 kfree(dmb_node); in dibs_lo_register_dmb()
122 struct dibs_lo_dmb_node *dmb_node) in __dibs_lo_unregister_dmb() argument
126 hash_del(&dmb_node->list); in __dibs_lo_unregister_dmb()
129 clear_bit(dmb_node->sba_idx, ldev->sba_idx_mask); in __dibs_lo_unregister_dmb()
130 folio_put(virt_to_folio(dmb_node->cpu_addr)); in __dibs_lo_unregister_dmb()
131 kfree(dmb_node); in __dibs_lo_unregister_dmb()
139 struct dibs_lo_dmb_node *dmb_node = NULL, *tmp_node; in dibs_lo_unregister_dmb() local
149 dmb_node = tmp_node; in dibs_lo_unregister_dmb()
154 if (!dmb_node) in dibs_lo_unregister_dmb()
157 if (refcount_dec_and_test(&dmb_node->refcnt)) { in dibs_lo_unregister_dmb()
159 dibs->dmb_clientid_arr[dmb_node->sba_idx] = NO_DIBS_CLIENT; in dibs_lo_unregister_dmb()
162 __dibs_lo_unregister_dmb(ldev, dmb_node); in dibs_lo_unregister_dmb()
174 struct dibs_lo_dmb_node *dmb_node = NULL, *tmp_node; in dibs_lo_attach_dmb() local
183 dmb_node = tmp_node; in dibs_lo_attach_dmb()
187 if (!dmb_node) { in dibs_lo_attach_dmb()
193 if (!refcount_inc_not_zero(&dmb_node->refcnt)) in dibs_lo_attach_dmb()
200 dmb->idx = dmb_node->sba_idx; in dibs_lo_attach_dmb()
201 dmb->dmb_tok = dmb_node->token; in dibs_lo_attach_dmb()
202 dmb->cpu_addr = dmb_node->cpu_addr; in dibs_lo_attach_dmb()
203 dmb->dma_addr = dmb_node->dma_addr; in dibs_lo_attach_dmb()
204 dmb->dmb_len = dmb_node->len; in dibs_lo_attach_dmb()
210 struct dibs_lo_dmb_node *dmb_node = NULL, *tmp_node; in dibs_lo_detach_dmb() local
219 dmb_node = tmp_node; in dibs_lo_detach_dmb()
223 if (!dmb_node) { in dibs_lo_detach_dmb()
229 if (refcount_dec_and_test(&dmb_node->refcnt)) in dibs_lo_detach_dmb()
230 __dibs_lo_unregister_dmb(ldev, dmb_node); in dibs_lo_detach_dmb()