[ofa-general] [opensm patch][1/2] fix qos config parsing bugs

Al Chu chu11 at llnl.gov
Thu Oct 30 15:01:18 PDT 2008


Hey Sasha,

I found a bunch of qos config parsing issues, listed below:

1)

If the user sets the qos default fields (i.e. qos_high_limit,
qos_vlarb_high. etc.), but do not have the qos_ca, qos_swe, qos_rtr,
etc. equivalent fields listed (i.e. qos_ca_high_limit,
qos_sw0_vlarb_high), the values set in teh qos default fields are not
loaded into the CAs, switches, etc.  The reason is in qos_build_config()
we load defaults like this:

p = opt->vlarb_high ? opt->vlarb_high : dflt->vlarb_high;

but we always set the fields to something non-NULL.

static void subn_set_default_qos_options(IN osm_qos_options_t * opt)
{
        opt->max_vls = OSM_DEFAULT_QOS_MAX_VLS;
        opt->high_limit = OSM_DEFAULT_QOS_HIGH_LIMIT;
        opt->vlarb_high = OSM_DEFAULT_QOS_VLARB_HIGH;
        opt->vlarb_low = OSM_DEFAULT_QOS_VLARB_LOW;
        opt->sl2vl = OSM_DEFAULT_QOS_SL2VL;
}

2)

In qos_build_config() we load the high_limit like this:

cfg->vl_high_limit = (uint8_t) opt->high_limit;

So there is no way to tell the qos_ca, qos_swe, qos_rtr, etc. high_limit
options to "go back to" the default high_limit.  It just assumes that
whatever is input (or was set by default) is what you should use.

3)

Some fields like qos_vlarb_high are assumed to be correctly set and can
segfault opensm.

The attached patch fixes these up.  Obviously there's tons of ways to
do this.  I decided to ...

A) only initialization qos_options to the real defaults

B) init all qos_*_options to sentinel values (-1, NULL, etc.) to
indicate it should use the configured defaults if they aren't set by the
user.  The high_limit was changed from an unsigned to an int b/c 0 is a
valid high_limit value.

C) verify that the default qos inputs are definitely correct (i.e. can't
be NULL).  Reset to hard coded defaults if need be.

D) load the default vs. non-default appropriately in QoS.

Al

P.S.  This patch does not rely on my previous "remove qos_max_vls
config" patch.  I assume we're keeping the max_vls fields in this patch.

-- 
Albert Chu
chu11 at llnl.gov
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fix-qos-config-parsing-bugs.patch
Type: text/x-patch
Size: 21150 bytes
Desc: not available
URL: <http://lists.openfabrics.org/pipermail/general/attachments/20081030/6e9101c9/attachment.bin>


More information about the general mailing list