@@ -151,6 +151,8 @@ int mca_spml_ikrit_put_simple(void* dst_addr,
151151
152152static void mca_spml_ikrit_cache_mkeys (sshmem_mkey_t * , uint32_t seg , int remote_pe , int tr_id );
153153
154+ static mxm_mem_key_t * mca_spml_ikrit_get_mkey_slow (int pe , void * va , int ptl_id , void * * rva );
155+
154156mca_spml_ikrit_t mca_spml_ikrit = {
155157 {
156158 /* Init mca_spml_base_module_t */
@@ -175,7 +177,8 @@ mca_spml_ikrit_t mca_spml_ikrit = {
175177 mca_spml_base_memuse_hook ,
176178
177179 (void * )& mca_spml_ikrit
178- }
180+ },
181+ mca_spml_ikrit_get_mkey_slow
179182};
180183
181184static void mca_spml_ikrit_cache_mkeys (sshmem_mkey_t * mkey , uint32_t seg , int dst_pe , int tr_id )
@@ -196,6 +199,7 @@ static void mca_spml_ikrit_cache_mkeys(sshmem_mkey_t *mkey, uint32_t seg, int ds
196199 }
197200}
198201
202+ static
199203mxm_mem_key_t * mca_spml_ikrit_get_mkey_slow (int pe , void * va , int ptl_id , void * * rva )
200204{
201205 sshmem_mkey_t * mkey ;
@@ -577,7 +581,7 @@ static inline int mca_spml_ikrit_get_helper(mxm_send_req_t *sreq,
577581 void * rva ;
578582 mxm_mem_key_t * mkey ;
579583
580- mkey = mca_spml_ikrit_get_mkey (src , src_addr , MXM_PTL_RDMA , & rva );
584+ mkey = mca_spml_ikrit_get_mkey (src , src_addr , MXM_PTL_RDMA , & rva , & mca_spml_ikrit );
581585
582586 SPML_VERBOSE_FASTPATH (100 ,
583587 "get: pe:%d ptl=%d src=%p -> dst: %p sz=%d. src_rva=%p" ,
@@ -612,7 +616,7 @@ static inline int mca_spml_ikrit_get_shm(void *src_addr,
612616 if (ptl_id != MXM_PTL_SHM )
613617 return OSHMEM_ERROR ;
614618
615- if (NULL != mca_spml_ikrit_get_mkey (src , src_addr , MXM_PTL_SHM , & rva ))
619+ if (NULL != mca_spml_ikrit_get_mkey (src , src_addr , MXM_PTL_SHM , & rva , & mca_spml_ikrit ))
616620 return OSHMEM_ERROR ;
617621
618622 SPML_VERBOSE_FASTPATH (100 ,
@@ -797,7 +801,7 @@ static inline int mca_spml_ikrit_put_internal(void* dst_addr,
797801 }
798802
799803 ptl_id = get_ptl_id (dst );
800- mkey = mca_spml_ikrit_get_mkey (dst , dst_addr , ptl_id , & rva );
804+ mkey = mca_spml_ikrit_get_mkey (dst , dst_addr , ptl_id , & rva , & mca_spml_ikrit );
801805
802806 if (OPAL_UNLIKELY (NULL == mkey )) {
803807 memcpy ((void * ) (unsigned long ) rva , src_addr , size );
@@ -884,7 +888,7 @@ int mca_spml_ikrit_put_simple(void* dst_addr,
884888 static int count ;
885889
886890 ptl_id = get_ptl_id (dst );
887- mkey = mca_spml_ikrit_get_mkey (dst , dst_addr , ptl_id , & rva );
891+ mkey = mca_spml_ikrit_get_mkey (dst , dst_addr , ptl_id , & rva , & mca_spml_ikrit );
888892
889893 SPML_VERBOSE_FASTPATH (100 , "put: pe:%d ptl=%d dst=%p <- src: %p sz=%d. dst_rva=%p, %s" ,
890894 dst , ptl_id , dst_addr , src_addr , (int )size , (void * )rva );
0 commit comments