diff options
Diffstat (limited to 'src/drivers/infiniband/arbel.c')
| -rw-r--r-- | src/drivers/infiniband/arbel.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/drivers/infiniband/arbel.c b/src/drivers/infiniband/arbel.c index 51246d7e7..9ba81ca77 100644 --- a/src/drivers/infiniband/arbel.c +++ b/src/drivers/infiniband/arbel.c @@ -1692,6 +1692,7 @@ static int arbel_alloc_icm ( struct arbel *arbel, struct arbelprm_scalar_parameter icm_aux_size; struct arbelprm_virtual_physical_mapping map_icm_aux; struct arbelprm_virtual_physical_mapping map_icm; + union arbelprm_doorbell_record *db_rec; size_t icm_offset = 0; unsigned int log_num_qps, log_num_srqs, log_num_ees, log_num_cqs; unsigned int log_num_mtts, log_num_mpts, log_num_rdbs, log_num_eqs; @@ -1848,6 +1849,14 @@ static int arbel_alloc_icm ( struct arbel *arbel, goto err_map_icm; } + /* Initialise UAR context */ + arbel->db_rec = phys_to_virt ( user_to_phys ( arbel->icm, 0 ) + + ( arbel->limits.reserved_uars * + ARBEL_PAGE_SIZE ) ); + memset ( arbel->db_rec, 0, ARBEL_PAGE_SIZE ); + db_rec = &arbel->db_rec[ARBEL_GROUP_SEPARATOR_DOORBELL]; + MLX_FILL_1 ( &db_rec->qp, 1, res, ARBEL_UAR_RES_GROUP_SEP ); + return 0; arbel_cmd_unmap_icm ( arbel, ( arbel->icm_len / 4096 ) ); @@ -2026,16 +2035,6 @@ static int arbel_probe ( struct pci_device *pci, if ( ( rc = arbel_alloc_icm ( arbel, &init_hca ) ) != 0 ) goto err_alloc_icm; - - unsigned long uar_offset = ( arbel->limits.reserved_uars * 4096 ); - arbel->db_rec = phys_to_virt ( user_to_phys ( arbel->icm, - uar_offset ) ); - memset ( arbel->db_rec, 0, 4096 ); - union arbelprm_doorbell_record *db_rec; - db_rec = &arbel->db_rec[ARBEL_GROUP_SEPARATOR_DOORBELL]; - MLX_FILL_1 ( &db_rec->qp, 1, res, ARBEL_UAR_RES_GROUP_SEP ); - - /* Initialise HCA */ MLX_FILL_1 ( &init_hca, 74, uar_parameters.log_max_uars, 1 ); if ( ( rc = arbel_cmd_init_hca ( arbel, &init_hca ) ) != 0 ) { |
