[PATCH rdma-next 02/10] RDMA/core: Enable Relaxed Ordering in __ib_alloc_pd()
Adit Ranadive
aditr at vmware.com
Mon Apr 5 21:40:43 BST 2021
On 4/5/21 11:01 AM, Tom Talpey wrote:
> On 4/5/2021 1:23 AM, Leon Romanovsky wrote:
>> From: Avihai Horon <avihaih at nvidia.com>
>>
>> Enable Relaxed Ordering in __ib_alloc_pd() allocation of the
>> local_dma_lkey.
>>
>> This will take effect only for devices that don't pre-allocate the lkey
>> but allocate it per PD allocation.
>>
>> Signed-off-by: Avihai Horon <avihaih at nvidia.com>
>> Reviewed-by: Michael Guralnik <michaelgur at nvidia.com>
>> Signed-off-by: Leon Romanovsky <leonro at nvidia.com>
>> ---
>> drivers/infiniband/core/verbs.c | 3 ++-
>> drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c | 1 +
>> 2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
>> index a1782f8a6ca0..9b719f7d6fd5 100644
>> --- a/drivers/infiniband/core/verbs.c
>> +++ b/drivers/infiniband/core/verbs.c
>> @@ -287,7 +287,8 @@ struct ib_pd *__ib_alloc_pd(struct ib_device *device, unsigned int flags,
>> if (device->attrs.device_cap_flags & IB_DEVICE_LOCAL_DMA_LKEY)
>> pd->local_dma_lkey = device->local_dma_lkey;
>> else
>> - mr_access_flags |= IB_ACCESS_LOCAL_WRITE;
>> + mr_access_flags |=
>> + IB_ACCESS_LOCAL_WRITE | IB_ACCESS_RELAXED_ORDERING;
>
> So, do local_dma_lkey's get relaxed ordering unconditionally?
>
>> if (flags & IB_PD_UNSAFE_GLOBAL_RKEY) {
>> pr_warn("%s: enabling unsafe global rkey\n", caller);
>> diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c
>> index b3fa783698a0..d74827694f92 100644
>> --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c
>> +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c
>> @@ -66,6 +66,7 @@ struct ib_mr *pvrdma_get_dma_mr(struct ib_pd *pd, int acc)
>> int ret;
>> /* Support only LOCAL_WRITE flag for DMA MRs */
>> + acc &= ~IB_ACCESS_RELAXED_ORDERING;
>> if (acc & ~IB_ACCESS_LOCAL_WRITE) {
>> dev_warn(&dev->pdev->dev,
>> "unsupported dma mr access flags %#x\n", acc);
>
> Why does the pvrdma driver require relaxed ordering to be off?
PVRDMA doesn't support any other flags other than LOCAL_WRITE for
DMA MRs so the MR creation will fail if any new unconditionally added
flag isn't cleared.
More information about the Linux-nvme
mailing list