From 46f2580049d85264dee3a1f36dd1eaa05d5d1973 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 16 Sep 2010 22:06:20 +0100 Subject: [PATCH] [arbel] Map all event types to our event queue Only port state change events are currently mapped to our event queue, since those are the only events we are prepared to handle. This ignores a potentially useful source of diagnostic information in the case of unexpected failures. Fix by mapping all events to the event queue; a build with debugging enabled will therefore at least dump the raw content of the unexpected events. Signed-off-by: Michael Brown --- src/drivers/infiniband/arbel.c | 5 ++--- src/drivers/infiniband/arbel.h | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/drivers/infiniband/arbel.c b/src/drivers/infiniband/arbel.c index 78b2b4324..b142d8982 100644 --- a/src/drivers/infiniband/arbel.c +++ b/src/drivers/infiniband/arbel.c @@ -607,7 +607,7 @@ static int arbel_create_cq ( struct ib_device *ibdev, MLX_FILL_2 ( &cqctx, 3, usr_page, arbel->limits.reserved_uars, log_cq_size, fls ( cq->num_cqes - 1 ) ); - MLX_FILL_1 ( &cqctx, 5, c_eqn, ARBEL_NO_EQ ); + MLX_FILL_1 ( &cqctx, 5, c_eqn, arbel->eq.eqn ); MLX_FILL_1 ( &cqctx, 6, pd, ARBEL_GLOBAL_PD ); MLX_FILL_1 ( &cqctx, 7, l_key, arbel->reserved_lkey ); MLX_FILL_1 ( &cqctx, 12, cqn, cq->cqn ); @@ -1350,8 +1350,7 @@ static int arbel_create_eq ( struct arbel *arbel ) { } /* Map events to this event queue */ - memset ( &mask, 0, sizeof ( mask ) ); - MLX_FILL_1 ( &mask, 1, port_state_change, 1 ); + memset ( &mask, 0xff, sizeof ( mask ) ); if ( ( rc = arbel_cmd_map_eq ( arbel, ( ARBEL_MAP_EQ | arbel_eq->eqn ), &mask ) ) != 0 ) { diff --git a/src/drivers/infiniband/arbel.h b/src/drivers/infiniband/arbel.h index f74869156..b4ad3db6a 100644 --- a/src/drivers/infiniband/arbel.h +++ b/src/drivers/infiniband/arbel.h @@ -119,9 +119,26 @@ struct arbelprm_event_mask_st { pseudo_bit_t reserved0[0x00020]; /* -------------- */ pseudo_bit_t completion[0x00001]; - pseudo_bit_t reserved1[0x0008]; + pseudo_bit_t path_migration_succeeded[0x00001]; + pseudo_bit_t communication_established[0x00001]; + pseudo_bit_t send_queue_drained[0x00001]; + pseudo_bit_t cq_error[0x00001]; + pseudo_bit_t wq_catastrophe[0x00001]; + pseudo_bit_t qpc_catastrophe[0x00001]; + pseudo_bit_t path_migration_failed[0x00001]; + pseudo_bit_t reserved1[0x00001]; pseudo_bit_t port_state_change[0x00001]; - pseudo_bit_t reserved2[0x00016]; + pseudo_bit_t command_done[0x00001]; + pseudo_bit_t reserved2[0x00005]; + pseudo_bit_t wq_invalid_request[0x00001]; + pseudo_bit_t wq_access_violation[0x00001]; + pseudo_bit_t srq_catastrophe[0x00001]; + pseudo_bit_t srq_last_wqe[0x00001]; + pseudo_bit_t srq_rq_limit[0x00001]; + pseudo_bit_t gpio[0x00001]; + pseudo_bit_t clientreregister[0x00001]; + pseudo_bit_t path_migration_armed[0x00001]; + pseudo_bit_t reserved3[0x00008]; } __attribute__ (( packed )); struct arbelprm_eq_set_ci_st {