diff --git a/CMakeLists.txt b/CMakeLists.txt
index e16b955991558a..fd9355787291c0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,8 +45,6 @@
 #   -DNO_PYVERBS=1 (default, build pyverbs)
 #      Invoke cython to build pyverbs. Usually you will run with this option
 #      is set, but it will be disabled for travis runs.
-#   -DWITH_IBDIAGS=False (default True)
-#      Do not build infiniband-diags components
 #   -DWITH_IBDIAGS_COMPAT=True (default False)
 #      Include obsolete scripts. These scripts are replaced by C programs with
 #      a different interface now.
@@ -160,8 +158,6 @@ endif()
 set(DISTRO_FLAVOUR "None" CACHE
   STRING "Flavour of distribution to install for. This primarily impacts the init.d scripts installed.")
 
-set(WITH_IBDIAGS "True" CACHE BOOL "Build infiniband-diags stuff too")
-
 #-------------------------
 # Load CMake components
 set(BUILDLIB "${CMAKE_SOURCE_DIR}/buildlib")
@@ -621,7 +617,6 @@ add_subdirectory(providers/ipathverbs)
 add_subdirectory(providers/rxe)
 add_subdirectory(providers/rxe/man)
 
-if (WITH_IBDIAGS)
 add_subdirectory(ibdiags/libibmad/src)
 add_subdirectory(ibdiags/libibnetdisc/src)
 add_subdirectory(ibdiags/libibnetdisc/man)
@@ -629,7 +624,6 @@ add_subdirectory(ibdiags/src)
 add_subdirectory(ibdiags/scripts)
 add_subdirectory(ibdiags/man)
 add_subdirectory(ibdiags/doc/rst)
-endif()
 
 if (CYTHON_EXECUTABLE)
   add_subdirectory(pyverbs)
diff --git a/suse/rdma-core.spec b/suse/rdma-core.spec
index c0d4922658cb6a..a4614646fb2de9 100644
--- a/suse/rdma-core.spec
+++ b/suse/rdma-core.spec
@@ -34,6 +34,8 @@ Group:          Productivity/Networking/Other
 %define umad_so_major   3
 %define mlx4_so_major   1
 %define mlx5_so_major   1
+%define ibnetdisc_major 5
+%define mad_major       5
 
 %define  verbs_lname  libibverbs%{verbs_so_major}
 %define  rdmacm_lname librdmacm%{rdmacm_so_major}
@@ -160,6 +162,10 @@ BuildRequires:  pkgconfig(libnl-3.0)
 BuildRequires:  pkgconfig(libnl-route-3.0)
 %endif
 
+Requires: infiniband-diags = %{version}-%{release}
+Provides: infiniband-diags-devel = %{version}-%{release}
+Obsoletes: infiniband-diags-devel < %{version}-%{release}
+
 %description devel
 RDMA core development libraries and headers.
 
@@ -232,6 +238,14 @@ Group:          System/Libraries
 %description -n %mlx5_lname
 This package contains the mlx5 runtime library.
 
+%package    -n libibnetdisc%{ibnetdisc_major}
+Summary:        Infiniband Net Discovery runtime library
+Group:          System/Libraries
+
+%description -n libibnetdisc%{ibnetdisc_major}
+This package contains the Infiniband Net Discovery runtime library needed
+mainly by infiniband-diags.
+
 %package -n     libibverbs-utils
 Summary:        Examples for the libibverbs library
 Group:          Productivity/Networking/Other
@@ -259,6 +273,23 @@ user applications need not know about this daemon as long as their app
 uses librdmacm to handle connection bring up/tear down.  The librdmacm
 library knows how to talk directly to the ibacm daemon to retrieve data.
 
+%package -n infiniband-diags
+Summary:        InfiniBand Diagnostic Tools
+Group:          Productivity/Networking/Diagnostic
+
+%description -n infiniband-diags
+diags provides IB diagnostic programs and scripts needed to diagnose an
+IB subnet.
+
+%package -n     libibmad%{mad_major}
+Summary:        Libibmad runtime library
+Group:          System/Libraries
+
+%description -n libibmad%{mad_major}
+Libibmad provides low layer IB functions for use by the IB diagnostic
+and management programs. These include MAD, SA, SMP, and other basic IB
+functions. This package contains the runtime library.
+
 %package -n iwpmd
 Summary:        Userspace iWarp Port Mapper daemon
 Group:          Development/Libraries/C and C++
@@ -372,7 +403,7 @@ easy, object-oriented access to IB verbs.
          -DCMAKE_INSTALL_RUNDIR:PATH=%{_rundir} \
          -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}-%{version} \
          -DCMAKE_INSTALL_UDEV_RULESDIR:PATH=%{_udevrulesdir} \
-         -DWITH_IBDIAGS:BOOL=False \
+         -DCMAKE_INSTALL_PERLDIR:PATH=%{perl_vendorlib} \
 %if %{with_static}
          -DENABLE_STATIC=1 \
 %endif
@@ -444,6 +475,12 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
 %post -n %rdmacm_lname -p /sbin/ldconfig
 %postun -n %rdmacm_lname -p /sbin/ldconfig
 
+%post -n libibnetdisc%{ibnetdisc_major} -p /sbin/ldconfig
+%postun -n libibnetdisc%{ibnetdisc_major} -p /sbin/ldconfig
+
+%post -n libibmad%{mad_major} -p /sbin/ldconfig
+%postun -n libibmad%{mad_major} -p /sbin/ldconfig
+
 %post
 # we ship udev rules, so trigger an update.
 /sbin/udevadm trigger --subsystem-match=infiniband --action=change || true
@@ -567,6 +604,7 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
 %endif
 %{_libdir}/lib*.so
 %{_libdir}/pkgconfig/*.pc
+%{_mandir}/man3/ibnd_*
 %{_mandir}/man3/ibv_*
 %{_mandir}/man3/rdma*
 %{_mandir}/man3/umad*
@@ -592,6 +630,14 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
 %{_mandir}/man7/rxe*
 %{_mandir}/man8/rxe*
 
+%files -n libibnetdisc%{ibnetdisc_major}
+%defattr(-, root, root)
+%{_libdir}/libibnetdisc.so.*
+
+%files -n libibmad%{mad_major}
+%defattr(-, root, root)
+%{_libdir}/libibmad.so.*
+
 %files -n %verbs_lname
 %defattr(-,root,root)
 %{_libdir}/libibverbs*.so.*
@@ -627,6 +673,74 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
 %{_sbindir}/rcibacm
 %doc %{_docdir}/%{name}-%{version}/ibacm.md
 
+%files -n infiniband-diags
+%defattr(-, root, root)
+%config %{_sysconfdir}/infiniband-diags/error_thresholds
+%dir %{_sysconfdir}/infiniband-diags
+%config(noreplace) %{_sysconfdir}/infiniband-diags/*
+%{_sbindir}/ibaddr
+%{_mandir}/man8/ibaddr*
+%{_sbindir}/ibnetdiscover
+%{_mandir}/man8/ibnetdiscover*
+%{_sbindir}/ibping
+%{_mandir}/man8/ibping*
+%{_sbindir}/ibportstate
+%{_mandir}/man8/ibportstate*
+%{_sbindir}/ibroute
+%{_mandir}/man8/ibroute.*
+%{_sbindir}/ibstat
+%{_mandir}/man8/ibstat.*
+%{_sbindir}/ibsysstat
+%{_mandir}/man8/ibsysstat*
+%{_sbindir}/ibtracert
+%{_mandir}/man8/ibtracert*
+%{_sbindir}/perfquery
+%{_mandir}/man8/perfquery*
+%{_sbindir}/sminfo
+%{_mandir}/man8/sminfo*
+%{_sbindir}/smpdump
+%{_mandir}/man8/smpdump*
+%{_sbindir}/smpquery
+%{_mandir}/man8/smpquery*
+%{_sbindir}/saquery
+%{_mandir}/man8/saquery*
+%{_sbindir}/vendstat
+%{_mandir}/man8/vendstat*
+%{_sbindir}/iblinkinfo
+%{_mandir}/man8/iblinkinfo*
+%{_sbindir}/ibqueryerrors
+%{_mandir}/man8/ibqueryerrors*
+%{_sbindir}/ibcacheedit
+%{_mandir}/man8/ibcacheedit*
+%{_sbindir}/ibccquery
+%{_mandir}/man8/ibccquery*
+%{_sbindir}/ibccconfig
+%{_mandir}/man8/ibccconfig*
+%{_sbindir}/dump_fts
+%{_mandir}/man8/dump_fts*
+%{_sbindir}/ibhosts
+%{_mandir}/man8/ibhosts*
+%{_sbindir}/ibswitches
+%{_mandir}/man8/ibswitches*
+%{_sbindir}/ibnodes
+%{_mandir}/man8/ibnodes*
+%{_sbindir}/ibrouters
+%{_mandir}/man8/ibrouters*
+%{_sbindir}/ibfindnodesusing.pl
+%{_mandir}/man8/ibfindnodesusing*
+%{_sbindir}/ibidsverify.pl
+%{_mandir}/man8/ibidsverify*
+%{_sbindir}/check_lft_balance.pl
+%{_mandir}/man8/check_lft_balance*
+%{_sbindir}/dump_lfts.sh
+%{_mandir}/man8/dump_lfts*
+%{_sbindir}/dump_mfts.sh
+%{_mandir}/man8/dump_mfts*
+%{_sbindir}/ibstatus
+%{_mandir}/man8/ibstatus*
+%{_mandir}/man8/infiniband-diags*
+%{perl_vendorlib}/IBswcountlimits.pm
+
 %files -n iwpmd
 %defattr(-,root,root)
 %dir %{_sysconfdir}/rdma
