|
15 | 15 | * Copyright (c) 2018-2019 Intel, Inc. All rights reserved. |
16 | 16 | * |
17 | 17 | * Copyright (c) 2018-2021 Amazon.com, Inc. or its affiliates. All Rights reserved. |
18 | | - * Copyright (c) 2020 Triad National Security, LLC. All rights |
| 18 | + * Copyright (c) 2020-2022 Triad National Security, LLC. All rights |
19 | 19 | * reserved. |
20 | 20 | * $COPYRIGHT$ |
21 | 21 | * |
|
44 | 44 | #define MCA_BTL_OFI_ONE_SIDED_REQUIRED_CAPS (FI_RMA | FI_ATOMIC) |
45 | 45 | #define MCA_BTL_OFI_TWO_SIDED_REQUIRED_CAPS (FI_MSG) |
46 | 46 |
|
47 | | -#define MCA_BTL_OFI_REQUESTED_MR_MODE (FI_MR_ALLOCATED | FI_MR_PROV_KEY | FI_MR_VIRT_ADDR) |
| 47 | +#define MCA_BTL_OFI_REQUESTED_MR_MODE (FI_MR_ALLOCATED | FI_MR_PROV_KEY | FI_MR_VIRT_ADDR | FI_MR_ENDPOINT) |
48 | 48 |
|
49 | 49 | static char *ofi_progress_mode; |
50 | 50 | static bool disable_sep; |
@@ -106,7 +106,7 @@ static int validate_info(struct fi_info *info, uint64_t required_caps, char **in |
106 | 106 | mr_mode = info->domain_attr->mr_mode; |
107 | 107 |
|
108 | 108 | if (!(mr_mode == FI_MR_BASIC || mr_mode == FI_MR_SCALABLE |
109 | | - || (mr_mode & ~(FI_MR_VIRT_ADDR | FI_MR_ALLOCATED | FI_MR_PROV_KEY)) == 0)) { |
| 109 | + || (mr_mode & ~(FI_MR_VIRT_ADDR | FI_MR_ALLOCATED | FI_MR_PROV_KEY | FI_MR_ENDPOINT)) == 0)) { |
110 | 110 | BTL_VERBOSE(("unsupported MR mode")); |
111 | 111 | return OPAL_ERROR; |
112 | 112 | } |
@@ -562,12 +562,17 @@ static int mca_btl_ofi_init_device(struct fi_info *info) |
562 | 562 | module->linux_device_name = linux_device_name; |
563 | 563 | module->outstanding_rdma = 0; |
564 | 564 | module->use_virt_addr = false; |
| 565 | + module->use_fi_mr_bind = false; |
565 | 566 |
|
566 | 567 | if (ofi_info->domain_attr->mr_mode == FI_MR_BASIC |
567 | 568 | || ofi_info->domain_attr->mr_mode & FI_MR_VIRT_ADDR) { |
568 | 569 | module->use_virt_addr = true; |
569 | 570 | } |
570 | 571 |
|
| 572 | + if (ofi_info->domain_attr->mr_mode & FI_MR_ENDPOINT) { |
| 573 | + module->use_fi_mr_bind = true; |
| 574 | + } |
| 575 | + |
571 | 576 | /* create endpoint list */ |
572 | 577 | OBJ_CONSTRUCT(&module->endpoints, opal_list_t); |
573 | 578 | OBJ_CONSTRUCT(&module->module_lock, opal_mutex_t); |
|
0 commit comments