[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