From e4ed0609831f51122dc5747c95c9428476d12c73 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 16 Sep 2010 22:06:20 +0100 Subject: [PATCH] [hermon] 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/hermon.c | 5 ++--- src/drivers/infiniband/hermon.h | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/drivers/infiniband/hermon.c b/src/drivers/infiniband/hermon.c index 06255c3a..cebfb178 100644 --- a/src/drivers/infiniband/hermon.c +++ b/src/drivers/infiniband/hermon.c @@ -1727,9 +1727,8 @@ static int hermon_create_eq ( struct hermon *hermon ) { goto err_sw2hw_eq; } - /* Map events to this event queue */ - memset ( &mask, 0, sizeof ( mask ) ); - MLX_FILL_1 ( &mask, 1, port_state_change, 1 ); + /* Map all events to this event queue */ + memset ( &mask, 0xff, sizeof ( mask ) ); if ( ( rc = hermon_cmd_map_eq ( hermon, ( HERMON_MAP_EQ | hermon_eq->eqn ), &mask ) ) != 0 ) { diff --git a/src/drivers/infiniband/hermon.h b/src/drivers/infiniband/hermon.h index e29e50b9..e09c56a5 100644 --- a/src/drivers/infiniband/hermon.h +++ b/src/drivers/infiniband/hermon.h @@ -161,9 +161,26 @@ struct hermonprm_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 internal_error[0x00001]; pseudo_bit_t port_state_change[0x00001]; - pseudo_bit_t reserved2[0x00016]; + pseudo_bit_t command_done[0x00001]; + pseudo_bit_t fexch_error[0x00001]; + pseudo_bit_t reserved1[0x00004]; + 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 reserved2[0x00009]; } __attribute__ (( packed )); struct hermonprm_port_state_change_event_st {