New Upstream Release - opensm

Ready changes

Summary

Merged new upstream version: 3.3.24 (was: 3.3.23).

Resulting package

Built on 2022-05-16T11:50 (took 3m30s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases libopensm-devapt install -t fresh-releases libopensm9-dbgsymapt install -t fresh-releases libopensm9apt install -t fresh-releases libosmcomp5-dbgsymapt install -t fresh-releases libosmcomp5apt install -t fresh-releases libosmvendor5-dbgsymapt install -t fresh-releases libosmvendor5apt install -t fresh-releases opensm-dbgsymapt install -t fresh-releases opensm-docapt install -t fresh-releases opensm

Lintian Result

Diff

diff --git a/complib/cl_heap.c b/complib/cl_heap.c
index b7715f98..0c0b3827 100644
--- a/complib/cl_heap.c
+++ b/complib/cl_heap.c
@@ -239,7 +239,7 @@ cl_status_t cl_heap_modify_key(IN cl_heap_t * const p_heap,
 	CL_ASSERT(p_heap);
 	CL_ASSERT(cl_is_heap_inited(p_heap));
 
-	if (index < 0 || index >= p_heap->size)
+	if (index >= p_heap->size)
 		return (CL_INVALID_PARAMETER);
 
 	old_key = p_heap->element_array[index].key;
@@ -286,7 +286,7 @@ void *cl_heap_delete(IN cl_heap_t * const p_heap, IN const size_t index)
 
 	if (!p_heap->size)
 		return NULL;
-	if (index < 0 || index >= p_heap->size)
+	if (index >= p_heap->size)
 		return NULL;
 	if (p_heap->size == 1)
 		return p_heap->element_array[--(p_heap->size)].context;
@@ -333,7 +333,7 @@ boolean_t cl_is_stored_in_heap(IN const cl_heap_t * const p_heap,
 	CL_ASSERT(p_heap);
 	CL_ASSERT(cl_is_heap_inited(p_heap));
 
-	return ((index < 0 || index >= p_heap->size ||
+	return ((index >= p_heap->size ||
 		 p_heap->element_array[index].context != ctx) ? FALSE : TRUE);
 }
 
diff --git a/complib/libosmcomp.ver b/complib/libosmcomp.ver
index 6ecd5d88..1e08ea7a 100644
--- a/complib/libosmcomp.ver
+++ b/complib/libosmcomp.ver
@@ -6,4 +6,4 @@
 # API_REV - advance on any added API
 # RUNNING_REV - advance any change to the vendor files
 # AGE - number of backward versions the API still supports
-LIBVERSION=5:0:0
+LIBVERSION=5:1:0
diff --git a/configure.ac b/configure.ac
index 4633fbb1..890c7769 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.57)
-AC_INIT(opensm, 3.3.23, linux-rdma@vger.kernel.org)
+AC_INIT(opensm, 3.3.24, linux-rdma@vger.kernel.org)
 AC_CONFIG_SRCDIR([opensm/osm_opensm.c])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR(config)
diff --git a/debian/changelog b/debian/changelog
index ef1ea423..7da6037e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+opensm (3.3.24-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Mon, 16 May 2022 11:48:23 -0000
+
 opensm (3.3.23-2) unstable; urgency=medium
 
   * Team upload.
diff --git a/debian/patches/Add-systemd-service.patch b/debian/patches/Add-systemd-service.patch
index 21f2fdb8..d5da2259 100644
--- a/debian/patches/Add-systemd-service.patch
+++ b/debian/patches/Add-systemd-service.patch
@@ -22,10 +22,10 @@ Signed-off-by: Benjamin Drung <benjamin.drung@cloud.ionos.com>
  create mode 100644 opensm.service
  create mode 100644 opensm@.service.in
 
-diff --git a/.gitignore b/.gitignore
-index bbee270b..eedec6c6 100644
---- a/.gitignore
-+++ b/.gitignore
+Index: opensm/.gitignore
+===================================================================
+--- opensm.orig/.gitignore
++++ opensm/.gitignore
 @@ -33,6 +33,7 @@ Makefile.in
  man/opensm.8
  man/torus-2QoS.8
@@ -34,11 +34,11 @@ index bbee270b..eedec6c6 100644
  opensm.spec
  opensm/opensm
  opensm/osm_qos_parser_l.c
-diff --git a/Makefile.am b/Makefile.am
-index 0bd48b48..9bb97e01 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -19,6 +19,12 @@ docs = doc/performance-manager-HOWTO.txt doc/QoS_management_in_OpenSM.txt \
+Index: opensm/Makefile.am
+===================================================================
+--- opensm.orig/Makefile.am
++++ opensm/Makefile.am
+@@ -19,6 +19,12 @@ docs = doc/performance-manager-HOWTO.txt
  	doc/partition-config.txt doc/opensm-sriov.txt \
  	doc/current-routing.txt doc/opensm_release_notes-3.3.txt
  
@@ -51,11 +51,11 @@ index 0bd48b48..9bb97e01 100644
  EXTRA_DIST = autogen.sh opensm.spec $(various_scripts) $(man_MANS) $(docs)
  
  dist-hook: $(EXTRA_DIST)
-diff --git a/configure.ac b/configure.ac
-index 4633fbb1..d7389203 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -270,6 +270,13 @@ AC_DEFINE_UNQUOTED(HAVE_DEFAULT_PER_MOD_LOGGING_FILE,
+Index: opensm/configure.ac
+===================================================================
+--- opensm.orig/configure.ac
++++ opensm/configure.ac
+@@ -270,6 +270,13 @@ AC_DEFINE_UNQUOTED(HAVE_DEFAULT_PER_MOD_
          [Define a Per Module Logging config file])
  AC_SUBST(PER_MOD_LOGGING_FILE)
  
@@ -69,11 +69,10 @@ index 4633fbb1..d7389203 100644
  dnl select example event plugin or not
  OPENIB_OSM_DEFAULT_EVENT_PLUGIN_SEL
  
-diff --git a/opensm.service b/opensm.service
-new file mode 100644
-index 00000000..0f78f041
+Index: opensm/opensm.service
+===================================================================
 --- /dev/null
-+++ b/opensm.service
++++ opensm/opensm.service
 @@ -0,0 +1,13 @@
 +[Unit]
 +Description=Starts the OpenSM InfiniBand fabric Subnet Managers
@@ -88,11 +87,10 @@ index 00000000..0f78f041
 +
 +[Install]
 +WantedBy=network-online.target
-diff --git a/opensm@.service.in b/opensm@.service.in
-new file mode 100644
-index 00000000..aaf5dd2a
+Index: opensm/opensm@.service.in
+===================================================================
 --- /dev/null
-+++ b/opensm@.service.in
++++ opensm/opensm@.service.in
 @@ -0,0 +1,10 @@
 +[Unit]
 +Description=Starts the OpenSM InfiniBand fabric Subnet Manager %I
@@ -104,6 +102,3 @@ index 00000000..aaf5dd2a
 +[Service]
 +Type=simple
 +ExecStart=@sbindir@/opensm --guid %I --log_file /var/log/opensm.%I.log
--- 
-2.25.1
-
diff --git a/debian/patches/opensm.service-Support-etc-default-opensm.patch b/debian/patches/opensm.service-Support-etc-default-opensm.patch
index a644832c..f90f1903 100644
--- a/debian/patches/opensm.service-Support-etc-default-opensm.patch
+++ b/debian/patches/opensm.service-Support-etc-default-opensm.patch
@@ -12,11 +12,11 @@ Signed-off-by: Benjamin Drung <benjamin.drung@cloud.ionos.com>
  opensm.service | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
-diff --git a/opensm.service b/opensm.service
-index 0f78f041..22c6161c 100644
---- a/opensm.service
-+++ b/opensm.service
-@@ -6,7 +6,9 @@ ConditionPathExists=/sys/class/infiniband_mad/abi_version
+Index: opensm/opensm.service
+===================================================================
+--- opensm.orig/opensm.service
++++ opensm/opensm.service
+@@ -6,7 +6,9 @@ ConditionPathExists=/sys/class/infiniban
  
  [Service]
  Type=oneshot
@@ -27,6 +27,3 @@ index 0f78f041..22c6161c 100644
  RemainAfterExit=on
  
  [Install]
--- 
-2.25.1
-
diff --git a/doc/opensm_release_notes-3.3.txt b/doc/opensm_release_notes-3.3.txt
index e494f61e..b1c81280 100644
--- a/doc/opensm_release_notes-3.3.txt
+++ b/doc/opensm_release_notes-3.3.txt
@@ -10,7 +10,7 @@ Date:    April 2019
 This document describes the contents of the OpenSM 3.3 release.
 OpenSM is an InfiniBand compliant Subnet Manager and Administration,
 and runs on top of OpenIB. The OpenSM version for this release
-is opensm-3.3.23.
+is opensm-3.3.24.
 
 This document includes the following sections:
 1 This Overview section (describing new features and software
@@ -23,6 +23,8 @@ This document includes the following sections:
 
 1.1 Major New Features
 
+* Support for NDR link speed
+
 * Support for HDR link speed and 2x link width
   IBTA has recently (beyond IBA 1.3) added support for HDR link speed
   and 2x link width.
@@ -121,6 +123,7 @@ This document includes the following sections:
 
 1.2 Minor New Features:
 
+b17b4db Backward compatibility for old drivers
 924f030 Add support for registering an opensm plugin as a new routing engine
 82c3ea6 Add '--subnet_prefix' and '--dump_files_dir' options
 dfc383e osm_port_info_rcv.c: Optimize PKEY sending during heavy sweep
@@ -867,6 +870,11 @@ f37bf3c opensm/perfmgr: skip data counters when only printing errors
 
 4.2 Other Bug Fixes
 
+580e6d8 Remove redundant negativity check of size_t type, which is unsigned thus non negative.
+086c870 libopensm/osm_helper.c: Fix printing trap 256 details
+8870b89 libopensm/osm_helper.c: Fix printing trap 259 details
+9b3e860 osm_link_mgr.c: Fix checking if port support link width 2x
+0a8d939 osm_sa_mcmember_record.c: Allow MCMR requests with default subnet prefix
 9b9ea72 Fix spelling mistake of "switches"
 70722b4 ib_types: Drop packed attribute where unnecessary
 9a7cc0d opensm.spec.in: Move COPYING back into doc
diff --git a/include/iba/ib_types.h b/include/iba/ib_types.h
index 025f9714..3f1a337c 100644
--- a/include/iba/ib_types.h
+++ b/include/iba/ib_types.h
@@ -3216,6 +3216,8 @@ ib_path_rec_rate(IN const ib_path_rec_t * const p_rec)
 *		20: 50 Gb/sec.
 *		21: 400 Gb/sec.
 *		22: 600 Gb/sec.
+*		23 : 800 Gb/sec.
+*		24 : 1200 Gb/sec.
 *		others: reserved
 *
 * NOTES
@@ -4702,6 +4704,7 @@ typedef struct _ib_port_info {
 #define IB_PORT_CAP2_IS_SWITCH_PORT_STATE_TBL_SUPP (CL_HTON16(0x0008))
 #define IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED (CL_HTON16(0x0010))
 #define IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED (CL_HTON16(0x0020))
+#define IB_PORT_CAP2_IS_LINK_SPEED_NDR_SUPPORTED (CL_HTON16(0x0400))
 
 /****s* IBA Base: Types/ib_port_info_ext_t
 * NAME
@@ -4721,7 +4724,9 @@ typedef struct _ib_port_info_ext {
 	ib_net16_t edr_fec_mode_enable;
 	ib_net16_t hdr_fec_mode_sup;
 	ib_net16_t hdr_fec_mode_enable;
-	uint8_t reserved[46];
+	ib_net16_t ndr_fec_mode_sup;
+	ib_net16_t ndr_fec_mode_enable;
+	uint8_t reserved[42];
 } ib_port_info_ext_t;
 /************/
 
@@ -5182,9 +5187,14 @@ ib_port_info_get_link_speed_active(IN const ib_port_info_t * const p_pi)
 #define IB_LINK_SPEED_EXT_ACTIVE_14		1
 #define IB_LINK_SPEED_EXT_ACTIVE_25		2
 #define IB_LINK_SPEED_EXT_ACTIVE_50		4
+#define IB_LINK_SPEED_EXT_ACTIVE_100		8
 #define IB_LINK_SPEED_EXT_14_25_OR_50		(IB_LINK_SPEED_EXT_ACTIVE_14 | \
 						 IB_LINK_SPEED_EXT_ACTIVE_25 | \
 						 IB_LINK_SPEED_EXT_ACTIVE_50)
+#define IB_LINK_SPEED_EXT_MAX_VALUE		(IB_LINK_SPEED_EXT_ACTIVE_14 | \
+						 IB_LINK_SPEED_EXT_ACTIVE_25 | \
+						 IB_LINK_SPEED_EXT_ACTIVE_50 | \
+						 IB_LINK_SPEED_EXT_ACTIVE_100)
 #define IB_LINK_SPEED_EXT_DISABLE		30
 #define IB_LINK_SPEED_EXT_SET_LSES		31
 
@@ -5210,10 +5220,13 @@ ib_port_info_get_link_speed_active(IN const ib_port_info_t * const p_pi)
 #define IB_PATH_RECORD_RATE_50_GBS		20
 #define IB_PATH_RECORD_RATE_400_GBS		21
 #define IB_PATH_RECORD_RATE_600_GBS		22
+/* following v1 ver1.5 p1044 */
+#define IB_PATH_RECORD_RATE_800_GBS		23
+#define IB_PATH_RECORD_RATE_1200_GBS		24
 
 #define IB_MIN_RATE    IB_PATH_RECORD_RATE_2_5_GBS
-#define IB_MAX_RATE    IB_PATH_RECORD_RATE_600_GBS
-#define IB_RATE_MAX    IB_PATH_RECORD_RATE_600_GBS
+#define IB_MAX_RATE    IB_PATH_RECORD_RATE_1200_GBS
+#define IB_RATE_MAX    IB_PATH_RECORD_RATE_1200_GBS
 
 static inline uint8_t OSM_API
 ib_port_info_get_link_speed_ext_active(IN const ib_port_info_t * const p_pi);
@@ -5316,6 +5329,33 @@ ib_port_info_compute_rate(IN const ib_port_info_t * const p_pi,
 				break;
 			}
 			break;
+		case IB_LINK_SPEED_EXT_ACTIVE_100:
+			switch (p_pi->link_width_active) {
+			case IB_LINK_WIDTH_ACTIVE_1X:
+				rate = IB_PATH_RECORD_RATE_100_GBS;
+				break;
+
+			case IB_LINK_WIDTH_ACTIVE_4X:
+				rate = IB_PATH_RECORD_RATE_400_GBS;
+				break;
+
+			case IB_LINK_WIDTH_ACTIVE_8X:
+				rate = IB_PATH_RECORD_RATE_800_GBS;
+				break;
+
+			case IB_LINK_WIDTH_ACTIVE_12X:
+				rate = IB_PATH_RECORD_RATE_1200_GBS;
+				break;
+
+			case IB_LINK_WIDTH_ACTIVE_2X:
+				rate = IB_PATH_RECORD_RATE_200_GBS;
+				break;
+
+			default:
+				rate = IB_PATH_RECORD_RATE_100_GBS;
+				break;
+			}
+			break;
 		/* IB_LINK_SPEED_EXT_ACTIVE_NONE and any others */
 		default:
 			break;
@@ -6456,7 +6496,9 @@ static inline uint8_t OSM_API ib_get_highest_link_speed(IN const uint8_t speeds)
 	uint8_t ret = 0;
 	uint8_t extspeeds = (speeds >> 4);
 
-	if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_50)
+	if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_100)
+		ret = IB_LINK_SPEED_EXT_ACTIVE_100 << 4;
+	else if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_50)
 		ret = IB_LINK_SPEED_EXT_ACTIVE_50 << 4;
 	else if (extspeeds & IB_LINK_SPEED_EXT_ACTIVE_25)
 		ret = IB_LINK_SPEED_EXT_ACTIVE_25 << 4;
diff --git a/include/opensm/osm_base.h b/include/opensm/osm_base.h
index 7d0addd1..6930cdc0 100644
--- a/include/opensm/osm_base.h
+++ b/include/opensm/osm_base.h
@@ -933,6 +933,17 @@ typedef enum _osm_thread_state {
  */
 #define OSM_CAP2_IS_LINK_SPEED_HDR_SUPPORTED (1 << 15)
 
+/****d* OpenSM: OSM_CAP2_IS_LINK_SPEED_NDR_SUPPORTED
+ * Name
+ *	OSM_CAP2_IS_LINK_SPEED_NDR_SUPPORTED
+ *
+ * DESCRIPTION
+ *	NDR link speed supported
+ *
+ * SYNOPSIS
+ */
+#define OSM_CAP2_IS_LINK_SPEED_NDR_SUPPORTED (1 << 17)
+
 /****d* OpenSM: osm_signal_t
 * NAME
 *	osm_signal_t
diff --git a/include/opensm/osm_helper.h b/include/opensm/osm_helper.h
index 9029d403..43a755d1 100644
--- a/include/opensm/osm_helper.h
+++ b/include/opensm/osm_helper.h
@@ -841,6 +841,9 @@ int ib_path_rate_get_next(IN const int rate);
 *	ib_path_rate_max_12xedr
 *
 * DESCRIPTION
+*	Function is deprecated and SHOULD NOT BE USED.
+*	Use osm_sa_limit_rate instead.
+*
 *	Obtains encoded rate from the set of "original" extended
 *	SA rates (up through and including 300 Gbps - 12x EDR).
 *
@@ -854,6 +857,9 @@ int ib_path_rate_max_12xedr(IN const int rate);
 *		[in] Encoded path rate.
 *
 * RETURN VALUES
+*	Function is deprecated and SHOULD NOT BE USED.
+*	Use osm_sa_limit_rate instead.
+*
 *	Returns an int indicating the encoded rate
 *	with a maximum of 300 Gbps (12x EDR).
 *	For new rates (relating to 2x and HDR), the
@@ -895,6 +901,34 @@ int ib_path_rate_2x_hdr_fixups(IN const ib_port_info_t * p_pi,
 * SEE ALSO
 *********/
 
+/****f* IBA Base: Types/ib_path_get_reduced_rate
+ * NAME
+ *	ib_path_get_reduced_rate
+ *
+ * DESCRIPTION
+ *	Obtains encoded rate for a reduced rate, subsequent
+ *	to input maximal rate.
+ *
+ * SYNOPSIS
+ */
+int ib_path_get_reduced_rate(IN const uint8_t rate, IN const uint8_t limit);
+/*
+ * PARAMETERS
+ *	rate
+ *		[in] Encoded path rate.
+ *
+ *	limit
+ *		[in] Encoded maximal rate supported.
+ *
+ * RETURN VALUES
+ *	Returns an int indicating reduced encoded rate supported,
+ *	or minimal rate if none can be found.
+ *
+ * NOTES
+ *
+ * SEE ALSO
+ *********/
+
 /****f* OpenSM: Helper/sprint_uint8_arr
 * NAME
 *	sprint_uint8_arr
diff --git a/include/opensm/osm_sa.h b/include/opensm/osm_sa.h
index aeeaa02d..7cdd5cc3 100644
--- a/include/opensm/osm_sa.h
+++ b/include/opensm/osm_sa.h
@@ -66,6 +66,8 @@
 #  define END_C_DECLS
 #endif				/* __cplusplus */
 
+#define SA_RATE_MAX_ENUM 63
+
 BEGIN_C_DECLS
 /****h* OpenSM/SA
 * NAME
@@ -613,5 +615,31 @@ void osm_pr_process_half(IN osm_sa_t * sa, IN const ib_sa_mad_t * sa_mad,
 				IN const ib_gid_t * p_dgid,
 				IN cl_qlist_t * p_list);
 
+/****f* OpenSM: SA/osm_sa_limit_rate
+ * NAME
+ *	osm_sa_limit_rate
+ *
+ * DESCRIPTION
+ *	Find reduced rate of input rate that does not exceed the maximal
+ *	rate value of subnet.
+ *
+ * SYNOPSIS
+ */
+uint8_t osm_sa_limit_rate(IN osm_sa_t *sa, IN const uint8_t rate);
+/*
+ * PARAMETERS
+ *	sa
+ *		[in] Pointer to a SA object.
+ *
+ *	rate
+ *		[in] Rate to be adjusted to maximal rate value of subnet.
+ *
+ * RETURN VALUE
+ *	The rate after adjusting to maximal rate, may be the same or lower.
+ *
+ * SEE ALSO
+ *	SA object, osm_sa_construct, osm_sa_init
+ *********/
+
 END_C_DECLS
 #endif				/* _OSM_SA_H_ */
diff --git a/include/opensm/osm_subnet.h b/include/opensm/osm_subnet.h
index 78111b58..c654ab3a 100644
--- a/include/opensm/osm_subnet.h
+++ b/include/opensm/osm_subnet.h
@@ -338,6 +338,7 @@ typedef struct osm_subn_opt {
 	boolean_t ipoib_mcgroup_creation_validation;
 	boolean_t mcgroup_join_validation;
 	boolean_t use_original_extended_sa_rates_only;
+	uint8_t max_rate_enum;
 	boolean_t use_optimized_slvl;
 	boolean_t fsync_high_avail_files;
 	osm_qos_options_t qos_options;
@@ -641,6 +642,12 @@ typedef struct osm_subn_opt {
 *		old kernels/drivers that don't understand the
 *		new SA rates for 2x link width and/or HDR link speed (19-22).
 *
+*	max_rate_enum
+*		Enumeration of the maximal rate subnet supports. Option is
+*		required for subnets with old kernels/drivers that don't
+*		understand new SA rates.
+*		See also : use_original_extended_sa_rates_only.
+*
 *	use_optimized_slvl
 *		Use optimized SLtoVLMappingTable programming if
 *		device indicates it supports this.
diff --git a/libopensm/libopensm.map b/libopensm/libopensm.map
index 28a3e0aa..2878a97d 100644
--- a/libopensm/libopensm.map
+++ b/libopensm/libopensm.map
@@ -91,5 +91,6 @@ OPENSM_1.5 {
 		sprint_uint8_arr;
 		ib_path_rate_max_12xedr;
 		ib_path_rate_2x_hdr_fixups;
+		ib_path_get_reduced_rate;
 	local: *;
 };
diff --git a/libopensm/libopensm.ver b/libopensm/libopensm.ver
index 5034906a..b4eab774 100644
--- a/libopensm/libopensm.ver
+++ b/libopensm/libopensm.ver
@@ -6,4 +6,4 @@
 # API_REV - advance on any added API
 # RUNNING_REV - advance any change to the vendor files
 # AGE - number of backward versions the API still supports
-LIBVERSION=10:0:1
+LIBVERSION=11:0:2
diff --git a/libopensm/osm_helper.c b/libopensm/osm_helper.c
index 9791172f..6e9e98ed 100644
--- a/libopensm/osm_helper.c
+++ b/libopensm/osm_helper.c
@@ -464,6 +464,8 @@ static int ordered_rates[] = {
 	11,	/* 20 -  50 Gbps (62.5 Gbps equiv) */
 	20,	/* 21 - 400 Gbps (500 Gbps equiv) */
 	21,	/* 22 - 600 Gbps (750 Gbps equiv) */
+	22,	/* 23 - 800 Gbps (1000 Gbps equiv) */
+	23,	/* 24 - 1200 Gbps (1500 Gbps equiv) */
 };
 
 int sprint_uint8_arr(char *buf, size_t size,
@@ -2520,8 +2522,8 @@ static void osm_dump_notice_to_buf_generic(IN const ib_mad_notice_attr_t * p_ntc
 					      mkey),
 				    p_ntci->data_details.ntc_256.
 				    dr_trunc_hop >> 7,
-				    p_ntci->data_details.ntc_256.
-				    dr_trunc_hop >> 6,
+				    (p_ntci->data_details.ntc_256.
+				    dr_trunc_hop & 0x40) >> 6,
 				    p_ntci->data_details.ntc_256.
 				    dr_trunc_hop & 0x3f);
 			n += snprintf(buff + n, sizeof(buff) - n,
@@ -2588,10 +2590,11 @@ static void osm_dump_notice_to_buf_generic(IN const ib_mad_notice_attr_t * p_ntc
 				cl_ntoh16(p_ntci->data_details.ntc_259.lid2),
 				cl_ntoh16(p_ntci->data_details.ntc_259.pkey),
 				cl_ntoh32(p_ntci->data_details.ntc_259.
-					  sl_qp1) >> 24,
+					  sl_qp1) >> 28,
 				cl_ntoh32(p_ntci->data_details.ntc_259.
 					  sl_qp1) & 0xffffff,
-				cl_ntoh32(p_ntci->data_details.ntc_259.qp2),
+				cl_ntoh32(p_ntci->data_details.ntc_259.
+					  qp2) & 0xffffff,
 				inet_ntop(AF_INET6, p_ntci->data_details.
 					  ntc_259.gid1.raw, gid_str,
 					  sizeof gid_str),
@@ -3215,7 +3218,11 @@ static const char *lsea_str_fixed_width[] = {
 	"14  ",
 	"25  ",
 	"????",
-	"50  "
+	"50  ",
+	"????",
+	"????",
+	"????",
+	"100 "
 };
 
 const char *osm_get_lsa_str(IN uint8_t lsa, IN uint8_t lsea, IN uint8_t state,
@@ -3229,7 +3236,7 @@ const char *osm_get_lsa_str(IN uint8_t lsa, IN uint8_t lsea, IN uint8_t state,
 		else
 			return lsa_str_fixed_width[lsa];
 	}
-	if (lsea > IB_LINK_SPEED_EXT_ACTIVE_50)
+	if (lsea > IB_LINK_SPEED_EXT_ACTIVE_100)
 		return lsa_str_fixed_width[3];
 	return lsea_str_fixed_width[lsea];
 }
@@ -3344,6 +3351,17 @@ int ib_path_rate_get_next(IN const int rate)
 	return find_ordered_rate(orate);
 }
 
+int ib_path_get_reduced_rate(IN const uint8_t rate, IN const uint8_t limit)
+{
+	int i = ib_path_rate_get_prev(rate);
+
+	while (i > IB_MIN_RATE &&
+	       (ordered_rates[i] > ordered_rates[limit] || i > limit))
+		i = ib_path_rate_get_prev(i);
+
+	return i ? i : IB_MIN_RATE;
+}
+
 int ib_path_rate_max_12xedr(IN const int rate)
 {
 	CL_ASSERT(rate >= IB_MIN_RATE && rate <= IB_MAX_RATE);
@@ -3358,6 +3376,8 @@ int ib_path_rate_max_12xedr(IN const int rate)
 		return IB_PATH_RECORD_RATE_40_GBS;
 	case IB_PATH_RECORD_RATE_400_GBS:
 	case IB_PATH_RECORD_RATE_600_GBS:
+	case IB_PATH_RECORD_RATE_800_GBS:
+	case IB_PATH_RECORD_RATE_1200_GBS:
 		return IB_PATH_RECORD_RATE_300_GBS;
 	default:
 		break;
@@ -3397,10 +3417,28 @@ int ib_path_rate_2x_hdr_fixups(IN const ib_port_info_t * p_pi,
 	case IB_PATH_RECORD_RATE_600_GBS:
 		/* HDR not supported but HDR only rate */
 		if (!(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) ||
-		    (p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2 &&
-		    !(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED)))
+		    ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) &&
+		    !(p_pi->capability_mask2 &
+		    (IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED |
+		    IB_PORT_CAP2_IS_LINK_SPEED_NDR_SUPPORTED))))
 			new_rate = IB_PATH_RECORD_RATE_300_GBS;
 		break;
+	case IB_PATH_RECORD_RATE_800_GBS:
+	case IB_PATH_RECORD_RATE_1200_GBS:
+		/* NDR not supported but NDR only rate */
+		if (!(p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) ||
+		    (p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2 &&
+		    !(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_NDR_SUPPORTED))) {
+			if ((p_pi->capability_mask & IB_PORT_CAP_HAS_CAP_MASK2) &&
+			    !(p_pi->capability_mask2 & IB_PORT_CAP2_IS_LINK_SPEED_HDR_SUPPORTED)) {
+				/* HDR not supported */
+				new_rate = IB_PATH_RECORD_RATE_300_GBS;
+			} else {
+				/* HDR is supported */
+				new_rate = IB_PATH_RECORD_RATE_600_GBS;
+			}
+		}
+		break;
 	default:
 		break;
 	}
diff --git a/opensm/osm_console.c b/opensm/osm_console.c
index 641bdcd5..669b91d5 100644
--- a/opensm/osm_console.c
+++ b/opensm/osm_console.c
@@ -730,6 +730,7 @@ typedef struct {
 	uint64_t ports_fdr;
 	uint64_t ports_edr;
 	uint64_t ports_hdr;
+	uint64_t ports_ndr;
 	uint64_t ports_unknown_speed;
 	port_report_t *unknown_speed_ports;
 	uint64_t ports_unenabled_speed;
@@ -996,6 +997,8 @@ static void portstatus_parse(char **p_last, osm_opensm_t * p_osm, FILE * out)
 		fprintf(out, "   %" PRIu64 " at 25.78125 Gbps\n", fs.ports_edr);
 	if (fs.ports_hdr)
 		fprintf(out, "   %" PRIu64 " at 53.125 Gbps\n", fs.ports_hdr);
+	if (fs.ports_ndr)
+		fprintf(out, "   %" PRIu64 " at 106.25 Gbps\n", fs.ports_ndr);
 
 	if (fs.ports_disabled + fs.ports_reduced_speed + fs.ports_reduced_width
 	    + fs.ports_unenabled_width + fs.ports_unenabled_speed
diff --git a/opensm/osm_link_mgr.c b/opensm/osm_link_mgr.c
index ca693753..a02be5b8 100644
--- a/opensm/osm_link_mgr.c
+++ b/opensm/osm_link_mgr.c
@@ -107,6 +107,7 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
 	ib_net32_t attr_mod, cap_mask;
 	boolean_t update_mkey = FALSE;
 	ib_net64_t m_key = 0;
+	ib_net16_t capability_mask2;
 	osm_port_t *p_port;
 
 	OSM_LOG_ENTER(sm->p_log);
@@ -196,12 +197,15 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
 	p_pi->state_info2 = 0x02;
 	ib_port_info_set_port_state(p_pi, port_state);
 
-	/* Determine ports' M_Key */
+	/* Determine ports' M_Key and CapabilityMask2 */
 	if (osm_node_get_type(p_node) == IB_NODE_TYPE_SWITCH &&
-	    osm_physp_get_port_num(p_physp) != 0)
+	    osm_physp_get_port_num(p_physp) != 0) {
 		m_key = ib_port_info_get_m_key(&physp0->port_info);
-	else
+		capability_mask2 = physp0->port_info.capability_mask2;
+	} else {
 		m_key = ib_port_info_get_m_key(p_pi);
+		capability_mask2 = p_pi->capability_mask2;
+	}
 
 	/* Check whether this is base port0 smsl handling only */
 	if (port_num == 0 && esp0 == FALSE) {
@@ -341,7 +345,7 @@ static int link_mgr_set_physp_pi(osm_sm_t * sm, IN osm_physp_t * p_physp,
 		 */
 		if (sm->p_subn->opt.force_link_width &&
 		    (sm->p_subn->opt.force_link_width < IB_LINK_WIDTH_ACTIVE_2X ||
-		     (p_pi->capability_mask2 &
+		     (capability_mask2 &
 		      IB_PORT_CAP2_IS_LINK_WIDTH_2X_SUPPORTED)) &&
 		    (sm->p_subn->opt.force_link_width != IB_LINK_WIDTH_SET_LWS ||
 		     p_pi->link_width_enabled != p_pi->link_width_supported)) {
diff --git a/opensm/osm_sa.c b/opensm/osm_sa.c
index ca793aa3..f090245c 100644
--- a/opensm/osm_sa.c
+++ b/opensm/osm_sa.c
@@ -1375,3 +1375,11 @@ _error:
 	fclose(file);
 	return ret;
 }
+
+uint8_t osm_sa_limit_rate(IN osm_sa_t *sa, IN const uint8_t rate)
+{
+	if (sa->p_subn->opt.max_rate_enum < rate)
+		return ib_path_get_reduced_rate(rate, sa->p_subn->opt.max_rate_enum);
+
+	return rate;
+}
diff --git a/opensm/osm_sa_mcmember_record.c b/opensm/osm_sa_mcmember_record.c
index 3a75a975..c839f176 100644
--- a/opensm/osm_sa_mcmember_record.c
+++ b/opensm/osm_sa_mcmember_record.c
@@ -775,8 +775,8 @@ static boolean_t mgrp_request_is_realizable(IN osm_sa_t * sa,
 			return FALSE;
 		}
 	}
-	if (sa->p_subn->opt.use_original_extended_sa_rates_only) {
-		new_rate = ib_path_rate_max_12xedr(rate);
+	if (sa->p_subn->opt.max_rate_enum < SA_RATE_MAX_ENUM) {
+		new_rate = osm_sa_limit_rate(sa, rate);
 		if (new_rate != rate) {
 			OSM_LOG(sa->p_log, OSM_LOG_VERBOSE,
 				"Rate decreased from %u to %u\n",
@@ -974,6 +974,7 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
 	ib_member_rec_t *p_recvd_mcmember_rec;
 	ib_member_rec_t mcmember_rec;
 	osm_mcm_alias_guid_t *p_mcm_alias_guid;
+	ib_net64_t prefix;
 
 	OSM_LOG_ENTER(sa->p_log);
 
@@ -981,6 +982,16 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
 	p_recvd_mcmember_rec =
 	    (ib_member_rec_t *) ib_sa_mad_get_payload_ptr(p_sa_mad);
 
+	if (OSM_LOG_IS_ACTIVE_V2(sa->p_log, OSM_LOG_DEBUG)) {
+		OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of record\n");
+		osm_dump_mc_record_v2(sa->p_log, p_recvd_mcmember_rec, FILE_ID, OSM_LOG_DEBUG);
+	}
+
+	/* Use ports actual subnet prefix */
+	prefix = p_recvd_mcmember_rec->port_gid.unicast.prefix;
+	if (prefix == IB_DEFAULT_SUBNET_PREFIX)
+		p_recvd_mcmember_rec->port_gid.unicast.prefix = sa->p_subn->opt.subnet_prefix;
+
 	mcmember_rec = *p_recvd_mcmember_rec;
 
 	/* Validate the subnet prefix in the PortGID */
@@ -1010,8 +1021,6 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
 				"Requester port GUID 0x%" PRIx64 "\n",
 				cl_ntoh64(osm_physp_get_port_guid(p_req_physp)));
 		}
-		OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of record\n");
-		osm_dump_mc_record_v2(sa->p_log, &mcmember_rec, FILE_ID, OSM_LOG_DEBUG);
 	}
 
 	p_mgrp = osm_get_mgrp_by_mgid(sa->p_subn, &p_recvd_mcmember_rec->mgid);
@@ -1048,6 +1057,8 @@ static void mcmr_rcv_leave_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
 			     &mcmember_rec);
 	CL_PLOCK_RELEASE(sa->p_lock);
 
+	/* Return response with same subnet prefix of the request */
+	mcmember_rec.port_gid.unicast.prefix = prefix;
 	mcmr_rcv_respond(sa, p_madw, &mcmember_rec);
 
 Exit:
@@ -1156,14 +1167,25 @@ static void mcmr_rcv_join_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
 	uint8_t is_new_group;	/* TRUE = there is a need to create a group */
 	uint8_t join_state;
 	boolean_t proxy;
+	ib_net64_t prefix;
 
 	OSM_LOG_ENTER(sa->p_log);
 
 	p_sa_mad = osm_madw_get_sa_mad_ptr(p_madw);
 	p_recvd_mcmember_rec = ib_sa_mad_get_payload_ptr(p_sa_mad);
 
+	if (OSM_LOG_IS_ACTIVE_V2(sa->p_log, OSM_LOG_DEBUG)) {
+		OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of incoming record\n");
+		osm_dump_mc_record_v2(sa->p_log, p_recvd_mcmember_rec, FILE_ID, OSM_LOG_DEBUG);
+	}
+
 	portguid = p_recvd_mcmember_rec->port_gid.unicast.interface_id;
 
+	/* Use ports actual subnet prefix */
+	prefix = p_recvd_mcmember_rec->port_gid.unicast.prefix;
+	if (prefix == IB_DEFAULT_SUBNET_PREFIX)
+		p_recvd_mcmember_rec->port_gid.unicast.prefix = sa->p_subn->opt.subnet_prefix;
+
 	mcmember_rec = *p_recvd_mcmember_rec;
 
 	/* Validate the subnet prefix in the PortGID */
@@ -1193,8 +1215,6 @@ static void mcmr_rcv_join_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
 				"Requester port GUID 0x%" PRIx64 "\n",
 				cl_ntoh64(osm_physp_get_port_guid(p_req_physp)));
 		}
-		OSM_LOG(sa->p_log, OSM_LOG_DEBUG, "Dump of incoming record\n");
-		osm_dump_mc_record_v2(sa->p_log, &mcmember_rec, FILE_ID, OSM_LOG_DEBUG);
 	}
 
 	/* make sure the requested port guid is known to the SM */
@@ -1422,6 +1442,9 @@ static void mcmr_rcv_join_mgrp(IN osm_sa_t * sa, IN osm_madw_t * p_madw)
 	/* Release the lock as we don't need it. */
 	CL_PLOCK_RELEASE(sa->p_lock);
 
+	/* Return response with same subnet prefix of the request */
+	mcmember_rec.port_gid.unicast.prefix = prefix;
+
 	if (OSM_LOG_IS_ACTIVE_V2(sa->p_log, OSM_LOG_DEBUG))
 		osm_dump_mc_record_v2(sa->p_log, &mcmember_rec, FILE_ID, OSM_LOG_DEBUG);
 
diff --git a/opensm/osm_sa_multipath_record.c b/opensm/osm_sa_multipath_record.c
index 0c4d94ed..501579a8 100644
--- a/opensm/osm_sa_multipath_record.c
+++ b/opensm/osm_sa_multipath_record.c
@@ -853,8 +853,8 @@ static void mpr_rcv_build_pr(IN osm_sa_t * sa,
 	ib_path_rec_set_sl(p_pr, p_parms->sl);
 	p_pr->mtu = (uint8_t) (p_parms->mtu | 0x80);
 	rate = p_parms->rate;
-	if (sa->p_subn->opt.use_original_extended_sa_rates_only) {
-		new_rate = ib_path_rate_max_12xedr(rate);
+	if (sa->p_subn->opt.max_rate_enum < SA_RATE_MAX_ENUM) {
+		new_rate = osm_sa_limit_rate(sa, rate);
 		if (new_rate != rate) {
 			OSM_LOG(sa->p_log, OSM_LOG_VERBOSE,
 				"Rate decreased from %u to %u\n",
diff --git a/opensm/osm_sa_path_record.c b/opensm/osm_sa_path_record.c
index bb3290f4..5b957534 100644
--- a/opensm/osm_sa_path_record.c
+++ b/opensm/osm_sa_path_record.c
@@ -921,8 +921,8 @@ static void pr_rcv_build_pr(IN osm_sa_t * sa,
 	ib_path_rec_set_qos_class(p_pr, 0);
 	p_pr->mtu = (uint8_t) (p_parms->mtu | 0x80);
 	rate = p_parms->rate;
-	if (sa->p_subn->opt.use_original_extended_sa_rates_only) {
-		new_rate = ib_path_rate_max_12xedr(rate);
+	if (sa->p_subn->opt.max_rate_enum < SA_RATE_MAX_ENUM) {
+		new_rate = osm_sa_limit_rate(sa, rate);
 		if (new_rate != rate) {
 			OSM_LOG(sa->p_log, OSM_LOG_VERBOSE,
 				"Rate decreased from %u to %u\n",
diff --git a/opensm/osm_subnet.c b/opensm/osm_subnet.c
index b8473fc5..6b3c18c0 100644
--- a/opensm/osm_subnet.c
+++ b/opensm/osm_subnet.c
@@ -851,6 +851,7 @@ static const opt_rec_t opt_tbl[] = {
 	{ "ipoib_mcgroup_creation_validation", OPT_OFFSET(ipoib_mcgroup_creation_validation), opts_parse_boolean, NULL, 1 },
 	{ "mcgroup_join_validation", OPT_OFFSET(mcgroup_join_validation), opts_parse_boolean, NULL, 1 },
 	{ "use_original_extended_sa_rates_only", OPT_OFFSET(use_original_extended_sa_rates_only), opts_parse_boolean, NULL, 1 },
+	{ "max_rate_enum", OPT_OFFSET(max_rate_enum), opts_parse_uint8, NULL, 1},
 	{ "use_optimized_slvl", OPT_OFFSET(use_optimized_slvl), opts_parse_boolean, NULL, 1 },
 	{ "fsync_high_avail_files", OPT_OFFSET(fsync_high_avail_files), opts_parse_boolean, NULL, 1 },
 #ifdef ENABLE_OSM_PERF_MGR
@@ -1686,6 +1687,7 @@ void osm_subn_set_default_opt(IN osm_subn_opt_t * p_opt)
 	p_opt->cc_cct.entries_len = 0;
 	p_opt->cc_cct.input_str = NULL;
 	p_opt->quasi_ftree_indexing = FALSE;
+	p_opt->max_rate_enum = SA_RATE_MAX_ENUM;
 }
 
 static char *clean_val(char *val)
@@ -2064,7 +2066,7 @@ int osm_subn_verify_config(IN osm_subn_opt_t * p_opts)
 	}
 
 	if ((IB_LINK_SPEED_EXT_SET_LSES < p_opts->force_link_speed_ext) ||
-	    (p_opts->force_link_speed_ext > IB_LINK_SPEED_EXT_14_25_OR_50 &&
+	    (p_opts->force_link_speed_ext > IB_LINK_SPEED_EXT_MAX_VALUE &&
 	     p_opts->force_link_speed_ext < IB_LINK_SPEED_EXT_DISABLE)) {
 		log_report(" Invalid Cached Option Value:force_link_speed_ext = %u:"
 			   "Using Default:%u\n", p_opts->force_link_speed_ext,
@@ -2201,6 +2203,28 @@ int osm_subn_verify_config(IN osm_subn_opt_t * p_opts)
 		}
 	}
 
+	if (p_opts->use_original_extended_sa_rates_only &&
+	    p_opts->max_rate_enum > IB_PATH_RECORD_RATE_300_GBS) {
+		if (p_opts->max_rate_enum != SA_RATE_MAX_ENUM)
+			log_report(" Warning:"
+				   " use_original_extended_sa_rates_only"
+				   " defines a rate limit lower"
+				   " than max_rate_enum.\n\t "
+				   " Setting max_rate_enum to %d\n",
+				   IB_PATH_RECORD_RATE_300_GBS);
+
+		p_opts->max_rate_enum = IB_PATH_RECORD_RATE_300_GBS;
+	}
+
+	if (p_opts->max_rate_enum < IB_MIN_RATE ||
+	    (p_opts->max_rate_enum > IB_MAX_RATE &&
+	     p_opts->max_rate_enum != SA_RATE_MAX_ENUM)) {
+		log_report("Illegal max_rate_enum %u, setting to default "
+			   "value (%u), support all rates\n",
+			   p_opts->max_rate_enum, SA_RATE_MAX_ENUM);
+		p_opts->max_rate_enum = SA_RATE_MAX_ENUM;
+	}
+
 	return 0;
 }
 
@@ -2430,6 +2454,14 @@ void osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opts)
 		"#    5: 14.0625 Gbps or 53.125 Gbps\n"
 		"#    6: 25.78125 Gbps or 53.125 Gbps\n"
 		"#    7: 14.0625 Gbps, 25.78125 Gbps or 53.125 Gbps\n"
+		"#    8: 106.25 Gbps\n"
+		"#    9: 14.0625 Gbps or 106.25 Gbps\n"
+		"#    10: 25.78125 Gbps or 106.25 Gbps\n"
+		"#    11: 14.0625 Gbps or 25.78125 Gbps or 106.25 Gbps\n"
+		"#    12: 53.125 Gbps or 106.25 Gbps\n"
+		"#    13: 14.0625 Gbps or 53.125 Gbps or 106.25 Gbps\n"
+		"#    14: 25.78125 Gbps or 53.125 Gbps or 106.25 Gbps\n"
+		"#    15: 14.0625 Gbps, 25.78125 Gbps or 53.125 Gbps or 106.25 Gbps\n"
 		"#    30: Disable extended link speeds\n"
 		"#    Default 31: set to PortInfo:LinkSpeedExtSupported\n"
 		"force_link_speed_ext %u\n\n"
@@ -2787,7 +2819,16 @@ void osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opts)
 		"# Set to TRUE for subnets with old kernels/drivers that don't understand\n"
 		"# the new SA rates for 2x link width and/or HDR link speed (19-22)\n"
 		"# default is FALSE\n"
+		"# Notice: use_original_extended_sa_rates_only is deprecated by max_rate_enum!\n"
+		"# Use max_rate_enum 18 instead.\n"
 		"use_original_extended_sa_rates_only %s\n\n"
+		"# Enumeration of the maximal rate subnet supports. Option is needed for\n"
+		"# subnets with old kernels/drivers that don't understand new SA rates.\n"
+		"# For example:"
+		"# 18: Rate of 300Gbps - support speeds up to 12xEDR\n"
+		"# 22: Rate of 600Gbps - support speeds up to HDR\n"
+		"# For farther reference refer to IB specification chapter 15.2.5.16.1\n"
+		"max_rate_enum %u\n\n"
 		"# Use Optimized SLtoVLMapping programming if supported by device\n"
 		"use_optimized_slvl %s\n\n"
 		"# Sync in memory files used for high availability with storage\n"
@@ -2799,6 +2840,7 @@ void osm_subn_output_conf(FILE *out, IN osm_subn_opt_t * p_opts)
 		p_opts->ipoib_mcgroup_creation_validation ? "TRUE" : "FALSE",
 		p_opts->mcgroup_join_validation ? "TRUE" : "FALSE",
 		p_opts->use_original_extended_sa_rates_only ? "TRUE" : "FALSE",
+		p_opts->max_rate_enum,
 		p_opts->use_optimized_slvl ? "TRUE" : "FALSE",
 		p_opts->fsync_high_avail_files ? "TRUE" : "FALSE");
 

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/2c/3e1a0d12aebf79ad3191d402cf60b66ec142a6.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/2e/42e491c684e857ac48392faa3a58ea90b2f2fb.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/38/51595b52efa8b0e24a86a99aa0bf704c511fa3.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/7f/d2f22cac789f15a13b6704caf14f2259d98aa2.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/libopensm.so.9.2.0
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/libosmcomp.so.5.0.1
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libopensm.so -> libopensm.so.9.2.0
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libopensm.so.9 -> libopensm.so.9.2.0
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libosmcomp.so -> libosmcomp.so.5.0.1
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libosmcomp.so.5 -> libosmcomp.so.5.0.1

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/debug/.build-id/26/6eaf47c8f25ce789578a099ab416dedbbf83af.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/3e/a876ea6f0eb1ba52a548b5d6603b61e0d91303.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/6d/65ab6ed8a8b4958c273c0d90a381df4151d1c4.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/70/2a14ed8cc870cf79aa7f8fd0c9d51ea7611727.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/libopensm.so.9.1.0
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/libosmcomp.so.5.0.0
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libopensm.so -> libopensm.so.9.1.0
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libopensm.so.9 -> libopensm.so.9.1.0
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libosmcomp.so -> libosmcomp.so.5.0.0
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/libosmcomp.so.5 -> libosmcomp.so.5.0.0

No differences were encountered between the control files of package libopensm-dev

No differences were encountered between the control files of package libopensm9

Control files of package libopensm9-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 3ea876ea6f0eb1ba52a548b5d6603b61e0d91303 7fd2f22cac789f15a13b6704caf14f2259d98aa2

No differences were encountered between the control files of package libosmcomp5

No differences were encountered between the control files of package libosmcomp5-dbgsym

No differences were encountered between the control files of package libosmvendor5

Control files of package libosmvendor5-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 6d65ab6ed8a8b4958c273c0d90a381df4151d1c4 2e42e491c684e857ac48392faa3a58ea90b2f2fb

No differences were encountered between the control files of package opensm

Control files of package opensm-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 266eaf47c8f25ce789578a099ab416dedbbf83af 702a14ed8cc870cf79aa7f8fd0c9d51ea7611727 2c3e1a0d12aebf79ad3191d402cf60b66ec142a6 3851595b52efa8b0e24a86a99aa0bf704c511fa3

No differences were encountered between the control files of package opensm-doc

More details

Full run details