/* * For Memory Regions. This stuff should probably be moved into rdmavt/mr.h once * drivers no longer need access to the MR directly.
*/ #include <linux/percpu-refcount.h>
/* * A segment is a linear region of low physical memory. * Used by the verbs layer.
*/ struct rvt_seg { void *vaddr;
size_t length;
};
/* The number of rvt_segs that fit in a page. */ #define RVT_SEGSZ (PAGE_SIZE / sizeof(struct rvt_seg))
struct rvt_mregion { struct ib_pd *pd; /* shares refcnt of ibmr.pd */
u64 user_base; /* User's address for this region */
u64 iova; /* IB start address of this region */
size_t length;
u32 lkey;
u32 offset; /* offset (bytes) to start of region */ int access_flags;
u32 max_segs; /* number of rvt_segs in all the arrays */
u32 mapsz; /* size of the map array */
atomic_t lkey_invalid; /* true if current lkey is invalid */
u8 page_shift; /* 0 - non unform/non powerof2 sizes */
u8 lkey_published; /* in global table */ struct percpu_ref refcount; struct completion comp; /* complete when refcount goes to zero */ struct rvt_segarray *map[]; /* the segments */
};
#define RVT_MAX_LKEY_TABLE_BITS 23
struct rvt_lkey_table { /* read mostly fields */
u32 max; /* size of the table */
u32 shift; /* lkey/rkey shift */ struct rvt_mregion __rcu **table; /* writeable fields */ /* protect changes in this struct */
spinlock_t lock ____cacheline_aligned_in_smp;
u32 next; /* next unused index (speeds search) */
u32 gen; /* generation count */
};
/* * These keep track of the copy progress within a memory region. * Used by the verbs layer.
*/ struct rvt_sge { struct rvt_mregion *mr; void *vaddr; /* kernel virtual address of segment */
u32 sge_length; /* length of the SGE */
u32 length; /* remaining length of the segment */
u16 m; /* current index: mr->map[m] */
u16 n; /* current index: mr->map[m]->segs[n] */
};
struct rvt_sge_state { struct rvt_sge *sg_list; /* next SGE to be used if any */ struct rvt_sge sge; /* progress state for the current SGE */
u32 total_len;
u8 num_sge;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.