]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[arbel] Map all event types to our event queue
authorMichael Brown <mcb30@ipxe.org>
Thu, 16 Sep 2010 21:06:20 +0000 (22:06 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 17 Sep 2010 04:38:13 +0000 (05:38 +0100)
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 <mcb30@ipxe.org>
src/drivers/infiniband/arbel.c
src/drivers/infiniband/arbel.h

index 78b2b4324bd785144c68d6758f4525d91aa4adf1..b142d8982cc66e7390979e6523cc83f56778f26e 100644 (file)
@@ -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 ) {
index f74869156b7682bb18bfa57e0c9857659f5e5c49..b4ad3db6ac61322b1ad7c32233fa86e9c5a771e1 100644 (file)
@@ -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 {