34 #include <linux/slab.h>
74 mr->
mr.access_flags = acc;
134 int num_phys_buf,
int acc,
u64 *iova_start)
140 mr = alloc_mr(num_phys_buf, &to_idev(pd->
device)->lk_table);
147 mr->
mr.user_base = *iova_start;
148 mr->
mr.iova = *iova_start;
151 mr->
mr.access_flags = acc;
152 mr->
mr.max_segs = num_phys_buf;
157 for (i = 0; i < num_phys_buf; i++) {
158 mr->
mr.map[
m]->segs[
n].vaddr = (
void *) buffer_list[i].
addr;
159 mr->
mr.map[
m]->segs[
n].length = buffer_list[
i].
size;
160 mr->
mr.length += buffer_list[
i].
size;
186 u64 virt_addr,
int mr_access_flags,
203 return (
void *) umem;
209 mr = alloc_mr(n, &to_idev(pd->
device)->lk_table);
218 mr->
mr.iova = virt_addr;
221 mr->
mr.access_flags = mr_access_flags;
228 for (i = 0; i < chunk->
nents; i++) {
321 fmr->
mr.user_base = 0;
325 fmr->
mr.access_flags = mr_access_flags;
362 if (list_len > fmr->
mr.max_segs) {
366 rkt = &to_idev(ibfmr->
device)->lk_table;
368 fmr->
mr.user_base = iova;
371 fmr->
mr.length = list_len *
ps;
376 fmr->
mr.map[
m]->segs[
n].vaddr = (
void *) page_list[i];
377 fmr->
mr.map[
m]->segs[
n].length =
ps;
383 spin_unlock_irqrestore(&rkt->
lock, flags);
403 rkt = &to_idev(fmr->
ibfmr.device)->lk_table;
405 fmr->
mr.user_base = 0;
408 spin_unlock_irqrestore(&rkt->
lock, flags);