summaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
authorMichael Brown2007-09-18 07:26:31 +0200
committerMichael Brown2007-09-18 07:26:31 +0200
commit95498fa038e6a3bfc88a1efeec2eb64fe0de6332 (patch)
treef83d420ac80c23aa3a29159c95d5dc304b34ceef /src/drivers
parentSeparated out to a clean new drivers/infiniband directory. (diff)
downloadipxe-95498fa038e6a3bfc88a1efeec2eb64fe0de6332.tar.gz
ipxe-95498fa038e6a3bfc88a1efeec2eb64fe0de6332.tar.xz
ipxe-95498fa038e6a3bfc88a1efeec2eb64fe0de6332.zip
Remove the last remaining visible hack.
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/infiniband/arbel.c19
-rw-r--r--src/drivers/infiniband/arbel.h2
2 files changed, 11 insertions, 10 deletions
diff --git a/src/drivers/infiniband/arbel.c b/src/drivers/infiniband/arbel.c
index 51246d7e..9ba81ca7 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 ) {
diff --git a/src/drivers/infiniband/arbel.h b/src/drivers/infiniband/arbel.h
index 4d2c740f..4d7e4fc6 100644
--- a/src/drivers/infiniband/arbel.h
+++ b/src/drivers/infiniband/arbel.h
@@ -79,6 +79,8 @@
#define ARBEL_INVALID_LKEY 0x00000100UL
+#define ARBEL_PAGE_SIZE 4096
+
#define ARBEL_DB_POST_SND_OFFSET 0x10
/*