diff --git a/.gitignore b/.gitignore
index 1567275..e46fdd1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-SOURCES/rdma-core-41.0.tar.gz
+SOURCES/rdma-core-44.0.tar.gz
 SOURCES/rxe_cfg.8.gz
diff --git a/.rdma-core.metadata b/.rdma-core.metadata
index bfa10d4..6aaac42 100644
--- a/.rdma-core.metadata
+++ b/.rdma-core.metadata
@@ -1,2 +1,2 @@
-6ed8cf4056ed8250cf94fa14e79d76fb74ad4548 SOURCES/rdma-core-41.0.tar.gz
+f1ff3710270ad7920626f73e955aae2b1a043136 SOURCES/rdma-core-44.0.tar.gz
 9187638355d9bee854989bbfc6c2956301fd52aa SOURCES/rxe_cfg.8.gz
diff --git a/SOURCES/0001-util-fix-overflow-in-remap_node_name.patch b/SOURCES/0001-util-fix-overflow-in-remap_node_name.patch
new file mode 100644
index 0000000..860c153
--- /dev/null
+++ b/SOURCES/0001-util-fix-overflow-in-remap_node_name.patch
@@ -0,0 +1,85 @@
+From 5075b961a29ff9c418e1fefe78432e95dd0a5fcc Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Wed, 1 Feb 2023 22:41:06 +0100
+Subject: [PATCH 1/3] util: fix overflow in remap_node_name()
+
+The function remap_node_name() assumes the parameter 'nodedesc' is at
+least IB_SMP_DATA_SIZE + 1 (i.e. 65) bytes long, because it passes it to
+clean_nodedesc() that writes a nul-terminator to it at offset
+IB_SMP_DATA_SIZE. Callers in infiniband-diags/saquery.c pass
+a (struct ib_node_desc_t).description as the argument, which is only
+IB_NODE_DESCRIPTION_SIZE (i.e. 64) bytes long. This is an overflow.
+
+An odd thing about remap_node_name() is that it may (but does not
+always) rewrite the nodedesc in-place. Callers do not appear to
+appreciate this behavior. Most of them are various print_* and dump_*
+functions where rewriting the input makes no sense. Some callers make a
+local copy of the nodedesc first, possibly to protect the original.
+One caller (infiniband-diags/saquery.c:print_node_records()) checks if
+either the original description or the remapped one matches a given
+requested_name - so it looks like it prefers the original to be
+not rewritten.
+
+Let's make remap_node_name() a bit safer and more convenient to use.
+Allocate a fixed-sized copy first. Then use strncpy to copy from
+'nodedesc', never reading more than IB_SMP_DATA_SIZE (64) bytes.
+Apply clean_nodedesc() on the correctly-sized copy. This solves the
+overflow bug. Also, the in-place rewrite of 'nodedesc' is gone and it
+can become a (const char*).
+
+The overflow was found by a static checker (covscan).
+
+Fixes: d974c4e398d2 ("Fix max length of node description (ibnetdiscover and smpquery)")
+Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
+---
+ util/node_name_map.c | 12 +++++++++---
+ util/node_name_map.h |  3 +--
+ 2 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/util/node_name_map.c b/util/node_name_map.c
+index 30b73eb1448e..511cb92ef19c 100644
+--- a/util/node_name_map.c
++++ b/util/node_name_map.c
+@@ -95,7 +95,7 @@ void close_node_name_map(nn_map_t * map)
+ 	free(map);
+ }
+ 
+-char *remap_node_name(nn_map_t * map, uint64_t target_guid, char *nodedesc)
++char *remap_node_name(nn_map_t * map, uint64_t target_guid, const char *nodedesc)
+ {
+ 	char *rc = NULL;
+ 	name_map_item_t *item = NULL;
+@@ -108,8 +108,14 @@ char *remap_node_name(nn_map_t * map, uint64_t target_guid, char *nodedesc)
+ 		rc = strdup(item->name);
+ 
+ done:
+-	if (rc == NULL)
+-		rc = strdup(clean_nodedesc(nodedesc));
++	if (rc == NULL) {
++		rc = malloc(IB_SMP_DATA_SIZE + 1);
++		if (rc) {
++			strncpy(rc, nodedesc, IB_SMP_DATA_SIZE);
++			rc[IB_SMP_DATA_SIZE] = '\0';
++			clean_nodedesc(rc);
++		}
++	}
+ 	return (rc);
+ }
+ 
+diff --git a/util/node_name_map.h b/util/node_name_map.h
+index e78d274b116e..d83d672782c4 100644
+--- a/util/node_name_map.h
++++ b/util/node_name_map.h
+@@ -12,8 +12,7 @@ typedef struct nn_map nn_map_t;
+ 
+ nn_map_t *open_node_name_map(const char *node_name_map);
+ void close_node_name_map(nn_map_t *map);
+-/* NOTE: parameter "nodedesc" may be modified here. */
+-char *remap_node_name(nn_map_t *map, uint64_t target_guid, char *nodedesc);
++char *remap_node_name(nn_map_t *map, uint64_t target_guid, const char *nodedesc);
+ char *clean_nodedesc(char *nodedesc);
+ 
+ #endif
+-- 
+2.39.1
+
diff --git a/SOURCES/0002-infiniband-diags-drop-unnecessary-nodedesc-local-cop.patch b/SOURCES/0002-infiniband-diags-drop-unnecessary-nodedesc-local-cop.patch
new file mode 100644
index 0000000..7927ba6
--- /dev/null
+++ b/SOURCES/0002-infiniband-diags-drop-unnecessary-nodedesc-local-cop.patch
@@ -0,0 +1,95 @@
+From d5723a0f69577fd3022024ca17c27e273a29695b Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Wed, 1 Feb 2023 22:41:16 +0100
+Subject: [PATCH 2/3] infiniband-diags: drop unnecessary nodedesc local copies
+
+Now that remap_node_name() never rewrites nodedesc in-place, some
+copying can be avoided.
+
+Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
+---
+ infiniband-diags/dump_fts.c | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
+diff --git a/infiniband-diags/dump_fts.c b/infiniband-diags/dump_fts.c
+index ce6bfb9ecc33..acef9efe692d 100644
+--- a/infiniband-diags/dump_fts.c
++++ b/infiniband-diags/dump_fts.c
+@@ -109,7 +109,6 @@ static void dump_multicast_tables(ibnd_node_t *node, unsigned startl,
+ 				  unsigned endl, struct ibmad_port *mad_port)
+ {
+ 	ib_portid_t *portid = &node->path_portid;
+-	char nd[IB_SMP_DATA_SIZE + 1] = { 0 };
+ 	char str[512];
+ 	char *s;
+ 	uint64_t nodeguid;
+@@ -119,7 +118,6 @@ static void dump_multicast_tables(ibnd_node_t *node, unsigned startl,
+ 	char *mapnd = NULL;
+ 	int n = 0;
+ 
+-	memcpy(nd, node->nodedesc, strlen(node->nodedesc));
+ 	nports = node->numports;
+ 	nodeguid = node->guid;
+ 
+@@ -149,7 +147,7 @@ static void dump_multicast_tables(ibnd_node_t *node, unsigned startl,
+ 		endl = IB_MAX_MCAST_LID;
+ 	}
+ 
+-	mapnd = remap_node_name(node_name_map, nodeguid, nd);
++	mapnd = remap_node_name(node_name_map, nodeguid, node->nodedesc);
+ 
+ 	printf("Multicast mlids [0x%x-0x%x] of switch %s guid 0x%016" PRIx64
+ 	       " (%s):\n", startl, endl, portid2str(portid), nodeguid,
+@@ -224,8 +222,6 @@ static int dump_lid(char *str, int str_len, int lid, int valid,
+ 		    ibnd_fabric_t *fabric, int *last_port_lid,
+ 		    int *base_port_lid, uint64_t *portguid)
+ {
+-	char nd[IB_SMP_DATA_SIZE + 1] = { 0 };
+-
+ 	ibnd_port_t *port = NULL;
+ 
+ 	char ntype[50], sguid[30];
+@@ -276,14 +272,12 @@ static int dump_lid(char *str, int str_len, int lid, int valid,
+ 	baselid = port->base_lid;
+ 	lmc = port->lmc;
+ 
+-	memcpy(nd, port->node->nodedesc, strlen(port->node->nodedesc));
+-
+ 	if (lmc > 0) {
+ 		*base_port_lid = baselid;
+ 		*last_port_lid = baselid + (1 << lmc) - 1;
+ 	}
+ 
+-	mapnd = remap_node_name(node_name_map, nodeguid, nd);
++	mapnd = remap_node_name(node_name_map, nodeguid, port->node->nodedesc);
+  
+ 	rc = snprintf(str, str_len, ": (%s portguid %s: '%s')",
+ 		      mad_dump_val(IB_NODE_TYPE_F, ntype, sizeof ntype,
+@@ -302,7 +296,6 @@ static void dump_unicast_tables(ibnd_node_t *node, int startl, int endl,
+ {
+ 	ib_portid_t * portid = &node->path_portid;
+ 	char lft[IB_SMP_DATA_SIZE] = { 0 };
+-	char nd[IB_SMP_DATA_SIZE + 1] = { 0 };
+ 	char str[200];
+ 	uint64_t nodeguid;
+ 	int block, i, e, top;
+@@ -315,7 +308,6 @@ static void dump_unicast_tables(ibnd_node_t *node, int startl, int endl,
+ 	mad_decode_field(node->switchinfo, IB_SW_LINEAR_FDB_TOP_F, &top);
+ 	nodeguid = node->guid;
+ 	nports = node->numports;
+-	memcpy(nd, node->nodedesc, strlen(node->nodedesc));
+ 
+ 	if (!endl || endl > top)
+ 		endl = top;
+@@ -326,7 +318,7 @@ static void dump_unicast_tables(ibnd_node_t *node, int startl, int endl,
+ 		endl = IB_MAX_UCAST_LID;
+ 	}
+ 
+-	mapnd = remap_node_name(node_name_map, nodeguid, nd);
++	mapnd = remap_node_name(node_name_map, nodeguid, node->nodedesc);
+ 
+ 	printf("Unicast lids [0x%x-0x%x] of switch %s guid 0x%016" PRIx64
+ 	       " (%s):\n", startl, endl, portid2str(portid), nodeguid,
+-- 
+2.39.1
+
diff --git a/SOURCES/0002-systemd-drop-Protect-options-not-supported-in-RHEL-8.patch b/SOURCES/0002-systemd-drop-Protect-options-not-supported-in-RHEL-8.patch
new file mode 100644
index 0000000..ced3d13
--- /dev/null
+++ b/SOURCES/0002-systemd-drop-Protect-options-not-supported-in-RHEL-8.patch
@@ -0,0 +1,52 @@
+From 30f781482122db14f7bf89cb31db1c6aba30bba8 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Wed, 8 Feb 2023 15:19:17 +0100
+Subject: [PATCH 2/2] systemd: drop Protect* options not supported in RHEL 8
+ systemd
+
+Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
+---
+ ibacm/ibacm.service.in       | 2 --
+ iwpmd/iwpmd.service.in       | 2 --
+ rdma-ndd/rdma-ndd.service.in | 1 -
+ 3 files changed, 5 deletions(-)
+
+diff --git a/ibacm/ibacm.service.in b/ibacm/ibacm.service.in
+index 56538beb2b15..535e1aeae326 100644
+--- a/ibacm/ibacm.service.in
++++ b/ibacm/ibacm.service.in
+@@ -19,8 +19,6 @@ Type=notify
+ ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/ibacm --systemd
+ ProtectSystem=full
+ ProtectHome=true
+-ProtectHostname=true
+-ProtectKernelLogs=true
+ 
+ [Install]
+ Also=ibacm.socket
+diff --git a/iwpmd/iwpmd.service.in b/iwpmd/iwpmd.service.in
+index 47afebd8ad02..dd4dc750c26c 100644
+--- a/iwpmd/iwpmd.service.in
++++ b/iwpmd/iwpmd.service.in
+@@ -26,7 +26,5 @@ ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/iwpmd --systemd
+ LimitNOFILE=102400
+ ProtectSystem=full
+ ProtectHome=true
+-ProtectHostname=true
+-ProtectKernelLogs=true
+ 
+ # iwpmd is automatically wanted by udev when an iWarp RDMA device is present
+diff --git a/rdma-ndd/rdma-ndd.service.in b/rdma-ndd/rdma-ndd.service.in
+index 368deec00b2c..9cbe93fb6900 100644
+--- a/rdma-ndd/rdma-ndd.service.in
++++ b/rdma-ndd/rdma-ndd.service.in
+@@ -22,6 +22,5 @@ Restart=always
+ ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/rdma-ndd --systemd
+ ProtectSystem=full
+ ProtectHome=true
+-ProtectKernelLogs=true
+ 
+ # rdma-ndd is automatically wanted by udev when an RDMA device with a node description is present
+-- 
+2.39.1
+
diff --git a/SOURCES/0003-CMakeLists-disable-providers-that-were-not-enabled-i.patch b/SOURCES/0003-CMakeLists-disable-providers-that-were-not-enabled-i.patch
new file mode 100644
index 0000000..84f1b16
--- /dev/null
+++ b/SOURCES/0003-CMakeLists-disable-providers-that-were-not-enabled-i.patch
@@ -0,0 +1,53 @@
+From eff6b07e92a1674818c5d8c9993651dbbeabccf4 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Wed, 1 Feb 2023 15:24:23 +0100
+Subject: [PATCH 3/5] CMakeLists: disable providers that were not enabled in
+ RHEL 9.1
+
+Doing a package rebase, but don't want to enable additional drivers
+unless explicitly requested.
+
+Upstream Status: RHEL only
+
+Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
+---
+ CMakeLists.txt | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bac10516bb85..b7eca65f0fe2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -711,23 +711,23 @@ add_subdirectory(providers/bnxt_re)
+ add_subdirectory(providers/cxgb4) # NO SPARSE
+ add_subdirectory(providers/efa)
+ add_subdirectory(providers/efa/man)
+-add_subdirectory(providers/erdma)
++#add_subdirectory(providers/erdma)
+ add_subdirectory(providers/hns)
+ add_subdirectory(providers/irdma)
+-add_subdirectory(providers/mana)
+-add_subdirectory(providers/mana/man)
++#add_subdirectory(providers/mana)
++#add_subdirectory(providers/mana/man)
+ add_subdirectory(providers/mlx4)
+ add_subdirectory(providers/mlx4/man)
+ add_subdirectory(providers/mlx5)
+ add_subdirectory(providers/mlx5/man)
+-add_subdirectory(providers/mthca)
+-add_subdirectory(providers/ocrdma)
++#add_subdirectory(providers/mthca)
++#add_subdirectory(providers/ocrdma)
+ add_subdirectory(providers/qedr)
+ add_subdirectory(providers/vmw_pvrdma)
+ endif()
+ 
+ add_subdirectory(providers/hfi1verbs)
+-add_subdirectory(providers/ipathverbs)
++#add_subdirectory(providers/ipathverbs)
+ add_subdirectory(providers/rxe)
+ add_subdirectory(providers/rxe/man)
+ add_subdirectory(providers/siw)
+-- 
+2.39.1
+
diff --git a/SOURCES/0003-libibnetdisc-fix-printing-a-possibly-non-NUL-termina.patch b/SOURCES/0003-libibnetdisc-fix-printing-a-possibly-non-NUL-termina.patch
new file mode 100644
index 0000000..2a5cc84
--- /dev/null
+++ b/SOURCES/0003-libibnetdisc-fix-printing-a-possibly-non-NUL-termina.patch
@@ -0,0 +1,38 @@
+From 45fcc7ad41216a93bafb452f7d7a4507d52722cd Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Wed, 1 Feb 2023 23:30:52 +0100
+Subject: [PATCH 3/3] libibnetdisc: fix printing a possibly non-NUL-terminated
+ string
+
+Found by a static check (covscan).
+
+Fixes: d974c4e398d2 ("Fix max length of node description (ibnetdiscover and smpquery)")
+Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
+---
+ libibnetdisc/chassis.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/libibnetdisc/chassis.c b/libibnetdisc/chassis.c
+index a3ec1d82807c..bc1a8aff8acb 100644
+--- a/libibnetdisc/chassis.c
++++ b/libibnetdisc/chassis.c
+@@ -597,7 +597,7 @@ static int fill_mellanox_chassis_record(ibnd_node_t * node)
+ 	int p = 0;
+ 	ibnd_port_t *port;
+ 
+-	char node_desc[IB_SMP_DATA_SIZE];
++	char node_desc[IB_SMP_DATA_SIZE + 1];
+ 	char *system_name;
+ 	char *system_type;
+ 	char *system_slot_name;
+@@ -617,6 +617,7 @@ static int fill_mellanox_chassis_record(ibnd_node_t * node)
+ 	 */
+ 
+ 	memcpy(node_desc, node->nodedesc, IB_SMP_DATA_SIZE);
++	node_desc[IB_SMP_DATA_SIZE] = '\0';
+ 
+ 	IBND_DEBUG("fill_mellanox_chassis_record: node_desc:%s \n",node_desc);
+ 
+-- 
+2.39.1
+
diff --git a/SOURCES/9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch b/SOURCES/9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch
new file mode 100644
index 0000000..7ee61e6
--- /dev/null
+++ b/SOURCES/9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch
@@ -0,0 +1,42 @@
+From 1c63f25b55ca4f5317e1c85b548469bbc747e147 Mon Sep 17 00:00:00 2001
+From: "Goldman, Adam" <adam.goldman@intel.com>
+Date: Tue, 4 Feb 2020 08:55:20 -0500
+Subject: [PATCH] kernel-boot: Do not perform device rename on OPA devices
+
+PSM2 will not run with recent rdma-core releases. Several tools and
+libraries like PSM2, require the hfi1 name to be present.
+
+Recent rdma-core releases added a new feature to rename kernel devices,
+but the default configuration will not work with hfi1 fabrics.
+
+Related opa-psm2 github issue:
+  https://github.com/intel/opa-psm2/issues/43
+
+Fixes: 5b4099d47be3 ("kernel-boot: Perform device rename to make stable names")
+Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
+Signed-off-by: Goldman, Adam <adam.goldman@intel.com>
+---
+ kernel-boot/rdma-persistent-naming.rules | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kernel-boot/rdma-persistent-naming.rules b/kernel-boot/rdma-persistent-naming.rules
+index 6f9c53a5..3ce34ea9 100644
+--- a/kernel-boot/rdma-persistent-naming.rules
++++ b/kernel-boot/rdma-persistent-naming.rules
+@@ -26,10 +26,10 @@
+ #   Device type = RoCE
+ #   mlx5_0 -> rocex525400c0fe123455
+ #
+-ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK"
++ACTION=="add", SUBSYSTEM=="infiniband", KERNEL!="hfi1*", PROGRAM="rdma_rename %k NAME_FALLBACK"
+ 
+ # Example:
+ # * NAME_FIXED 
+ #   fixed name for specific board_id
+ #
+-#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib"
+\ No newline at end of file
++#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib"
+-- 
+2.30.1
+
diff --git a/SOURCES/9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch b/SOURCES/9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch
new file mode 100644
index 0000000..d7276ad
--- /dev/null
+++ b/SOURCES/9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch
@@ -0,0 +1,31 @@
+From 538cd05b34bf15076ce40273926d7580d421a670 Mon Sep 17 00:00:00 2001
+From: Jarod Wilson <jarod@redhat.com>
+Date: Wed, 21 Aug 2019 17:09:13 -0400
+Subject: [PATCH] udev: keep NAME_KERNEL as default interface naming convention
+
+Signed-off-by: Jarod Wilson <jarod@redhat.com>
+---
+ kernel-boot/rdma-persistent-naming.rules | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kernel-boot/rdma-persistent-naming.rules b/kernel-boot/rdma-persistent-naming.rules
+index 6f9c53a5..b5413edb 100644
+--- a/kernel-boot/rdma-persistent-naming.rules
++++ b/kernel-boot/rdma-persistent-naming.rules
+@@ -26,10 +26,10 @@
+ #   Device type = RoCE
+ #   mlx5_0 -> rocex525400c0fe123455
+ #
+-ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK"
++ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_KERNEL"
+ 
+ # Example:
+ # * NAME_FIXED 
+ #   fixed name for specific board_id
+ #
+-#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib"
+\ No newline at end of file
++#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib"
+-- 
+2.30.1
+
diff --git a/SOURCES/udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch b/SOURCES/udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch
deleted file mode 100644
index d7276ad..0000000
--- a/SOURCES/udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 538cd05b34bf15076ce40273926d7580d421a670 Mon Sep 17 00:00:00 2001
-From: Jarod Wilson <jarod@redhat.com>
-Date: Wed, 21 Aug 2019 17:09:13 -0400
-Subject: [PATCH] udev: keep NAME_KERNEL as default interface naming convention
-
-Signed-off-by: Jarod Wilson <jarod@redhat.com>
----
- kernel-boot/rdma-persistent-naming.rules | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/kernel-boot/rdma-persistent-naming.rules b/kernel-boot/rdma-persistent-naming.rules
-index 6f9c53a5..b5413edb 100644
---- a/kernel-boot/rdma-persistent-naming.rules
-+++ b/kernel-boot/rdma-persistent-naming.rules
-@@ -26,10 +26,10 @@
- #   Device type = RoCE
- #   mlx5_0 -> rocex525400c0fe123455
- #
--ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK"
-+ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_KERNEL"
- 
- # Example:
- # * NAME_FIXED 
- #   fixed name for specific board_id
- #
--#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib"
-\ No newline at end of file
-+#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib"
--- 
-2.30.1
-
diff --git a/SPECS/rdma-core.spec b/SPECS/rdma-core.spec
index 5602402..1c7fae1 100644
--- a/SPECS/rdma-core.spec
+++ b/SPECS/rdma-core.spec
@@ -1,6 +1,6 @@
 Name: rdma-core
-Version: 41.0
-Release: 1%{?dist}
+Version: 44.0
+Release: 2%{?dist}.1
 Summary: RDMA core userspace libraries and daemons
 
 # Almost everything is licensed under the OFA dual GPLv2, 2 Clause BSD license
@@ -16,9 +16,16 @@ Source1: ibdev2netdev
 # are extracted from libibverbs-26.0-8.el8 .
 Source2: rxe_cfg
 Source3: rxe_cfg.8.gz
-Patch3: udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch
+# 0001-0003: https://github.com/linux-rdma/rdma-core/pull/1308
+Patch1: 0001-util-fix-overflow-in-remap_node_name.patch
+Patch2: 0002-infiniband-diags-drop-unnecessary-nodedesc-local-cop.patch
+Patch3: 0003-libibnetdisc-fix-printing-a-possibly-non-NUL-termina.patch
 # RHEL specific patch for OPA ibacm plugin
 Patch300: 0001-ibacm-acm.c-load-plugin-while-it-is-soft-link.patch
+Patch301: 0002-systemd-drop-Protect-options-not-supported-in-RHEL-8.patch
+Patch9000: 0003-CMakeLists-disable-providers-that-were-not-enabled-i.patch
+Patch9998: 9998-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch
+Patch9999: 9999-udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch
 # Do not build static libs by default.
 %define with_static %{?_with_static: 1} %{?!_with_static: 0}
 
@@ -85,9 +92,9 @@ BuildRequires: make
 BuildRequires: pandoc
 
 %description
-RDMA core userspace infrastructure and documentation, including kernel
-driver-specific modprobe override configs, IPoIB network scripts,
-dracut rules, and the rdma-ndd utility.
+RDMA core userspace infrastructure and documentation, including initialization
+scripts, kernel driver-specific modprobe override configs, IPoIB network
+scripts, dracut rules, and the rdma-ndd utility.
 
 %package devel
 Summary: RDMA core development libraries and headers
@@ -107,6 +114,13 @@ Provides: infiniband-diags-devel = %{version}-%{release}
 Obsoletes: infiniband-diags-devel < %{version}-%{release}
 Provides: libibmad-devel = %{version}-%{release}
 Obsoletes: libibmad-devel < %{version}-%{release}
+%if %{with_static}
+# Since our pkg-config files include private references to these packages they
+# need to have their .pc files installed too, even for dynamic linking, or
+# pkg-config breaks.
+BuildRequires: pkgconfig(libnl-3.0)
+BuildRequires: pkgconfig(libnl-route-3.0)
+%endif
 
 %description devel
 RDMA core development libraries and headers.
@@ -251,8 +265,18 @@ easy, object-oriented access to IB verbs.
 
 %prep
 %setup -q
+%patch1 -p1
+%patch2 -p1
 %patch3 -p1
 %patch300 -p1
+%patch301 -p1
+%if 0%{?fedora}
+%patch9998 -p1
+%endif
+%if 0%{?rhel}
+%patch9000 -p1
+%patch9999 -p1
+%endif
 
 %build
 
@@ -307,7 +331,6 @@ mkdir -p %{buildroot}/%{_sysconfdir}/rdma
 # Red Hat specific glue
 %global dracutlibdir %{_prefix}/lib/dracut
 %global sysmodprobedir %{_prefix}/lib/modprobe.d
-mkdir -p %{buildroot}%{_sysconfdir}/udev/rules.d
 mkdir -p %{buildroot}%{_libexecdir}
 mkdir -p %{buildroot}%{_udevrulesdir}
 mkdir -p %{buildroot}%{dracutlibdir}/modules.d/05rdma
@@ -335,17 +358,11 @@ install -D -m0644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/
 # Delete the package's init.d scripts
 rm -rf %{buildroot}/%{_initrddir}/
 
-# Remove ibverbs provider libs we don't support
-rm -f %{buildroot}/%{_libdir}/libibverbs/libcxgb3-rdmav*.so
-rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/cxgb3.driver
-rm -f %{buildroot}/%{_libdir}/libibverbs/libocrdma-rdmav*.so
-rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ocrdma.driver
-rm -f %{buildroot}/%{_libdir}/libibverbs/libnes-rdmav*.so
-rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/nes.driver
-rm -f %{buildroot}/%{_libdir}/libibverbs/libmthca-rdmav*.so
-rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/mthca.driver
-rm -f %{buildroot}/%{_libdir}/libibverbs/libipathverbs-rdmav*.so
-rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver
+%ldconfig_scriptlets -n libibverbs
+
+%ldconfig_scriptlets -n libibumad
+
+%ldconfig_scriptlets -n librdmacm
 
 %post -n rdma-core
 if [ -x /sbin/udevadm ]; then
@@ -354,22 +371,6 @@ if [ -x /sbin/udevadm ]; then
 /sbin/udevadm trigger --subsystem-match=infiniband_mad --action=change || true
 fi
 
-%post -n infiniband-diags -p /sbin/ldconfig
-%postun -n infiniband-diags
-%ldconfig_postun
-
-%post -n libibverbs -p /sbin/ldconfig
-%postun -n libibverbs
-%ldconfig_postun
-
-%post -n libibumad -p /sbin/ldconfig
-%postun -n libibumad
-%ldconfig_postun
-
-%post -n librdmacm -p /sbin/ldconfig
-%postun -n librdmacm
-%ldconfig_postun
-
 %post -n ibacm
 %systemd_post ibacm.service
 %preun -n ibacm
@@ -394,20 +395,21 @@ fi
 %files
 %dir %{_sysconfdir}/rdma
 %dir %{_docdir}/%{name}
+%doc %{_docdir}/%{name}/70-persistent-ipoib.rules
 %doc %{_docdir}/%{name}/README.md
+%doc %{_docdir}/%{name}/rxe.md
 %doc %{_docdir}/%{name}/udev.md
+%doc %{_docdir}/%{name}/tag_matching.md
 %config(noreplace) %{_sysconfdir}/rdma/mlx4.conf
 %config(noreplace) %{_sysconfdir}/rdma/modules/infiniband.conf
 %config(noreplace) %{_sysconfdir}/rdma/modules/iwarp.conf
 %config(noreplace) %{_sysconfdir}/rdma/modules/opa.conf
 %config(noreplace) %{_sysconfdir}/rdma/modules/rdma.conf
 %config(noreplace) %{_sysconfdir}/rdma/modules/roce.conf
-%config(noreplace) %{_sysconfdir}/udev/rules.d/*
 %dir %{_sysconfdir}/modprobe.d
 %ifnarch s390
 %config(noreplace) %{_sysconfdir}/modprobe.d/mlx4.conf
 %endif
-%config(noreplace) %{_sysconfdir}/modprobe.d/truescale.conf
 %{_unitdir}/rdma-hw.target
 %{_unitdir}/rdma-load-modules@.service
 %dir %{dracutlibdir}
@@ -425,7 +427,6 @@ fi
 %dir %{sysmodprobedir}
 %{sysmodprobedir}/libmlx4.conf
 %{_libexecdir}/mlx4-setup.sh
-%{_libexecdir}/truescale-serdes.cmds
 %{_sbindir}/rdma-ndd
 %{_bindir}/ibdev2netdev
 %{_unitdir}/rdma-ndd.service
@@ -539,13 +540,6 @@ fi
 %endif
 %config(noreplace) %{_sysconfdir}/libibverbs.d/*.driver
 %doc %{_docdir}/%{name}/libibverbs.md
-%doc %{_docdir}/%{name}/rxe.md
-%doc %{_docdir}/%{name}/tag_matching.md
-%{_mandir}/man7/rxe*
-%ifnarch s390
-%{_mandir}/man7/mlx4dv*
-%{_mandir}/man7/mlx5dv*
-%endif
 
 %files -n libibverbs-utils
 %{_bindir}/ibv_*
@@ -582,7 +576,7 @@ fi
 %files -n librdmacm
 %{_libdir}/librdmacm*.so.*
 %dir %{_libdir}/rsocket
-%{_libdir}/rsocket/librspreload.so*
+%{_libdir}/rsocket/*.so*
 %doc %{_docdir}/%{name}/librdmacm.md
 %{_mandir}/man7/rsocket.*
 
@@ -638,6 +632,14 @@ fi
 %endif
 
 %changelog
+* Wed Feb 08 2023 Michal Schmidt <mschmidt@redhat.com> - 44.0-2.1
+- Do not use unsupported Protect* options in systemd unit files.
+- Resolves: rhbz#2141462
+
+* Wed Feb 08 2023 Michal Schmidt <mschmidt@redhat.com> - 44.0-2
+- Update to upstream release v44.0
+- Resolves: rhbz#2110934, rhbz#2112931, rhbz#2142691
+
 * Fri Aug 05 2022 Michal Schmidt <mschmidt@redhat.com> - 41.0-1
 - Update to upstream release v41.0
 - Resolves: rhbz#2049518