import opensm-3.3.22-2.el8

This commit is contained in:
CentOS Sources 2019-08-01 17:46:35 -04:00 committed by Stepan Oksanichenko
commit 7a925f44ff
13 changed files with 1520 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/opensm-3.3.22.tar.gz

1
.opensm.metadata Normal file
View File

@ -0,0 +1 @@
3473adeb0079c9dbb2a22de746d27a21309891a0 SOURCES/opensm-3.3.22.tar.gz

View File

@ -0,0 +1,32 @@
From 992687f9ee00d016b450c1aed5b6c8558023881e Mon Sep 17 00:00:00 2001
From: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Thu, 18 Apr 2019 09:09:56 +0200
Subject: [PATCH 1/8] osm_opensm.c: Fix use of enum as NULL pointer in
osm_opensm_init_finish
Fixes this warning:
osm_opensm.c:543:31: warning: expression which evaluates to zero treated as a null pointer constant of type 'struct osm_routing_engine *' [-Wnon-literal-null-conversion]
p_osm->routing_engine_used = OSM_ROUTING_ENGINE_TYPE_NONE;
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Signed-off-by: Hal Rosenstock <hal@mellanox.com>
---
opensm/osm_opensm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/opensm/osm_opensm.c b/opensm/osm_opensm.c
index d43fe825..da493c7a 100644
--- a/opensm/osm_opensm.c
+++ b/opensm/osm_opensm.c
@@ -540,7 +540,7 @@ ib_api_status_t osm_opensm_init_finish(IN osm_opensm_t * p_osm,
setup_routing_engines(p_osm, p_opt->routing_engine_names);
- p_osm->routing_engine_used = OSM_ROUTING_ENGINE_TYPE_NONE;
+ p_osm->routing_engine_used = NULL;
p_osm->node_name_map = open_node_name_map(p_opt->node_name_map_name);
--
2.20.1

View File

@ -0,0 +1,34 @@
From 3bcefae1376d29dc10881b55701cf0aab71ce380 Mon Sep 17 00:00:00 2001
From: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Thu, 18 Apr 2019 09:14:49 +0200
Subject: [PATCH 2/8] osm_ucast_ftree.c: Fix clang warning about empty loop
osm_ucast_ftree.c:3861:52: warning: for loop has empty body [-Wempty-body]
&& (!p_hca->up_port_groups[i]->is_cn); i++) ;
^
osm_ucast_ftree.c:3861:52: note: put the semicolon on a separate line to silence this warning
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Signed-off-by: Hal Rosenstock <hal@mellanox.com>
---
opensm/osm_ucast_ftree.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/opensm/osm_ucast_ftree.c b/opensm/osm_ucast_ftree.c
index 7fa78efa..106ef6bf 100644
--- a/opensm/osm_ucast_ftree.c
+++ b/opensm/osm_ucast_ftree.c
@@ -3866,7 +3866,9 @@ static void fabric_set_leaf_rank(IN ftree_fabric_t * p_ftree)
hca_get_guid_ho(p_hca));
for (i = 0; (i < p_hca->up_port_groups_num)
- && (!p_hca->up_port_groups[i]->is_cn); i++) ;
+ && (!p_hca->up_port_groups[i]->is_cn); i++)
+ ;
+
CL_ASSERT(i < p_hca->up_port_groups_num);
CL_ASSERT(p_hca->up_port_groups[i]->remote_node_type ==
IB_NODE_TYPE_SWITCH);
--
2.20.1

View File

@ -0,0 +1,57 @@
From 393f6651c163058103d6e895dd027b32c4aa509c Mon Sep 17 00:00:00 2001
From: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Thu, 18 Apr 2019 09:10:48 +0200
Subject: [PATCH 3/8] osm_[port ucast_ftree].c: Remove unused static functions
Clears defined but unused warning from clang
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Signed-off-by: Hal Rosenstock <hal@mellanox.com>
---
opensm/osm_port.c | 2 ++
opensm/osm_ucast_ftree.c | 2 ++
2 files changed, 4 insertions(+)
diff --git a/opensm/osm_port.c b/opensm/osm_port.c
index 1246edf9..7b1d58f9 100644
--- a/opensm/osm_port.c
+++ b/opensm/osm_port.c
@@ -303,6 +303,7 @@ static inline uint64_t ptr_to_key(void const *p)
return k;
}
+#if 0
static inline void *key_to_ptr(uint64_t k)
{
void *p = 0;
@@ -310,6 +311,7 @@ static inline void *key_to_ptr(uint64_t k)
memcpy(&p, &k, sizeof(void *));
return p;
}
+#endif
/**********************************************************************
Traverse the fabric from the SM node following the DR path given and
diff --git a/opensm/osm_ucast_ftree.c b/opensm/osm_ucast_ftree.c
index 106ef6bf..a4b32e5c 100644
--- a/opensm/osm_ucast_ftree.c
+++ b/opensm/osm_ucast_ftree.c
@@ -318,6 +318,7 @@ static inline ftree_tuple_key_t tuple_to_key(IN ftree_tuple_t tuple)
return key;
}
+#if 0
/***************************************************/
static inline void tuple_from_key(IN ftree_tuple_t tuple,
@@ -325,6 +326,7 @@ static inline void tuple_from_key(IN ftree_tuple_t tuple,
{
memcpy(tuple, &key, FTREE_TUPLE_LEN);
}
+#endif
/***************************************************
**
--
2.20.1

View File

@ -0,0 +1,885 @@
From 70722b4886f644170326b8be8d571bf058d955dc Mon Sep 17 00:00:00 2001
From: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Wed, 24 Apr 2019 07:47:09 +0200
Subject: [PATCH 8/8] ib_types: Drop packed attribute where unnecessary
For many of the IBA structures, the packed attribute has no effect.
List of impacted struct and checks were done this way:
Before applying this patch
- Generate a single file with all the IBA structs
(echo -e "#include <iba/ib_types.h>\n#include <stdio.h>\n\n\n"; for struct in $(git grep '^} PACK_SUFFIX' -- include/iba/ib_types.h | awk '{ print $NF }' | sed -e 's/;//'); do echo -e "$struct a_$struct;"; done) > ib_sizes.c
- Compile for both 32 and 64b
gcc -o ib_sizes.64.o -g3 -c ib_sizes.c -I./include/
gcc -o ib_sizes.32.o -g3 -m32 -c ib_sizes.c -I./include/
- Generate structure data using pahole
pahole ib_sizes.64.o > sizes.64.org
pahole ib_sizes.32.o > sizes.32.org
After applying this patch:
- Compile for both 32 and 64b
gcc -o ib_sizes.64.o -g3 -c ib_sizes.c -I./include/
gcc -o ib_sizes.32.o -g3 -m32 -c ib_sizes.c -I./include/
- Generate structure data using pahole
pahole ib_sizes.64.o > sizes.64.new
pahole ib_sizes.32.o > sizes.32.new
Diff pahole results:
diff sizes.64.org sizes.64.new
diff sizes.32.org sizes.32.new
As the patch remove effect-less attribute, no diff shows up
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Signed-off-by: Hal Rosenstock <hal@mellanox.com>
---
include/iba/ib_types.h | 214 +++++++++++------------------------------
1 file changed, 55 insertions(+), 159 deletions(-)
diff --git a/include/iba/ib_types.h b/include/iba/ib_types.h
index fb1c3f9c..025f9714 100644
--- a/include/iba/ib_types.h
+++ b/include/iba/ib_types.h
@@ -2256,25 +2256,23 @@ static inline boolean_t OSM_API ib_pkey_is_invalid(IN const ib_net16_t pkey)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef union _ib_gid {
uint8_t raw[16];
struct _ib_gid_unicast {
ib_gid_prefix_t prefix;
ib_net64_t interface_id;
- } PACK_SUFFIX unicast;
+ } unicast;
struct _ib_gid_multicast {
uint8_t header[2];
uint8_t raw_group_id[14];
- } PACK_SUFFIX multicast;
+ } multicast;
struct _ib_gid_ip_multicast {
uint8_t header[2];
ib_net16_t signature;
ib_net16_t p_key;
uint8_t group_id[10];
- } PACK_SUFFIX ip_multicast;
-} PACK_SUFFIX ib_gid_t;
-#include <complib/cl_packoff.h>
+ } ip_multicast;
+} ib_gid_t;
/*
* FIELDS
* raw
@@ -2500,7 +2498,6 @@ ib_gid_get_guid(IN const ib_gid_t * const p_gid)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_path_rec {
ib_net64_t service_id;
ib_gid_t dgid;
@@ -2517,8 +2514,7 @@ typedef struct _ib_path_rec {
uint8_t pkt_life;
uint8_t preference;
uint8_t resv2[6];
-} PACK_SUFFIX ib_path_rec_t;
-#include <complib/cl_packoff.h>
+} ib_path_rec_t;
/*
* FIELDS
* service_id
@@ -3488,7 +3484,6 @@ ib_path_rec_hop_limit(IN const ib_path_rec_t * const p_rec)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_class_port_info {
uint8_t base_ver;
uint8_t class_ver;
@@ -3506,8 +3501,7 @@ typedef struct _ib_class_port_info {
ib_net16_t trap_pkey;
ib_net32_t trap_hop_qp;
ib_net32_t trap_qkey;
-} PACK_SUFFIX ib_class_port_info_t;
-#include <complib/cl_packoff.h>
+} ib_class_port_info_t;
/*
* FIELDS
* base_ver
@@ -3807,7 +3801,6 @@ ib_sminfo_get_state(IN const ib_sm_info_t * const p_smi)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_mad {
uint8_t base_ver;
uint8_t mgmt_class;
@@ -3819,8 +3812,7 @@ typedef struct _ib_mad {
ib_net16_t attr_id;
ib_net16_t resv;
ib_net32_t attr_mod;
-} PACK_SUFFIX ib_mad_t;
-#include <complib/cl_packoff.h>
+} ib_mad_t;
/*
* FIELDS
* base_ver
@@ -4128,7 +4120,6 @@ ib_rmpp_get_resp_time(IN const ib_rmpp_mad_t * const p_rmpp_mad)
* SYNOPSIS
*/
#define IB_SMP_DATA_SIZE 64
-#include <complib/cl_packon.h>
typedef struct _ib_smp {
uint8_t base_ver;
uint8_t mgmt_class;
@@ -4148,8 +4139,7 @@ typedef struct _ib_smp {
uint8_t data[IB_SMP_DATA_SIZE];
uint8_t initial_path[IB_SUBNET_PATH_HOPS_MAX];
uint8_t return_path[IB_SUBNET_PATH_HOPS_MAX];
-} PACK_SUFFIX ib_smp_t;
-#include <complib/cl_packoff.h>
+} ib_smp_t;
/*
* FIELDS
* base_ver
@@ -4587,14 +4577,12 @@ ib_node_info_get_vendor_id(IN const ib_node_info_t * const p_ni)
#define IB_NODE_DESCRIPTION_SIZE 64
-#include <complib/cl_packon.h>
typedef struct _ib_node_desc {
// Node String is an array of UTF-8 characters
// that describe the node in text format
// Note that this string is NOT NULL TERMINATED!
uint8_t description[IB_NODE_DESCRIPTION_SIZE];
-} PACK_SUFFIX ib_node_desc_t;
-#include <complib/cl_packoff.h>
+} ib_node_desc_t;
#include <complib/cl_packon.h>
typedef struct _ib_node_record_t {
@@ -4615,7 +4603,6 @@ typedef struct _ib_node_record_t {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_port_info {
ib_net64_t m_key;
ib_net64_t subnet_prefix;
@@ -4652,8 +4639,7 @@ typedef struct _ib_port_info {
ib_net16_t capability_mask2;
uint8_t link_speed_ext; /* LinkSpeedExtActive and LinkSpeedExtSupported */
uint8_t link_speed_ext_enabled; /* reserv(3b), LinkSpeedExtEnabled(5b) */
-} PACK_SUFFIX ib_port_info_t;
-#include <complib/cl_packoff.h>
+} ib_port_info_t;
/************/
#define IB_PORT_STATE_MASK 0x0F
@@ -4726,7 +4712,6 @@ typedef struct _ib_port_info {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_port_info_ext {
ib_net32_t cap_mask;
ib_net16_t fec_mode_active;
@@ -4737,8 +4722,7 @@ typedef struct _ib_port_info_ext {
ib_net16_t hdr_fec_mode_sup;
ib_net16_t hdr_fec_mode_enable;
uint8_t reserved[46];
-} PACK_SUFFIX ib_port_info_ext_t;
-#include <complib/cl_packoff.h>
+} ib_port_info_ext_t;
/************/
#define IB_PORT_EXT_NO_FEC_MODE_ACTIVE 0
@@ -6563,7 +6547,6 @@ static inline uint8_t OSM_API ib_get_highest_link_width(IN const uint8_t widths)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_mlnx_ext_port_info {
uint8_t resvd1[3];
uint8_t state_change_enable;
@@ -6574,13 +6557,11 @@ typedef struct _ib_mlnx_ext_port_info {
uint8_t resvd4[3];
uint8_t link_speed_active;
uint8_t resvd5[48];
-} PACK_SUFFIX ib_mlnx_ext_port_info_t;
-#include <complib/cl_packoff.h>
+} ib_mlnx_ext_port_info_t;
/************/
typedef uint8_t ib_svc_name_t[64];
-#include <complib/cl_packon.h>
typedef struct _ib_service_record {
ib_net64_t service_id;
ib_gid_t service_gid;
@@ -6593,8 +6574,7 @@ typedef struct _ib_service_record {
ib_net16_t service_data16[8];
ib_net32_t service_data32[4];
ib_net64_t service_data64[2];
-} PACK_SUFFIX ib_service_record_t;
-#include <complib/cl_packoff.h>
+} ib_service_record_t;
#include <complib/cl_packon.h>
typedef struct _ib_portinfo_record {
@@ -6606,24 +6586,20 @@ typedef struct _ib_portinfo_record {
} PACK_SUFFIX ib_portinfo_record_t;
#include <complib/cl_packoff.h>
-#include <complib/cl_packon.h>
typedef struct _ib_portinfoext_record {
ib_net16_t lid;
uint8_t port_num;
uint8_t options;
ib_port_info_ext_t port_info_ext;
-} PACK_SUFFIX ib_portinfoext_record_t;
-#include <complib/cl_packoff.h>
+} ib_portinfoext_record_t;
-#include <complib/cl_packon.h>
typedef struct _ib_link_record {
ib_net16_t from_lid;
uint8_t from_port_num;
uint8_t to_port_num;
ib_net16_t to_lid;
uint8_t pad[2];
-} PACK_SUFFIX ib_link_record_t;
-#include <complib/cl_packoff.h>
+} ib_link_record_t;
#include <complib/cl_packon.h>
typedef struct _ib_sminfo_record {
@@ -6643,14 +6619,12 @@ typedef struct _ib_sminfo_record {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_lft_record {
ib_net16_t lid;
ib_net16_t block_num;
uint32_t resv0;
uint8_t lft[64];
-} PACK_SUFFIX ib_lft_record_t;
-#include <complib/cl_packoff.h>
+} ib_lft_record_t;
/************/
/****s* IBA Base: Types/ib_mft_record_t
@@ -6662,14 +6636,12 @@ typedef struct _ib_lft_record {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_mft_record {
ib_net16_t lid;
ib_net16_t position_block_num;
uint32_t resv0;
ib_net16_t mft[IB_MCAST_BLOCK_SIZE];
-} PACK_SUFFIX ib_mft_record_t;
-#include <complib/cl_packoff.h>
+} ib_mft_record_t;
/************/
/****s* IBA Base: Types/ib_switch_info_t
@@ -6681,7 +6653,6 @@ typedef struct _ib_mft_record {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_switch_info {
ib_net16_t lin_cap;
ib_net16_t rand_cap;
@@ -6696,17 +6667,14 @@ typedef struct _ib_switch_info {
uint8_t flags;
uint8_t resvd;
ib_net16_t mcast_top;
-} PACK_SUFFIX ib_switch_info_t;
-#include <complib/cl_packoff.h>
+} ib_switch_info_t;
/************/
-#include <complib/cl_packon.h>
typedef struct _ib_switch_info_record {
ib_net16_t lid;
uint16_t resv0;
ib_switch_info_t switch_info;
-} PACK_SUFFIX ib_switch_info_record_t;
-#include <complib/cl_packoff.h>
+} ib_switch_info_record_t;
#define IB_SWITCH_PSC 0x04
@@ -6895,26 +6863,21 @@ ib_switch_info_is_enhanced_port0(IN const ib_switch_info_t * const p_si)
*/
#define GUID_TABLE_MAX_ENTRIES 8
-#include <complib/cl_packon.h>
typedef struct _ib_guid_info {
ib_net64_t guid[GUID_TABLE_MAX_ENTRIES];
-} PACK_SUFFIX ib_guid_info_t;
-#include <complib/cl_packoff.h>
+} ib_guid_info_t;
/************/
-#include <complib/cl_packon.h>
typedef struct _ib_guidinfo_record {
ib_net16_t lid;
uint8_t block_num;
uint8_t resv;
uint32_t reserved;
ib_guid_info_t guid_info;
-} PACK_SUFFIX ib_guidinfo_record_t;
-#include <complib/cl_packoff.h>
+} ib_guidinfo_record_t;
#define IB_MULTIPATH_MAX_GIDS 11 /* Support max that can fit into first MAD (for now) */
-#include <complib/cl_packon.h>
typedef struct _ib_multipath_rec_t {
ib_net32_t hop_flow_raw;
uint8_t tclass;
@@ -6930,8 +6893,7 @@ typedef struct _ib_multipath_rec_t {
uint8_t dgid_count;
uint8_t service_id_56lsb[7];
ib_gid_t gids[IB_MULTIPATH_MAX_GIDS];
-} PACK_SUFFIX ib_multipath_rec_t;
-#include <complib/cl_packoff.h>
+} ib_multipath_rec_t;
/*
* FIELDS
* hop_flow_raw
@@ -7391,11 +7353,9 @@ ib_multipath_rec_service_id(IN const ib_multipath_rec_t * const p_rec)
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_pkey_table {
ib_net16_t pkey_entry[IB_NUM_PKEY_ELEMENTS_IN_BLOCK];
-} PACK_SUFFIX ib_pkey_table_t;
-#include <complib/cl_packoff.h>
+} ib_pkey_table_t;
/************/
/****s* IBA Base: Types/ib_pkey_table_record_t
@@ -7407,7 +7367,6 @@ typedef struct _ib_pkey_table {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_pkey_table_record {
ib_net16_t lid; // for CA: lid of port, for switch lid of port 0
ib_net16_t block_num;
@@ -7415,8 +7374,7 @@ typedef struct _ib_pkey_table_record {
uint8_t reserved1;
uint16_t reserved2;
ib_pkey_table_t pkey_tbl;
-} PACK_SUFFIX ib_pkey_table_record_t;
-#include <complib/cl_packoff.h>
+} ib_pkey_table_record_t;
/************/
#define IB_DROP_VL 15
@@ -7430,11 +7388,9 @@ typedef struct _ib_pkey_table_record {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_slvl_table {
uint8_t raw_vl_by_sl[IB_MAX_NUM_VLS / 2];
-} PACK_SUFFIX ib_slvl_table_t;
-#include <complib/cl_packoff.h>
+} ib_slvl_table_t;
/************/
/****s* IBA Base: Types/ib_slvl_table_record_t
@@ -7446,15 +7402,13 @@ typedef struct _ib_slvl_table {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_slvl_table_record {
ib_net16_t lid; // for CA: lid of port, for switch lid of port 0
uint8_t in_port_num; // reserved for CAs
uint8_t out_port_num; // reserved for CAs
uint32_t resv;
ib_slvl_table_t slvl_tbl;
-} PACK_SUFFIX ib_slvl_table_record_t;
-#include <complib/cl_packoff.h>
+} ib_slvl_table_record_t;
/************/
/****f* IBA Base: Types/ib_slvl_table_set
@@ -7553,12 +7507,10 @@ ib_slvl_table_get(IN const ib_slvl_table_t * p_slvl_tbl, IN uint8_t sl_index)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_vl_arb_element {
uint8_t vl;
uint8_t weight;
-} PACK_SUFFIX ib_vl_arb_element_t;
-#include <complib/cl_packoff.h>
+} ib_vl_arb_element_t;
/************/
#define IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK 32
@@ -7572,11 +7524,9 @@ typedef struct _ib_vl_arb_element {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_vl_arb_table {
ib_vl_arb_element_t vl_entry[IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK];
-} PACK_SUFFIX ib_vl_arb_table_t;
-#include <complib/cl_packoff.h>
+} ib_vl_arb_table_t;
/************/
/****s* IBA Base: Types/ib_vl_arb_table_record_t
@@ -7588,21 +7538,18 @@ typedef struct _ib_vl_arb_table {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_vl_arb_table_record {
ib_net16_t lid; // for CA: lid of port, for switch lid of port 0
uint8_t port_num;
uint8_t block_num;
uint32_t reserved;
ib_vl_arb_table_t vl_arb_tbl;
-} PACK_SUFFIX ib_vl_arb_table_record_t;
-#include <complib/cl_packoff.h>
+} ib_vl_arb_table_record_t;
/************/
/*
* Global route header information received with unreliable datagram messages
*/
-#include <complib/cl_packon.h>
typedef struct _ib_grh {
ib_net32_t ver_class_flow;
ib_net16_t resv1;
@@ -7610,8 +7557,7 @@ typedef struct _ib_grh {
uint8_t hop_limit;
ib_gid_t src_gid;
ib_gid_t dest_gid;
-} PACK_SUFFIX ib_grh_t;
-#include <complib/cl_packoff.h>
+} ib_grh_t;
/****f* IBA Base: Types/ib_grh_get_ver_class_flow
* NAME
@@ -7719,7 +7665,6 @@ ib_grh_set_ver_class_flow(IN const uint8_t ver,
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_member_rec {
ib_gid_t mgid;
ib_gid_t port_gid;
@@ -7735,8 +7680,7 @@ typedef struct _ib_member_rec {
uint8_t proxy_join:1;
uint8_t reserved[2];
uint8_t pad[4];
-} PACK_SUFFIX ib_member_rec_t;
-#include <complib/cl_packoff.h>
+} ib_member_rec_t;
/*
* FIELDS
* mgid
@@ -8599,14 +8543,12 @@ typedef struct _ib_inform_info_record {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_perfmgt_mad {
ib_mad_t header;
uint8_t resv[40];
#define IB_PM_DATA_SIZE 192
uint8_t data[IB_PM_DATA_SIZE];
-} PACK_SUFFIX ib_perfmgt_mad_t;
-#include <complib/cl_packoff.h>
+} ib_perfmgt_mad_t;
/*
* FIELDS
* header
@@ -8632,7 +8574,6 @@ typedef struct _ib_perfmgt_mad {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_port_counters {
uint8_t reserved;
uint8_t port_select;
@@ -8655,8 +8596,7 @@ typedef struct _ib_port_counters {
ib_net32_t xmit_pkts;
ib_net32_t rcv_pkts;
ib_net32_t xmit_wait;
-} PACK_SUFFIX ib_port_counters_t;
-#include <complib/cl_packoff.h>
+} ib_port_counters_t;
#define PC_LINK_INT(integ_buf_over) ((integ_buf_over & 0xF0) >> 4)
#define PC_BUF_OVERRUN(integ_buf_over) (integ_buf_over & 0x0F)
@@ -8670,7 +8610,6 @@ typedef struct _ib_port_counters {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_port_counters_ext {
uint8_t reserved;
uint8_t port_select;
@@ -8698,8 +8637,7 @@ typedef struct _ib_port_counters_ext {
ib_net64_t vl15_dropped;
ib_net64_t xmit_wait;
ib_net64_t qp1_dropped;
-} PACK_SUFFIX ib_port_counters_ext_t;
-#include <complib/cl_packoff.h>
+} ib_port_counters_ext_t;
/****s* IBA Base: Types/ib_port_samples_control
* NAME
@@ -8767,7 +8705,6 @@ typedef struct _ib_port_samples_control {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_port_samples_result {
ib_net16_t tag;
ib_net16_t sample_status; /* 14 bits res : 2 bits sample_status */
@@ -8786,8 +8723,7 @@ typedef struct _ib_port_samples_result {
ib_net32_t counter12;
ib_net32_t counter13;
ib_net32_t counter14;
-} PACK_SUFFIX ib_port_samples_result_t;
-#include <complib/cl_packoff.h>
+} ib_port_samples_result_t;
/****s* IBA Base: Types/ib_port_xmit_data_sl
* NAME
@@ -8798,15 +8734,13 @@ typedef struct _ib_port_samples_result {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_port_xmit_data_sl {
uint8_t reserved;
uint8_t port_select;
ib_net16_t counter_select;
ib_net32_t port_xmit_data_sl[16];
uint8_t resv[124];
-} PACK_SUFFIX ib_port_xmit_data_sl_t;
-#include <complib/cl_packoff.h>
+} ib_port_xmit_data_sl_t;
/****s* IBA Base: Types/ib_port_rcv_data_sl
* NAME
@@ -8817,15 +8751,13 @@ typedef struct _ib_port_xmit_data_sl {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_port_rcv_data_sl {
uint8_t reserved;
uint8_t port_select;
ib_net16_t counter_select;
ib_net32_t port_rcv_data_sl[16];
uint8_t resv[124];
-} PACK_SUFFIX ib_port_rcv_data_sl_t;
-#include <complib/cl_packoff.h>
+} ib_port_rcv_data_sl_t;
/****d* IBA Base: Types/DM_SVC_NAME
* NAME
@@ -8850,14 +8782,12 @@ typedef struct _ib_port_rcv_data_sl {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_dm_mad {
ib_mad_t header;
uint8_t resv[40];
#define IB_DM_DATA_SIZE 192
uint8_t data[IB_DM_DATA_SIZE];
-} PACK_SUFFIX ib_dm_mad_t;
-#include <complib/cl_packoff.h>
+} ib_dm_mad_t;
/*
* FIELDS
* header
@@ -8883,7 +8813,6 @@ typedef struct _ib_dm_mad {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_iou_info {
ib_net16_t change_id;
uint8_t max_controllers;
@@ -8894,8 +8823,7 @@ typedef struct _ib_iou_info {
#define IOC_INSTALLED 0x1
// Reserved values 0x02-0xE
#define SLOT_DOES_NOT_EXIST 0xF
-} PACK_SUFFIX ib_iou_info_t;
-#include <complib/cl_packoff.h>
+} ib_iou_info_t;
/*
* FIELDS
* change_id
@@ -9023,7 +8951,6 @@ ioc_at_slot(IN const ib_iou_info_t * const p_iou_info, IN uint8_t slot)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_ioc_profile {
ib_net64_t ioc_guid;
ib_net32_t vend_id;
@@ -9057,8 +8984,7 @@ typedef struct _ib_ioc_profile {
uint8_t resv6[9];
#define CTRL_ID_STRING_LEN 64
char id_string[CTRL_ID_STRING_LEN];
-} PACK_SUFFIX ib_ioc_profile_t;
-#include <complib/cl_packoff.h>
+} ib_ioc_profile_t;
/*
* FIELDS
* ioc_guid
@@ -9142,13 +9068,11 @@ ib_ioc_profile_set_vend_id(IN ib_ioc_profile_t * const p_ioc_profile,
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_svc_entry {
#define MAX_SVC_ENTRY_NAME_LEN 40
char name[MAX_SVC_ENTRY_NAME_LEN];
ib_net64_t id;
-} PACK_SUFFIX ib_svc_entry_t;
-#include <complib/cl_packoff.h>
+} ib_svc_entry_t;
/*
* FIELDS
* name
@@ -9170,12 +9094,10 @@ typedef struct _ib_svc_entry {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_svc_entries {
#define SVC_ENTRY_COUNT 4
ib_svc_entry_t service_entry[SVC_ENTRY_COUNT];
-} PACK_SUFFIX ib_svc_entries_t;
-#include <complib/cl_packoff.h>
+} ib_svc_entries_t;
/*
* FIELDS
* service_entry
@@ -9203,7 +9125,6 @@ ib_dm_get_slot_lo_hi(IN const ib_net32_t slot_lo_hi,
/*
* IBA defined information describing an I/O controller
*/
-#include <complib/cl_packon.h>
typedef struct _ib_ioc_info {
ib_net64_t module_guid;
ib_net64_t iou_guid;
@@ -9211,8 +9132,7 @@ typedef struct _ib_ioc_info {
ib_net64_t access_key;
uint16_t initiators_conf;
uint8_t resv[38];
-} PACK_SUFFIX ib_ioc_info_t;
-#include <complib/cl_packoff.h>
+} ib_ioc_info_t;
/*
* The following definitions are shared between the Access Layer and VPD
@@ -11569,14 +11489,12 @@ typedef struct _ib_ci_op {
#define IB_CC_MAD_HDR_SIZE (sizeof(ib_sa_mad_t) - IB_CC_LOG_DATA_SIZE \
- IB_CC_MGT_DATA_SIZE)
-#include <complib/cl_packon.h>
typedef struct _ib_cc_mad {
ib_mad_t header;
ib_net64_t cc_key;
uint8_t log_data[IB_CC_LOG_DATA_SIZE];
uint8_t mgt_data[IB_CC_MGT_DATA_SIZE];
-} PACK_SUFFIX ib_cc_mad_t;
-#include <complib/cl_packoff.h>
+} ib_cc_mad_t;
/*
* FIELDS
* header
@@ -11688,13 +11606,11 @@ ib_cc_mad_get_mgt_data_ptr(IN const ib_cc_mad_t * const p_cc_mad)
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_cong_info {
uint8_t cong_info;
uint8_t resv;
uint8_t ctrl_table_cap;
-} PACK_SUFFIX ib_cong_info_t;
-#include <complib/cl_packoff.h>
+} ib_cong_info_t;
/*
* FIELDS
* cong_info
@@ -11751,14 +11667,12 @@ typedef struct _ib_cong_key_info {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_cong_log_event_sw {
ib_net16_t slid;
ib_net16_t dlid;
ib_net32_t sl;
ib_net32_t time_stamp;
-} PACK_SUFFIX ib_cong_log_event_sw_t;
-#include <complib/cl_packoff.h>
+} ib_cong_log_event_sw_t;
/*
* FIELDS
* slid
@@ -11787,15 +11701,13 @@ typedef struct _ib_cong_log_event_sw {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_cong_log_event_ca {
ib_net32_t local_qp_resv0;
ib_net32_t remote_qp_sl_service_type;
ib_net16_t remote_lid;
ib_net16_t resv1;
ib_net32_t time_stamp;
-} PACK_SUFFIX ib_cong_log_event_ca_t;
-#include <complib/cl_packoff.h>
+} ib_cong_log_event_ca_t;
/*
* FIELDS
* resv0_local_qp
@@ -11895,7 +11807,6 @@ typedef struct _ib_cong_log {
* SYNOPSIS
*/
#define IB_CC_PORT_MASK_DATA_SIZE 32
-#include <complib/cl_packon.h>
typedef struct _ib_sw_cong_setting {
ib_net32_t control_map;
uint8_t victim_mask[IB_CC_PORT_MASK_DATA_SIZE];
@@ -11905,8 +11816,7 @@ typedef struct _ib_sw_cong_setting {
ib_net16_t cs_threshold_resv;
ib_net16_t cs_return_delay;
ib_net16_t marking_rate;
-} PACK_SUFFIX ib_sw_cong_setting_t;
-#include <complib/cl_packoff.h>
+} ib_sw_cong_setting_t;
/*
* FIELDS
*
@@ -11960,13 +11870,11 @@ typedef struct _ib_sw_cong_setting {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_sw_port_cong_setting_element {
uint8_t valid_ctrl_type_res_threshold;
uint8_t packet_size;
ib_net16_t cong_param;
-} PACK_SUFFIX ib_sw_port_cong_setting_element_t;
-#include <complib/cl_packoff.h>
+} ib_sw_port_cong_setting_element_t;
/*
* FIELDS
*
@@ -12023,11 +11931,9 @@ typedef ib_sw_port_cong_setting_element_t ib_sw_port_cong_setting_block_t[IB_CC_
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_sw_port_cong_setting {
ib_sw_port_cong_setting_block_t block;
-} PACK_SUFFIX ib_sw_port_cong_setting_t;
-#include <complib/cl_packoff.h>
+} ib_sw_port_cong_setting_t;
/*
* FIELDS
*
@@ -12047,7 +11953,6 @@ typedef struct _ib_sw_port_cong_setting {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_ca_cong_entry {
ib_net16_t ccti_timer;
uint8_t ccti_increase;
@@ -12055,8 +11960,7 @@ typedef struct _ib_ca_cong_entry {
uint8_t ccti_min;
uint8_t resv0;
ib_net16_t resv1;
-} PACK_SUFFIX ib_ca_cong_entry_t;
-#include <complib/cl_packoff.h>
+} ib_ca_cong_entry_t;
/*
* FIELDS
*
@@ -12089,13 +11993,11 @@ typedef struct _ib_ca_cong_entry {
* SYNOPSIS
*/
#define IB_CA_CONG_ENTRY_DATA_SIZE 16
-#include <complib/cl_packon.h>
typedef struct _ib_ca_cong_setting {
ib_net16_t port_control;
ib_net16_t control_map;
ib_ca_cong_entry_t entry_list[IB_CA_CONG_ENTRY_DATA_SIZE];
-} PACK_SUFFIX ib_ca_cong_setting_t;
-#include <complib/cl_packoff.h>
+} ib_ca_cong_setting_t;
/*
* FIELDS
*
@@ -12125,11 +12027,9 @@ typedef struct _ib_ca_cong_setting {
*
* SYNOPSIS
*/
-#include <complib/cl_packon.h>
typedef struct _ib_cc_tbl_entry {
ib_net16_t shift_multiplier;
-} PACK_SUFFIX ib_cc_tbl_entry_t;
-#include <complib/cl_packoff.h>
+} ib_cc_tbl_entry_t;
/*
* FIELDS
*
@@ -12153,13 +12053,11 @@ typedef struct _ib_cc_tbl_entry {
* SYNOPSIS
*/
#define IB_CC_TBL_ENTRY_LIST_MAX 64
-#include <complib/cl_packon.h>
typedef struct _ib_cc_tbl {
ib_net16_t ccti_limit;
ib_net16_t resv;
ib_cc_tbl_entry_t entry_list[IB_CC_TBL_ENTRY_LIST_MAX];
-} PACK_SUFFIX ib_cc_tbl_t;
-#include <complib/cl_packoff.h>
+} ib_cc_tbl_t;
/*
* FIELDS
*
@@ -12182,11 +12080,9 @@ typedef struct _ib_cc_tbl {
*
* SOURCE
*/
-#include <complib/cl_packon.h>
typedef struct _ib_time_stamp {
ib_net32_t value;
-} PACK_SUFFIX ib_time_stamp_t;
-#include <complib/cl_packoff.h>
+} ib_time_stamp_t;
/*
* FIELDS
*
--
2.20.1

44
SOURCES/opensm.launch Normal file
View File

@ -0,0 +1,44 @@
#!/bin/bash
#
# Launch the necessary OpenSM daemons for systemd
#
# sysconfig: /etc/sysconfig/opensm
# config: /etc/rdma/opensm.conf
#
shopt -s nullglob
prog=/usr/sbin/opensm
[ -f /etc/sysconfig/opensm ] && . /etc/sysconfig/opensm
[ -n "$PRIORITY" ] && prio="-p $PRIORITY"
if [ -z "$GUIDS" ]; then
CONFIGS=""
CONFIG_CNT=0
for conf in /etc/rdma/opensm.conf.[0-9]*; do
CONFIGS="$CONFIGS $conf"
let CONFIG_CNT++
done
else
GUID_CNT=0
for guid in $GUIDS; do
let GUID_CNT++
done
fi
# Start opensm
if [ -n "$GUIDS" ]; then
SUBNET_COUNT=0
for guid in $GUIDS; do
SUBNET_PREFIX=`printf "0xfe800000000000%02d" $SUBNET_COUNT`
(while true; do $prog $prio -g $guid --subnet_prefix $SUBNET_PREFIX; sleep 30; done) &
let SUBNET_COUNT++
done
elif [ -n "$CONFIGS" ]; then
for config in $CONFIGS; do
(while true; do $prog $prio -F $config; sleep 30; done) &
done
else
(while true; do $prog $prio; sleep 30; done) &
fi
exit 0

7
SOURCES/opensm.logrotate Normal file
View File

@ -0,0 +1,7 @@
/var/log/opensm.log {
missingok
notifempty
copytruncate
weekly
compress
}

74
SOURCES/opensm.partitions Normal file
View File

@ -0,0 +1,74 @@
# For reference:
# IPv4 IANA reserved multicast addresses:
# http://www.iana.org/assignments/multicast-addresses/multicast-addresses.txt
# IPv6 IANA reserved multicast addresses:
# http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xml
#
# mtu =
# 1 = 256
# 2 = 512
# 3 = 1024
# 4 = 2048
# 5 = 4096
#
# rate =
# 2 = 2.5 GBit/s (SDR 1x)
# 3 = 10 GBit/s (SDR 4x/QDR 1x)
# 4 = 30 GBit/s (SDR 12x)
# 5 = 5 GBit/s (DDR 1x)
# 6 = 20 GBit/s (DDR 4x)
# 7 = 40 GBit/s (QDR 4x)
# 8 = 60 GBit/s (DDR 12x)
# 9 = 80 GBit/s (QDR 8x)
# 10 = 120 GBit/s (QDR 12x)
# If ExtendedLinkSpeeds are supported, then these rate values are valid too
# 11 = 14 GBit/s (FDR 1x)
# 12 = 56 GBit/s (FDR 4x)
# 13 = 112 GBit/s (FDR 8x)
# 14 = 168 GBit/s (FDR 12x)
# 15 = 25 GBit/s (EDR 1x)
# 16 = 100 GBit/s (EDR 4x)
# 17 = 200 GBit/s (EDR 8x)
# 18 = 300 GBit/s (EDR 12x)
Default=0x7fff, rate=3, mtu=4, scope=2, defmember=full:
ALL, ALL_SWITCHES=full;
Default=0x7fff, ipoib, rate=3, mtu=4, scope=2:
mgid=ff12:401b::ffff:ffff # IPv4 Broadcast address
mgid=ff12:401b::1 # IPv4 All Hosts group
mgid=ff12:401b::2 # IPv4 All Routers group
mgid=ff12:401b::16 # IPv4 IGMP group
mgid=ff12:401b::fb # IPv4 mDNS group
mgid=ff12:401b::fc # IPv4 Multicast Link Local Name Resolution group
mgid=ff12:401b::101 # IPv4 NTP group
mgid=ff12:401b::202 # IPv4 Sun RPC
mgid=ff12:601b::1 # IPv6 All Hosts group
mgid=ff12:601b::2 # IPv6 All Routers group
mgid=ff12:601b::16 # IPv6 MLDv2-capable Routers group
mgid=ff12:601b::fb # IPv6 mDNS group
mgid=ff12:601b::101 # IPv6 NTP group
mgid=ff12:601b::202 # IPv6 Sun RPC group
mgid=ff12:601b::1:3 # IPv6 Multicast Link Local Name Resolution group
ALL=full, ALL_SWITCHES=full;
# 40GBit, 4K MTU IPoIB example
#ib0_2=0x0002, rate=7, mtu=5, scope=2, defmember=full:
# ALL, ALL_SWITCHES=full;
#ib0_2=0x0002, ipoib, rate=7, mtu=5, scope=2:
# mgid=ff12:401b::ffff:ffff # IPv4 Broadcast address
# mgid=ff12:401b::1 # IPv4 All Hosts group
# mgid=ff12:401b::2 # IPv4 All Routers group
# mgid=ff12:401b::16 # IPv4 IGMP group
# mgid=ff12:401b::fb # IPv4 mDNS group
# mgid=ff12:401b::fc # IPv4 Multicast Link Local Name Resolution group
# mgid=ff12:401b::101 # IPv4 NTP group
# mgid=ff12:401b::202 # IPv4 Sun RPC
# mgid=ff12:601b::1 # IPv6 All Hosts group
# mgid=ff12:601b::2 # IPv6 All Routers group
# mgid=ff12:601b::16 # IPv6 MLDv2-capable Routers group
# mgid=ff12:601b::fb # IPv6 mDNS group
# mgid=ff12:601b::101 # IPv6 NTP group
# mgid=ff12:601b::202 # IPv6 Sun RPC group
# mgid=ff12:601b::1:3 # IPv6 Multicast Link Local Name Resolution group
# ALL=full, ALL_SWITCHES=full;

1
SOURCES/opensm.rwtab Normal file
View File

@ -0,0 +1 @@
empty /var/cache/opensm

14
SOURCES/opensm.service Normal file
View File

@ -0,0 +1,14 @@
[Unit]
Description=Starts the OpenSM InfiniBand fabric Subnet Manager
Documentation=man:opensm
DefaultDependencies=false
Before=network.target remote-fs-pre.target
Requires=rdma.service
After=rdma.service
[Service]
Type=forking
ExecStart=/usr/libexec/opensm-launch
[Install]
WantedBy=network.target

72
SOURCES/opensm.sysconfig Normal file
View File

@ -0,0 +1,72 @@
# Problem #1: Multiple IB fabrics needing a subnet manager
#
# In the event that a machine has more than one IB subnet attached,
# and that machine is an opensm server, by default, opensm will
# only attach to one port and will not manage the fabric on the
# other port. There are two ways to solve this problem:
#
# 1) Start opensm on multiple machines and configure it to manage
# different fabrics on each machine
# 2) Configure opensm to start multiple instances on a single
# machine
#
# Both solutions to this problem require non-standard configurations.
# In other words, you would normally have to modify /etc/rdma/opensm.conf
# and once you do that, the file will no longer be updated for new
# options when opensm is upgraded. In an effort to allow people to
# have more than one subnet managed by opensm without having to modify
# the system default opensm.conf file, we have enabled two methods
# for modifying the default opensm config items needed to enable
# multiple fabric management.
#
# Method #1: Create multiple opensm.conf files in non-standard locations
# Copy /etc/rdma/opensm.conf to /etc/rdma/opensm.conf.<number>
# (do this once for each instance you want started)
# Edit each copy of the opensm.conf file to reflect the necessary changes
# for a multiple instance startup. If you need to manage more than
# one fabric, you will have to change the guid option in each file
# to specify the guid of the specific port you want opensm attached
# to.
#
# The advantage to method #1 is that, on the off chance you want to do
# really special custom things on different ports, like have different
# QoS settings depending on which port you are attached to, you have the
# freedom to edit any and all settings for each instance without those
# changes affecting other instances or being lost when opensm upgrades.
#
# Method #2: Specify multiple GUIDS variable entries in this file
# Uncomment the below GUIDS variable and enter each guid you need to attach
# to into the list. If using this method you need to enter each
# guid into the list as we won't attach to any default ports, only
# those specified in the list.
#
#GUIDS="0x0002c90300048ca1 0x0002c90300048ca2"
#
# The obvious advantage to method #2 is that it's simple and doesn't
# clutter up your file system, but it is far more limited in what you
# can do. If you enable method #2, then even if you create the files
# referenced in method #1, they will be ignored.
#
# Problem #2: Activating a backup subnet manager
#
# The default priority of opensm is set so that it wants to be the
# primary subnet manager. This is great when you are only running
# opensm on one server, but if you want to have a non-primary opensm
# instance for failover, then you have to manually edit the opensm.conf
# file like for problem #1. This carries with it all the problems
# listed above. If you wish to enable opensm as a non-primary manager,
# then you can uncomment the PRIORITY variable below and set it to
# some number between 0 and 15, where 15 is the highest priority and
# the primary manager, with 0 being the lowest backup server. This method
# will work with the GUIDS option above, and also with the multiple
# config files in method #1 above. However, only a single priority is
# supported here. If you wanted more than one priority (say this machine
# is the primary on the first fabric, and second on the second fabric,
# while the other opensm server is primary on the second fabric and
# second on the primary), then the only way to do that is to use method #1
# above and individually edit the config files. If you edit the config
# files to set the priority and then also set the priority here, then
# this setting will override the config files and render that particular
# edit useless.
#
#PRIORITY=15

298
SPECS/opensm.spec Normal file
View File

@ -0,0 +1,298 @@
%global __remake_config 1
Name: opensm
Version: 3.3.22
Release: 2%{?dist}
Summary: OpenIB InfiniBand Subnet Manager and management utilities
Group: System Environment/Daemons
License: GPLv2 or BSD
Url: https://github.com/linux-rdma/opensm
Source0: https://github.com/linux-rdma/opensm/releases/download/%{version}/%{name}-%{version}.tar.gz
Source2: opensm.logrotate
Source4: opensm.sysconfig
Source5: opensm.service
Source6: opensm.launch
Source7: opensm.rwtab
Source8: opensm.partitions
Patch1: 0001-osm_opensm.c-Fix-use-of-enum-as-NULL-pointer-in-osm_.patch
Patch2: 0003-osm_-port-ucast_ftree-.c-Remove-unused-static-functi.patch
Patch3: 0002-osm_ucast_ftree.c-Fix-clang-warning-about-empty-loop.patch
Patch4: 0008-ib_types-Drop-packed-attribute-where-unnecessary.patch
BuildRequires: libibumad-devel, systemd, systemd-units
BuildRequires: bison, flex, byacc, gcc
%if %{__remake_config}
BuildRequires: libtool, autoconf, automake
%endif
Requires: %{name}-libs%{?_isa} = %{version}-%{release}, logrotate, rdma
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
# RDMA is not currently built on 32-bit ARM: #1484155
ExcludeArch: s390 %{arm}
%description
OpenSM is the OpenIB project's Subnet Manager for Infiniband networks.
The subnet manager is run as a system daemon on one of the machines in
the infiniband fabric to manage the fabric's routing state. This package
also contains various tools for diagnosing and testing Infiniband networks
that can be used from any machine and do not need to be run on a machine
running the opensm daemon.
%package libs
Summary: Libraries used by opensm and included utilities
Group: System Environment/Libraries
%description libs
Shared libraries for Infiniband user space access
%package devel
Summary: Development files for the opensm-libs libraries
Group: Development/Libraries
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description devel
Development environment for the opensm libraries
%package static
Summary: Static version of the opensm libraries
Group: Development/Libraries
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
%description static
Static version of opensm libraries
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%build
%if %{__remake_config}
./autogen.sh
%endif
%configure --with-opensm-conf-sub-dir=rdma
make %{?_smp_mflags}
cd opensm
./opensm -c ../opensm-%{version}.conf
%install
make install DESTDIR=%{buildroot}
# remove unpackaged files from the buildroot
rm -f %{buildroot}%{_libdir}/*.la
rm -fr %{buildroot}%{_sysconfdir}/init.d
install -D -m644 opensm-%{version}.conf %{buildroot}%{_sysconfdir}/rdma/opensm.conf
install -D -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/opensm
install -D -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/opensm
install -D -m644 %{SOURCE5} %{buildroot}%{_unitdir}/opensm.service
install -D -m755 %{SOURCE6} %{buildroot}%{_libexecdir}/opensm-launch
install -D -m644 %{SOURCE7} %{buildroot}%{_sysconfdir}/rwtab.d/opensm
install -D -m644 %{SOURCE8} %{buildroot}%{_sysconfdir}/rdma/partitions.conf
mkdir -p ${RPM_BUILD_ROOT}/var/cache/opensm
%post
%systemd_post opensm.service
%preun
%systemd_preun opensm.service
%postun
if [ -d /var/cache/opensm ]; then
rm -fr /var/cache/opensm
fi
%systemd_postun_with_restart opensm.service
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%files
%dir /var/cache/opensm
%{_sbindir}/*
%{_mandir}/*/*
%{_unitdir}/*
%{_libexecdir}/*
%config(noreplace) %{_sysconfdir}/logrotate.d/opensm
%config(noreplace) %{_sysconfdir}/rdma/opensm.conf
%config(noreplace) %{_sysconfdir}/rdma/partitions.conf
%config(noreplace) %{_sysconfdir}/sysconfig/opensm
%{_sysconfdir}/rwtab.d/opensm
%doc AUTHORS ChangeLog INSTALL README NEWS
%license COPYING
%files libs
%{_libdir}/lib*.so.*
%files devel
%{_libdir}/lib*.so
%{_includedir}/infiniband
%files static
%{_libdir}/lib*.a
%changelog
* Thu May 30 2019 Honggang Li <honli@redhat.com> - 3.3.22-2
- Onboard gating configuration
- Resolves: bz1682401
* Wed May 15 2019 Honggang Li <honli@redhat.com> - 3.3.22-1
- Rebase to latest upstream release 3.3.22
- Resolves: bz1708475
* Fri Jan 11 2019 Honggang Li <honli@redhat.com> - 3.3.21-2
- Restore the 'subnet_prefix' option
- Resolves: bz1664575
* Mon Sep 24 2018 Honggang Li <honli@redhat.com> - 3.3.21-1
- Rebase to latest upstream release 3.3.21
- Resolves: bz1602645
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.20-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Feb 1 2018 Honggang Li <honli@redhat.com> - 3.3.20-7
- Fix BuildRequires
- Fix preuninstall script
- Resolves: bz1540934
* Mon Aug 28 2017 Honggang Li <honli@redhat.com> - 3.3.20-6
- Add support for s309x
* Sat Aug 26 2017 Honggang Li <honli@redhat.com> - 3.3.20-5
- Disable support for ARM32.
- Resolves: bz1484155
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.20-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.20-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.20-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Fri Jun 10 2016 Honggang Li <honli@redhat.com> - 3.3.20-1
- Update to latest upstream release
- Resolves: bz1344691
* Wed Mar 16 2016 Doug Ledford <dledford@redhat.com> - 3.3.19-1
- Update to latest upstream release
- Incorporate features from RHEL opensm
- Resolves: bz1124202
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.17-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.17-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.17-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.17-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Thu May 29 2014 Michael Schwendt <mschwendt@fedoraproject.org> - 3.3.17-2
- Don't include manual page directories (#1089412).
- Use standard group Development/Libraries in library devel packages.
- Use %%?_isa in base package dependencies.
* Mon Mar 17 2014 Peter Robinson <pbrobinson@fedoraproject.org> 3.3.17-1
- Update to 3.3.17
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.15-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Mon Mar 25 2013 Doug Ledford <dledford@redhat.com> - 3.3.15-6
- Oops, forgot to remove the -B option to opensm when starting it
* Mon Mar 25 2013 Doug Ledford <dledford@redhat.com> - 3.3.15-5
- Drop the old sysv init script
- Fix opensm-launch to restart opensm in a loop. This works around the
fact that systemd starts opensm so early that we very well might not have
sync on the link yet. Without the physical link being up, opensm exits
immediately. This way opensm will get restarted every 30 seconds until
sync is active on the link or until the opensm service is stopped.
- Always install the newly generated opensm-%%{version}.conf as opensm.conf
- Make the launch work properly in the event that no GUIDs are set and
there are no numbered config files
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.15-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Wed Dec 05 2012 Doug Ledford <dledford@redhat.com> - 3.3.15-3
- Fix startup on read only root
- Update default config file
- Resolves: bz817591
* Wed Dec 05 2012 Doug Ledford <dledford@redhat.com> - 3.3.15-2
- More tweaks to systemd setup (proper scriptlets now)
- More tweaks to old sysv init script support (fix Requires)
* Tue Nov 27 2012 Doug Ledford <dledford@redhat.com> - 3.3.15-1
- Update to latest upstream release
- Update to systemd startup
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.13-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Tue Mar 13 2012 Doug Ledford <dledford@redhat.com> - 3.3.13-2
- Fix the config file comment in the opensm init script
- Resolves: bz802727
* Tue Feb 28 2012 Doug Ledford <dledford@redhat.com> - 3.3.13-1
- Update to latest upstream version
- Fix a minor issue in init scripts that would cause systemd to try and
start/stop things in the wrong order
- Add a patch to allow us to specify the subnet prefix on the command line
* Tue Jan 03 2012 Doug Ledford <dledford@redhat.com> - 3.3.12-1
- Update to latest upstream version
* Mon Aug 15 2011 Kalev Lember <kalevlember@gmail.com> - 3.3.9-2
- Rebuilt for rpm bug #728707
* Wed Jul 20 2011 Doug Ledford <dledford@redhat.com> - 3.3.9-1
- Update to latest upstream version
- Add /etc/sysconfig/opensm for use by opensm init script
- Enable the ability to start more than one instance of opensm for multiple
fabric support
- Enable the ability to start opensm with a priority other than default for
support of backup opensm instances
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Mon Mar 08 2010 Doug Ledford <dledford@redhat.com> - 3.3.5-1
- Update to latest upstream release. We need various defines in ib_types.h
for the latest ibutils package to build properly, and the latest ibutils
package is needed because we found licensing problems in the older
tarballs during review.
* Mon Jan 11 2010 Doug Ledford <dledford@redhat.com> - 3.3.3-2
- ExcludeArch s390(x) as there's no hardware support there
* Thu Dec 03 2009 Doug Ledford <dledford@redhat.com> - 3.3.3-1
- Update to latest upstream release
- Minor tweaks to init script for LSB compliance
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Mon Jul 20 2009 Doug Ledford <dledford@redhat.com> - 3.3.2-1
- Update to latest upstream version
* Wed Apr 22 2009 Doug Ledford <dledford@redhat.com> - 3.3.1-1
- Update to latest upstream version
* Fri Mar 06 2009 Caolán McNamara <caolanm@redhat.com> - 3.2.1-3
- fix bare elifs to rebuild
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Sun Jun 08 2008 Doug Ledford <dledford@redhat.com> - 3.2.1-1
- Initial package for Fedora review process