1
1

change order of ops on register

This commit was SVN r7525.
Этот коммит содержится в:
Galen Shipman 2005-09-27 21:43:41 +00:00
родитель 285ded5655
Коммит 0fc17cedee
3 изменённых файлов: 20 добавлений и 13 удалений

Просмотреть файл

@ -86,17 +86,19 @@ int mca_mpool_gm_register(
if(NULL == reg) {
return OMPI_ERR_OUT_OF_RESOURCE;
}
if((rc = gm_register_memory(gm_mpool->port, addr, size)) != GM_SUCCESS) {
opal_output(0, "[%s:%d] error(%d) registering gm memory\n", __FILE__, __LINE__, rc);
OBJ_RELEASE(reg);
return OMPI_ERR_OUT_OF_RESOURCE;
}
reg->mpool = mpool;
reg->base = down_align_addr(addr, mca_mpool_base_page_size_log);
reg->flags = flags;
reg->bound = up_align_addr(reg->base + size -1
, mca_mpool_base_page_size_log);
if((rc = gm_register_memory(gm_mpool->port, reg->base, reg->bound - reg->base + 1)) != GM_SUCCESS) {
opal_output(0, "[%s:%d] error(%d) registering gm memory\n", __FILE__, __LINE__, rc);
OBJ_RELEASE(reg);
return OMPI_ERR_OUT_OF_RESOURCE;
}
OPAL_THREAD_ADD32(&reg->ref_count,1);
if(flags & (MCA_MPOOL_FLAGS_CACHE | MCA_MPOOL_FLAGS_PERSIST)) {

Просмотреть файл

@ -107,9 +107,16 @@ int mca_mpool_mvapi_register(
mr_in.l_key = 0;
mr_in.r_key = 0;
mr_in.pd_hndl = mpool_module->hca_pd.pd_tag;
mr_in.size = size;
mr_in.start = (VAPI_virt_addr_t) (MT_virt_addr_t) addr;
vapi_reg->base_reg.base = down_align_addr(addr, mca_mpool_base_page_size_log);
vapi_reg->base_reg.bound = up_align_addr((void*) ((unsigned long) addr + size - 1)
, mca_mpool_base_page_size_log);
mr_in.size = vapi_reg->base_reg.bound - vapi_reg->base_reg.base + 1;
mr_in.start = (VAPI_virt_addr_t) (MT_virt_addr_t) vapi_reg->base_reg.base;
mr_in.type = VAPI_MR;
/* printf("registering addr %p size %d base %p bound %p\n", */
/* addr, size, vapi_reg->base_reg.base, vapi_reg->base_reg.bound); */
ret = VAPI_register_mr(
mpool_module->hca_pd.hca,
@ -126,9 +133,6 @@ int mca_mpool_mvapi_register(
vapi_reg->l_key = mr_out.l_key;
vapi_reg->r_key = mr_out.r_key;
vapi_reg->base_reg.base = down_align_addr(addr, mca_mpool_base_page_size_log);
vapi_reg->base_reg.bound = up_align_addr((void*) ((unsigned long) addr + size - 1)
, mca_mpool_base_page_size_log);
assert(vapi_reg->base_reg.bound - vapi_reg->base_reg.base >= 0);

Просмотреть файл

@ -92,8 +92,8 @@ size_t mca_pml_ob1_rdma_btls(
/* otherwise if leave_pinned re-register */
} else if(mca_pml_ob1.leave_pinned) {
unsigned char* new_base = reg->base;
size_t new_len = (base - reg->base) + size;
size_t new_len = (base - reg->base) + size;
/* printf("re-reg 2: base %p size %d new_base %p new_len %d\n", base, size, new_base, new_len); */
assert(new_len >= size);
btl_mpool->mpool_deregister(btl_mpool, reg);
btl_mpool->mpool_register(btl_mpool,
@ -257,7 +257,8 @@ mca_mpool_base_registration_t* mca_pml_ob1_rdma_registration(
} else {
unsigned char* new_base = largest->base;
size_t new_len = (base - largest->base) + size;
/* printf("re-reg 2: base %p size %d new_base %p new_len %d\n", base, size, new_base, new_len); */
btl_mpool->mpool_deregister(btl_mpool, largest);
assert(new_len >= size);
btl_mpool->mpool_register(btl_mpool,