>  include/rdma/rdma_vt.h |   53
> ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 53 insertions(+), 0 deletions(-)
> 
> diff --git a/include/rdma/rdma_vt.h b/include/rdma/rdma_vt.h
> index 5112dd7..39a0737 100644
> --- a/include/rdma/rdma_vt.h
> +++ b/include/rdma/rdma_vt.h
> @@ -59,6 +59,56 @@
>  #include "ib_verbs.h"
> 
>  /*
> + * For Memory Regions. This stuff should probably be moved into
> rdmavt/mr.h once
> + * drivers no longer need access to the MR directly.
> + */
> +
> +/*
> + * 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_segarray {
> +     struct rvt_seg segs[RVT_SEGSZ];
> +};
> +
> +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 */
> +     u8  page_shift;         /* 0 - non unform/non powerof2 sizes */
> +     u8  lkey_published;     /* in global table */

Without looking ahead in the patch series, won't the access_flags indicate this?

> +     struct completion comp; /* complete when refcount goes to zero */
> +     atomic_t refcount;
> +     struct rvt_segarray *map[0];    /* the segments */
> +};
> +
> +#define RVT_MAX_LKEY_TABLE_BITS 23
> +
> +struct rvt_lkey_table {
> +     spinlock_t lock; /* protect changes in this struct */
> +     u32 next;               /* next unused index (speeds search) */
> +     u32 gen;                /* generation count */
> +     u32 max;                /* size of the table */
> +     struct rvt_mregion __rcu **table;
> +};
> +
> +/* End Memmory Region */
> +
> +/*
>   * Things that are driver specific, module parameters in hfi1 and qib
>   */
>  struct rvt_driver_params {
> @@ -125,6 +175,9 @@ struct rvt_dev_info {
>       /* Driver specific properties */
>       struct rvt_driver_params dparms;
> 
> +     struct rvt_mregion __rcu *dma_mr;
> +     struct rvt_lkey_table lk_table;

Go crazy here and add the 'ey' into the field name.

Reply via email to