lkml.org 
[lkml]   [2022]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRE: [Patch v4 12/12] RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter
Date
> From: Ajay Sharma <sharmaajay@microsoft.com>
> Sent: Tuesday, July 12, 2022 9:33 PM
> > ...
> > + switch (mr_params->mr_type) {
> > + case GDMA_MR_TYPE_GVA:
> > + req.mr_type = GDMA_MR_TYPE_GVA;
> > + req.gva.dma_region_handle = mr_params->gva.dma_region_handle;
> > + req.gva.virtual_address = mr_params->gva.virtual_address;
> > + req.gva.access_flags = mr_params->gva.access_flags;
> > + break;
> > +
> > + case GDMA_MR_TYPE_GPA:
> > + req.mr_type = GDMA_MR_TYPE_GPA;
> > + req.gpa.access_flags = mr_params->gpa.access_flags;
> > + break;
> > +
> > + case GDMA_MR_TYPE_FMR:
> > + req.mr_type = GDMA_MR_TYPE_FMR;
> > + req.fmr.page_size = mr_params->fmr.page_size;
> > + req.fmr.reserved_pte_count = mr_params->fmr.reserved_pte_count;
> > + break;
> > +
> > + default:
> > + ibdev_dbg(&dev->ib_dev,
> > + "invalid param (GDMA_MR_TYPE) passed, type %d\n",
> > + req.mr_type);
>
> Here req.mr_type is always 0.
> We should remove the 3 above lines of "req.mr_type = ...", and add a line
> "req.mr_type = mr_params->mr_type;" before the "switch" line..
>
> No, That's incorrect. The mr_type is being explicitly set here to control what
> regions get exposed to the user and kernel. GPA and FMR are never exposed to
> user. So we cannot assign req.mr_type = mr_params->mr_type.

I'm not following you. I meant the below change, which should have no
functional change, right? In the "default:" branch , we just "goto error;", so
there is no functional change either.

--- drivers/infiniband/hw/mana/main.c.orig
+++ drivers/infiniband/hw/mana/main.c
@@ -394,21 +394,19 @@
sizeof(resp));
req.pd_handle = mr_params->pd_handle;

+ req.mr_type = mr_params->mr_type;
switch (mr_params->mr_type) {
case GDMA_MR_TYPE_GVA:
- req.mr_type = GDMA_MR_TYPE_GVA;
req.gva.dma_region_handle = mr_params->gva.dma_region_handle;
req.gva.virtual_address = mr_params->gva.virtual_address;
req.gva.access_flags = mr_params->gva.access_flags;
break;

case GDMA_MR_TYPE_GPA:
- req.mr_type = GDMA_MR_TYPE_GPA;
req.gpa.access_flags = mr_params->gpa.access_flags;
break;

case GDMA_MR_TYPE_FMR:
- req.mr_type = GDMA_MR_TYPE_FMR;
req.fmr.page_size = mr_params->fmr.page_size;
req.fmr.reserved_pte_count = mr_params->fmr.reserved_pte_count;
break;
\
 
 \ /
  Last update: 2022-07-13 09:37    [W:0.158 / U:0.276 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site