Signed-off-by: Hal Rosenstock <[email protected]> --- doc/opensm-sriov.txt | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 154 insertions(+), 0 deletions(-) create mode 100644 doc/opensm-sriov.txt
diff --git a/doc/opensm-sriov.txt b/doc/opensm-sriov.txt new file mode 100644 index 0000000..9febe21 --- /dev/null +++ b/doc/opensm-sriov.txt @@ -0,0 +1,154 @@ +OpenSM SRIOV (Alias GUID) Support +12/9/11 + +Overview + +In order to support virtualized environments, alias GUID support is added to OpenSM. +This support allows an SA client to add and remove additional port GUIDs based on +SubAdmSet/SubAdmDelete of GUIDInfoRecord. A set with a GUID of 0 in a valid GUIDInfoRecord +index as indicated by the component mask indicates that the additional GUID is to +be SM assigned. The OpenIB OUI (0x001405), along with a configured byte and a +pseudorandom number is currently used for this algorithm (which may be changed in the future). + +Most SA queries are updated to handle alias GUIDs as part of any GID specified inside +the query. These include SA path record, multipath record, multicast record, and service record. +There are only a few SA queries (InformInfoRecord, InformInfo) that are not currently updated +for alias GUID support. + +In terms of the IBA spec, alias GUIDs are termed additional port GUIDs. + + +IBA 1.2.1 Volume 1 Changes for Alias GUID Support + +The following are MgtWG WG APPROVED spec changes to IBA 1.2.1 volume 1 relative to this support: + +RefID 4704 +15.2.5.18 GUIDInfoRecord p. 932 line 14 +Table 213 GUIDInfoRecord + +An entity that wishes to add or remove additional port GUIDs can do so using the SubnAdmSet() and SubnAdmDelete() methods +with the GUIDInfoRecord attribute. This causes the SM to set the updated GUIDs in the specified port via the SM GUIDInfo attribute. + +SubnAdmSet() method is used to add additional port GUIDs. SubnAdmDelete() method is used to remove previously added additional +port GUIDs. + +o15-0.x.y: If SA supports additional port GUIDs, then both SubAdmSet(GUIDInfoRecord) and SubnAdmDelete(GUIDInfoRecord) are +supported. + +o15-0.x.y: If SA supports additional port GUIDs, the component mask for SubAdmSet(GUIDInfoRecord) and +SubnAdmDelete(GUIDInfoRecord) is required to include both LID and block number. If the component mask does not include both of +these, SA shall return an error status of ERR_REQ_INSUFFICIENT_COMPONENTS in its response to the corresponding method. + +o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmSet(GUIDInfoRecord), the component mask indicates which GUID indices +are to be set. A GUID can either be added or replaced. A GUID of 0 indicates that the GUID for this index is to be assigned by +the SM. + +o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmDelete(GUIDInfoRecord), the component mask indicates which GUID +indices are to be removed. + +o15-0.x.y: If SA supports additional port GUIDs, the SA shall return an error status of ERR_REQ_INVALID to any attempt to set +or delete block number 0 index 0. + + +RefID 4705 +p.899 line 26 15.2.4 +Table 188 SA-Specific Optional Capabilities + +<add table entry:> +IsAdditionalGUIDsSupported | CM2 | 5 | If this value is 1, SA shall support the ability to add and remove additional port GUIDs + via SubAdmSet/SubnAdmDelete(GUIDInfoRecord) as described in + <ref to 15.2.5.18 GUIDInfoRecord> + + +RefID 4706 +p.904 line 21 15.2.5.1 +Table 192 Subnet Administration Attribute / Method Map + +<Add an "X" to the "Set" and "Delete" columns for GUIDInfoRecord> +<Add footnote "b" to GUIDInfoRecord where footnote "b" is as shown below:> +b: SubAdmSet and SubAdmDelete of GUIDInfoRecord are supported if SA:ClassPortInfo.CapabilityMask2 indicates +IsAdditionalGUIDsSupported. + +RefID 4714 +Clarify GUID 0 in SA Set GUIDInfoRecord response +p.932 line 14 15.2.18 + +<change:> +o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmSet(GUIDInfoRecord), the component mask indicates which GUID indices +are to be set. A GUID can either be added or replaced. A GUID of 0 indicates that the GUID for this index is to be assigned by +the SM. + +<to:> +o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmSet(GUIDInfoRecord), the component mask indicates which GUID indices +are to be set. A GUID can either be added or replaced. In the request, a GUID of 0 indicates that the GUID for this index is to +be assigned by the SM. In the response, a GUID of 0 indicates that the GUID requested for this index was not accepted by the SA. + +RefID 4776 +SM GUIDInfo initialization + +<change:> +GUIDInfo Description + +The requirements for setting additional + +GUIDs are beyond the scope of the specification. + + +<to:> +<none> + + +OpenSM SRIOV Configuration + +Some new options were added for SRIOV configuration of OpenSM. + +1. Allow both pkeys +-W or --allow_both_pkeys on the command line or +allow_both_pkeys TRUE +in the options file. Default is false. + +allow_both_pkeys indicates whether both full and +limited membership on the same partition is allowed or not. + +In order to support allow_both_pkeys, the partition file syntax is +extended with "both" flag (in addition to "full" and "limited"). + +defmember=full|limited|both +or +[PortGUID[=full|=limited|=both]] + +2. SM assigned GUID byte +sm_assigned_guid +in the options file. Default is 0. + +An SM assigned GUID byte is added as a configuration option +where an alias GUID is formed from OpenFabrics OUI +followed by 40 bits xy 00 ab cd ef where xy is the SM assigned guid byte +and ab cd ef is an SM autogenerated 24 bits. + +The SM assigned GUID byte should be configured as subnet unique. + +Also, the algorithm to obtain a "unique" SM assigned GUID is changing from +being based on a static monatomically incrementing counter for the SM +autogenerated part (like SA MCMemberRecord SM assigned MGIDs). +The number of retries to find an unused GUID is currently hardcoded at 1000. + +Note that it is not a current requirement to maintain SM assigned GUIDs across OpenSM +failover. Note also that on reregistration, a host may reregister the previously SM +assigned GUID. + + +Operational Notes + +Duplicated alias GUIDs are detected against alias and physical GUIDs and result in +rejection of such registrations. + +When a port is dropped, any alias GUID registrations are removed. These are +reregistered by client reregistration mechanism. The exception +to this is service registrations as these are not currently reregistered by +the ULPs/applications that use them. + +Futures + +1. An alias GUID enforcement feature to which physical ports are allowed to request which +alias GUIDs. -- 1.7.6.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
