Lines Matching refs:smpt_info
69 struct mic_smpt_info *smpt_info = mdev->smpt; in mic_add_smpt_entry() local
73 addr += smpt_info->info.page_size) { in mic_add_smpt_entry()
74 if (!smpt_info->entry[i].ref_count && in mic_add_smpt_entry()
75 (smpt_info->entry[i].dma_addr != addr)) { in mic_add_smpt_entry()
77 smpt_info->entry[i].dma_addr = addr; in mic_add_smpt_entry()
79 smpt_info->entry[i].ref_count += ref[i - spt]; in mic_add_smpt_entry()
96 struct mic_smpt_info *smpt_info = mdev->smpt; in mic_smpt_op() local
98 spin_lock_irqsave(&smpt_info->smpt_lock, flags); in mic_smpt_op()
101 for (i = 0; i < smpt_info->info.num_reg; i++) { in mic_smpt_op()
102 if (smpt_info->entry[i].dma_addr == addr) { in mic_smpt_op()
104 addr += smpt_info->info.page_size; in mic_smpt_op()
113 for (ae = 0, i = 0; i < smpt_info->info.num_reg; i++) { in mic_smpt_op()
114 ae = (smpt_info->entry[i].ref_count == 0) ? ae + 1 : 0; in mic_smpt_op()
120 spin_unlock_irqrestore(&smpt_info->smpt_lock, flags); in mic_smpt_op()
127 smpt_info->map_count++; in mic_smpt_op()
128 smpt_info->ref_count += (s64)size; in mic_smpt_op()
129 spin_unlock_irqrestore(&smpt_info->smpt_lock, flags); in mic_smpt_op()
167 struct mic_smpt_info *smpt_info = mdev->smpt; in mic_to_dma_addr() local
177 dma_addr = smpt_info->entry[spt].dma_addr + in mic_to_dma_addr()
244 struct mic_smpt_info *smpt_info = mdev->smpt; in mic_unmap() local
268 spin_lock_irqsave(&smpt_info->smpt_lock, flags); in mic_unmap()
269 smpt_info->unmap_count++; in mic_unmap()
270 smpt_info->ref_count -= (s64)size; in mic_unmap()
273 smpt_info->entry[i].ref_count -= ref[i - spt]; in mic_unmap()
274 if (smpt_info->entry[i].ref_count < 0) in mic_unmap()
278 spin_unlock_irqrestore(&smpt_info->smpt_lock, flags); in mic_unmap()
346 struct mic_smpt_info *smpt_info; in mic_smpt_init() local
352 smpt_info = mdev->smpt; in mic_smpt_init()
354 smpt_info->entry = kmalloc_array(smpt_info->info.num_reg, in mic_smpt_init()
355 sizeof(*smpt_info->entry), GFP_KERNEL); in mic_smpt_init()
356 if (!smpt_info->entry) { in mic_smpt_init()
360 spin_lock_init(&smpt_info->smpt_lock); in mic_smpt_init()
361 for (i = 0; i < smpt_info->info.num_reg; i++) { in mic_smpt_init()
362 dma_addr = i * smpt_info->info.page_size; in mic_smpt_init()
363 smpt_info->entry[i].dma_addr = dma_addr; in mic_smpt_init()
364 smpt_info->entry[i].ref_count = 0; in mic_smpt_init()
367 smpt_info->ref_count = 0; in mic_smpt_init()
368 smpt_info->map_count = 0; in mic_smpt_init()
369 smpt_info->unmap_count = 0; in mic_smpt_init()
372 kfree(smpt_info); in mic_smpt_init()
385 struct mic_smpt_info *smpt_info = mdev->smpt; in mic_smpt_uninit() local
390 mdev->id, smpt_info->ref_count, in mic_smpt_uninit()
391 smpt_info->map_count, smpt_info->unmap_count); in mic_smpt_uninit()
393 for (i = 0; i < smpt_info->info.num_reg; i++) { in mic_smpt_uninit()
396 i, smpt_info->entry[i].dma_addr, in mic_smpt_uninit()
397 smpt_info->entry[i].ref_count); in mic_smpt_uninit()
398 if (smpt_info->entry[i].ref_count) in mic_smpt_uninit()
402 kfree(smpt_info->entry); in mic_smpt_uninit()
403 kfree(smpt_info); in mic_smpt_uninit()