--- opensm/osm_prtn_config.old.c	2007-04-18 11:54:29.000000000 +0200
+++ opensm/osm_prtn_config.c	2007-05-14 16:34:56.673243259 +0200
@@ -70,6 +70,7 @@
 	osm_subn_t *p_subn;
 	osm_prtn_t *p_prtn;
 	unsigned    is_ipoib, mtu, rate, sl, scope;
+	boolean_t   full;
 };
 
 extern osm_prtn_t *osm_prtn_make_new(osm_log_t *p_log, osm_subn_t *p_subn,
@@ -163,6 +164,14 @@
 				" - skipped\n", lineno);
 		else
 			conf->sl = sl;
+	} else if (!strncmp(flag, "defmember", len)) {
+		if (!val || (strcmp(val, "limited") && strcmp(val, "full")))
+			osm_log(conf->p_log, OSM_LOG_VERBOSE,
+				"PARSE WARN: line %d: "
+				"flag \'defmember\' requires valid value (limited or full)"
+				" - skipped\n", lineno);
+		else
+			conf->full = strcmp(val, "full") == 0;
 	} else {
 			osm_log(conf->p_log, OSM_LOG_VERBOSE,
 					  "PARSE WARN: line %d: "
@@ -177,12 +186,14 @@
 {
 	osm_prtn_t *p = conf->p_prtn;
 	ib_net64_t guid;
-	boolean_t full = FALSE;
+	boolean_t full = conf->full;
 
 	if (!name || !*name || !strncmp(name, "NONE", strlen(name)))
 		return 0;
 
 	if (flag) {
+		/* reset default membership to limited */
+		full = FALSE;
 		if (!strncmp(flag, "full", strlen(flag)))
 			full = TRUE;
 		else if (strncmp(flag, "limited", strlen(flag))) {
--- man/opensm.8.old	2007-04-18 11:54:29.000000000 +0200
+++ man/opensm.8	2007-05-14 16:19:11.747555126 +0200
@@ -291,13 +291,15 @@
 
 Partition Definition:
 
-[PartitionName][=PKey][,flag[=value]]
+[PartitionName][=PKey][,flag[=value]][,defmember=full|limited]
 
  PartitionName - string, will be used with logging. When omitted
                  empty string will be used.
  PKey          - P_Key value for this partition. Only low 15 bits will
                  be used. When omitted will be autogenerated.
  flag          - used to indicate IPoIB capability of this partition.
+ defmember=full|limited - specifies default membership for port guid. 
+                 Default is limited.
 
 Currently recognized flags are:
 
@@ -317,10 +319,10 @@
 
 PortGUIDs list:
 
-PortGUID     - GUID of partition member EndPort. Hexadecimal numbers
-               should start from 0x, decimal numbers are accepted too.
-full or      - indicates full or limited membership for this port. When
-  limited      omitted (or unrecognized) limited membership is assumed.
+ PortGUID         - GUID of partition member EndPort. Hexadecimal numbers
+                   should start from 0x, decimal numbers are accepted too.
+ full or limited  - indicates full or limited membership for this port.
+                   When omitted (or unrecognized) default (defmember) membership is assumed.
 
 There are two useful keywords for PortGUID definition:
 
@@ -346,12 +348,20 @@
 
 Examples:
 
-Default=0x7fff : ALL, SELF=full ;
+ Default=0x7fff : ALL, SELF=full ;
 
-NewPartition , ipoib : 0x123456=full, 0x3456789034=limi, 0x2134af2306 ;
+ NewPartition , ipoib : 0x123456=full, 0x3456789034=limi, 0x2134af2306 ;
 
-YetAnotherOne = 0x300 : SELF=full ;
-YetAnotherOne = 0x300 : ALL=limited ;
+ YetAnotherOne = 0x300 : SELF=full ;
+ YetAnotherOne = 0x300 : ALL=limited ;
+
+ ShareIO = 0x80 , defmember=full : 0x123451, 0x123452;
+ # 0x123453, 0x123454 will be limited
+ ShareIO = 0x80 : 0x123453, 0x123454, 0x123455=full;
+ # 0x123456, 0x123457 will be limited
+ ShareIO = 0x80 : defmember=limited : 0x123456, 0x123457, 0x123458=full;
+ ShareIO = 0x80 , defmember=full : 0x123459, 0x12345a;
+ ShareIO = 0x80 , defmember=full : 0x12345b, 0x12345c=limited, 0x12345d;
 
 Note:
 
