[openib-general] [PATCH] opensm: observe PartitionEnforcementCap ofzero

Hal Rosenstock halr at voltaire.com
Thu Mar 30 03:18:12 PST 2006


On Thu, 2006-03-30 at 03:33, Eitan Zahavi wrote:
> I would rather have the PartitionManager inspect the IB attributes
> defining the port P_Key table length then change the pre-allocation of
> PKey entry. Even if this does not break anything.

Can you state the reason for this preference ?

> So I propose the partition manager inspect:
> NodeInfo.PartitionCap - for Switch Port 0, HCA and Router)

Endports need a partition table of at least 1 entry so this is not an
issue for these, right ?

> SwitchInfo.PartitionEnforcementCap - for Switch Extarnal ports

These are the only ones which have the issue.

Do you have a patch for this approach ?

-- Hal

> Eitan Zahavi
> Design Technology Director
> Mellanox Technologies LTD
> Tel:+972-4-9097208
> Fax:+972-4-9593245
> P.O. Box 586 Yokneam 20692 ISRAEL
> 
> 
> > -----Original Message-----
> > From: openib-general-bounces at openib.org [mailto:openib-general-
> > bounces at openib.org] On Behalf Of Rolf Manderscheid
> > Sent: Thursday, March 30, 2006 1:55 AM
> > To: halr at voltaire.com
> > Cc: openib-general at openib.org
> > Subject: [openib-general] [PATCH] opensm: observe
> PartitionEnforcementCap ofzero
> > 
> > Hi Hal,
> > 
> > opensm attempts to set pkey table entries on external switch ports
> > even if the switch declares a PartitionEnforcementCap of zero.  The
> > consequence is ERR 4108.
> > 
> > The decision to set the block is based on the size of the
> > pkeys->blocks vector, which is initialized to one.  There is a
> > comment that claims there must be a pre-allocated block in said vector
> > "for the sake of empty table test", but I can't see why it's
> > necessary.  Is this comment wrong or am I missing something?
> > 
> > The vector size grows, if necessary, when processing the response from
> > a SubnGet(PKeyTable).  The query happens during a sweep after
> > obtaining the portinfo, and the query code is careful to observe the
> > partition cap.  All this means that the vector size can still be used
> > to decide whether to do the set provided the vector size starts out at
> > zero.  So, the patch below just initializes the vector to size zero
> > and removes the code that inserts the pre-allocated block.
> > 
> >     Rolf
> > 
> > Index: osm_pkey.c
> > ===================================================================
> > --- osm_pkey.c	(revision 5971)
> > +++ osm_pkey.c	(working copy)
> > @@ -91,21 +91,7 @@
> >  int osm_pkey_tbl_init(
> >    IN osm_pkey_tbl_t *p_pkey_tbl)
> >  {
> > -  ib_pkey_table_t *p_pkey_block;
> > -  /*
> > -     we always need one block to be pre-allocated for the sake of
> > -     empty table test
> > -  */
> > -  cl_ptr_vector_init( &p_pkey_tbl->blocks, 1, 1);
> > -  p_pkey_block = (ib_pkey_table_t
> *)cl_zalloc(sizeof(ib_pkey_table_t));
> > -  if (! p_pkey_block)
> > -  {
> > -    return(IB_ERROR);
> > -  }
> > -
> > -  cl_ptr_vector_set(&p_pkey_tbl->blocks, 0, p_pkey_block);
> > -
> > -  /* deal with the map */
> > +  cl_ptr_vector_init( &p_pkey_tbl->blocks, 0, 1);
> >    cl_map_init( &p_pkey_tbl->keys, 1 );
> >    return(IB_SUCCESS);
> >  }
> > _______________________________________________
> > openib-general mailing list
> > openib-general at openib.org
> > http://openib.org/mailman/listinfo/openib-general
> > 
> > To unsubscribe, please visit
> http://openib.org/mailman/listinfo/openib-general




More information about the general mailing list