[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