mthca: allow setting "dmabarrier" on user-allocated memory
PATCH 5/5 mthca: allow setting "dmabarrier" on user-allocated memory
Allow setting a "dmabarrier" when the mthca driver registers user- allocated memory.
Signed-off-by Arthur Kepner <[email protected]>
---
mthca_provider.c | 7 ++++++- mthca_user.h | 10 +++++++++- 2 files changed, 15 insertions(+), 2 deletions(-)
drivers/infiniband/hw/mthca/mthca_provider.c +6 -1
@@ -1017,17 +1017,22 @@ static struct ib_mr *mthca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,struct mthca_dev *dev =to_mdev (pd->device);struct ib_umem_chunk *chunk;struct mthca_mr *mr; +struct mthca_reg_mr ucmd;u64 *pages;int shift, n, len;int i, j, k;int err =0 ;int write_mtt_size; +if (ib_copy_from_udata (&ucmd, udata,sizeof ucmd)) +return ERR_PTR (-EFAULT ); + mr =kmalloc (sizeof *mr,GFP_KERNEL );if (!mr)return ERR_PTR (-ENOMEM ); - mr->umem =ib_umem_get (pd->uobject->context, start, length, acc,0 ); + mr->umem =ib_umem_get (pd->uobject->context, start, length, acc, + ucmd.mr_attrs &MTHCA_MR_DMAFLUSH );if (IS_ERR (mr->umem)) { err =PTR_ERR (mr->umem); goto err;
drivers/infiniband/hw/mthca/mthca_user.h +9 -1
@@ -41,7 +41,7 @@* Increment this value if any changes that break userspace ABI * compatibility are made. */ -#define MTHCA_UVERBS_ABI_VERSION 1 +#define MTHCA_UVERBS_ABI_VERSION 2/* * Make sure that all structs defined in this file remain laid out so
@@ -61,6 +61,14 @@ struct mthca_alloc_pd_resp {__u32 reserved; }; +struct mthca_reg_mr { +__u32 mr_attrs; +#define MTHCA_MR_DMAFLUSH 0x1/* flush in-flight DMA on a write to +* memory region */ +__u32 reserved; +}; + +struct mthca_create_cq {__u32 lkey;__u32 pdn;
drivers/infiniband/hw/mthca/mthca_user.h struct mthca_alloc_pd_resp { · line 69
Quoted 6 lines · On Tue, Oct 02, 2007 at 07:50:07PM -0700, [email protected] wrote:
drivers/infiniband/hw/mthca/mthca_user.h +6
-0+struct mthca_reg_mr { +__u32 mr_attrs; +#define MTHCA_MR_DMAFLUSH 0x1/* flush in-flight DMA on a write to +* memory region */ +__u32 reserved; +};
Seems like a very odd place to #define something new..
Signature · 3 lines
Heikki Orsila Barbie's law: [email protected] "Math is hard, let's go shopping!" http://www.iki.fi/shd
Quoted 10 lines · Heikki Orsila
drivers/infiniband/hw/mthca/mthca_user.h struct mthca_alloc_pd_resp { · line 69
Quoted 6 lines · On Tue, Oct 02, 2007 at 07:50:07PM -0700, [email protected] wrote:
drivers/infiniband/hw/mthca/mthca_user.h +6
-0+struct mthca_reg_mr { +__u32 mr_attrs; +#define MTHCA_MR_DMAFLUSH 0x1/* flush in-flight DMA on a write to +* memory region */ +__u32 reserved; +};Seems like a very odd place to #define something new..
Lots of drivers do that - #define flags or whatever near the variable to which they apply. Didn't see any examples in the mthca driver though, so maybe it's setting a precedent there. If the maintainer objects, I'll move it.
Signature · 1 line
Arthur