[openib-general] RE: [PATCH] Opensm - lid assignment issues

Hal Rosenstock halr at voltaire.com
Thu Nov 17 09:35:18 PST 2005


Hi Yael,

On Thu, 2005-11-17 at 02:00, Yael Kalka wrote:
> Hello Hal,
> I see that you haven't applied this patch yet.
> Just making sure it is not lost between the mails...

It is not lost. I was at SC05 and ran it there. I will commit it soon
now that I am back and just now digging out from 8 days of being away.

-- Hal

> Thanks,
> Yael
> 
> -----Original Message-----
> From: Yael Kalka [mailto:yael at mellanox.co.il]
> Sent: Sunday, November 13, 2005 12:18 PM
> To: halr at voltaire.com
> Cc: openib-general at openib.org; eitan at mellanox.co.il; yael at mellanox.co.il
> Subject: [PATCH] Opensm - lid assignment issues
> 
> 
> Hi Hal,
> 
> During some windows tests we've discovered that there is still another
> problem in the lid_mgr. The problem happend when 2  HCAs had the same
> lid - opensm entered an infinite loop.
> The following patch fixes this.
> 
> Thanks,
> Yael
> 
> Signed-off-by:  Yael Kalka <yael at mellanox.co.il>
> 
> Index: opensm/osm_lid_mgr.c
> ===================================================================
> --- opensm/osm_lid_mgr.c	(revision 4032)
> +++ opensm/osm_lid_mgr.c	(working copy)
> @@ -550,6 +550,9 @@ __osm_lid_mgr_init_sweep(
>        {
>                /* This port will use its local lid, and consume the
> entire required lid range.
>                   Thus we can skip that range. */
> +              /* If the disc_max_lid is greater then lid - we can skip
> right to it, 
> +                 since we've done all neccessary checks on the lids in
> between. */
> +              if (disc_max_lid > lid)
>          lid = disc_max_lid;
>        }
>      }
> @@ -593,7 +596,14 @@ __osm_lid_mgr_init_sweep(
>    {
>      p_range =
>        (osm_lid_mgr_range_t *)cl_malloc(sizeof(osm_lid_mgr_range_t));
> -    p_range->min_lid = 1;
> +    /* 
> +       The p_range can be NULL in one of 2 cases:
> +       1. If max_defined_lid == 0. In this case, we want the entire
> range.
> +       2. If all lids discovered in the loop where mapped. In this case
> +          no free range exists, and we want to define it after the last
> 
> +          mapped lid.
> +    */
> +    p_range->min_lid = lid;
>    }
>    p_range->max_lid = p_mgr->p_subn->max_unicast_lid_ho - 1;
>    cl_qlist_insert_tail( &p_mgr->free_ranges, &p_range->item );
> 




More information about the general mailing list