summaryrefslogtreecommitdiff
path: root/mst_utils
diff options
authorTzafrir Cohen <tzafrir@debian.org>2025-09-17 07:08:47 +0300
committergit-ubuntu importer <ubuntu-devel-discuss@lists.ubuntu.com>2025-09-17 10:47:15 +0000
commit5c47b3f775633ee4f144f19ba638c2c1073d97b1 (patch)
treef2bb8e840c6e34827a81a5c84e03592da45ae916 /mst_utils
parentefcd6aa58a664da726c42ad146004377b7a57c91 (diff)
Imported using git-ubuntu import.
Notes
Notes: * New upstream release (Closes: #1097420). - Remove patches: - dev_mgt-include-missing-function-declaration.patch - fwctrl-fix-reg-status-typo.patch - fwctrl-include-missing-function-declarations.patch - kernel_fallthrough.patch - kernel_ioremap_check_null.patch - kernel_statify.patch * Note that fwctl is supported
Diffstat (limited to 'mst_utils')
-rw-r--r--mst_utils/Makefile.am12
-rw-r--r--mst_utils/Makefile.in98
-rw-r--r--mst_utils/cable_discovery.cpp130
-rw-r--r--mst_utils/mdevices_info.c66
4 files changed, 288 insertions, 18 deletions
diff --git a/mst_utils/Makefile.am b/mst_utils/Makefile.am
index 251bcd2..e0e23a5 100644
--- a/mst_utils/Makefile.am
+++ b/mst_utils/Makefile.am
@@ -40,4 +40,14 @@ mstdevices_info_DEPENDENCIES = $(top_builddir)/${MTCR_CONF_DIR}/libmtcr_ul.la \
$(top_builddir)/dev_mgt/libdev_mgt.la \
$(top_builddir)/reg_access/libreg_access.la
mstdevices_info_LDADD = $(mstdevices_info_DEPENDENCIES) ${LDL}
-mstdevices_info_LDFLAGS = -static \ No newline at end of file
+mstdevices_info_LDFLAGS = -static
+
+if ENABLE_CABLES
+bin_PROGRAMS += mstcable_discovery
+mstcable_discovery_SOURCES = cable_discovery.cpp
+mstcable_discovery_DEPENDENCIES = $(top_builddir)/${MTCR_CONF_DIR}/libmtcr_ul.la \
+ $(top_builddir)/dev_mgt/libdev_mgt.la \
+ $(top_builddir)/reg_access/libreg_access.la
+ mstcable_discovery_LDADD = $(mstcable_discovery_DEPENDENCIES) ${LDL}
+ mstcable_discovery_LDFLAGS = -static
+endif \ No newline at end of file
diff --git a/mst_utils/Makefile.in b/mst_utils/Makefile.in
index abdb671..95f2bfe 100644
--- a/mst_utils/Makefile.in
+++ b/mst_utils/Makefile.in
@@ -110,28 +110,38 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-bin_PROGRAMS = mstdevices_info$(EXEEXT)
+bin_PROGRAMS = mstdevices_info$(EXEEXT) $(am__EXEEXT_1)
+@ENABLE_CABLES_TRUE@am__append_1 = mstcable_discovery
subdir = mst_utils
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/config/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
- $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+@ENABLE_CABLES_TRUE@am__EXEEXT_1 = mstcable_discovery$(EXEEXT)
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
-am_mstdevices_info_OBJECTS = mdevices_info.$(OBJEXT)
-mstdevices_info_OBJECTS = $(am_mstdevices_info_OBJECTS)
+am__mstcable_discovery_SOURCES_DIST = cable_discovery.cpp
+@ENABLE_CABLES_TRUE@am_mstcable_discovery_OBJECTS = \
+@ENABLE_CABLES_TRUE@ cable_discovery.$(OBJEXT)
+mstcable_discovery_OBJECTS = $(am_mstcable_discovery_OBJECTS)
am__DEPENDENCIES_1 =
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
+mstcable_discovery_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(mstcable_discovery_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_mstdevices_info_OBJECTS = mdevices_info.$(OBJEXT)
+mstdevices_info_OBJECTS = $(am_mstdevices_info_OBJECTS)
mstdevices_info_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(AM_CFLAGS) $(CFLAGS) $(mstdevices_info_LDFLAGS) $(LDFLAGS) \
@@ -170,8 +180,27 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(mstdevices_info_SOURCES)
-DIST_SOURCES = $(mstdevices_info_SOURCES)
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+SOURCES = $(mstcable_discovery_SOURCES) $(mstdevices_info_SOURCES)
+DIST_SOURCES = $(am__mstcable_discovery_SOURCES_DIST) \
+ $(mstdevices_info_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -208,13 +237,13 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+CABLE_ACCESS_DIR = @CABLE_ACCESS_DIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
COMPILER_FPIC = @COMPILER_FPIC@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
-CURL_INC_DIR = @CURL_INC_DIR@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
@@ -268,6 +297,7 @@ MUPARSER_CFLAGS = @MUPARSER_CFLAGS@
MUPARSER_LIBS = @MUPARSER_LIBS@
NM = @NM@
NMEDIT = @NMEDIT@
+NVML_DIR = @NVML_DIR@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OFED_BUILD = @OFED_BUILD@
@@ -281,6 +311,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PROJECT = @PROJECT@
RANLIB = @RANLIB@
SED = @SED@
@@ -293,6 +326,7 @@ TOOLS_BUILD_TIME = @TOOLS_BUILD_TIME@
TOOLS_CRYPTO = @TOOLS_CRYPTO@
TOOLS_GIT_SHA = @TOOLS_GIT_SHA@
VERSION = @VERSION@
+VFIO_DRIVER_DIR = @VFIO_DRIVER_DIR@
XZ_UTILS_DIR = @XZ_UTILS_DIR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
@@ -320,6 +354,8 @@ default_en_inband = @default_en_inband@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
+expat_CFLAGS = @expat_CFLAGS@
+expat_LIBS = @expat_LIBS@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -329,13 +365,23 @@ htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
+libcurl_CFLAGS = @libcurl_CFLAGS@
+libcurl_LIBS = @libcurl_LIBS@
libdir = @libdir@
libexecdir = @libexecdir@
+liblzma_CFLAGS = @liblzma_CFLAGS@
+liblzma_LIBS = @liblzma_LIBS@
+libxml2_CFLAGS = @libxml2_CFLAGS@
+libxml2_LIBS = @libxml2_LIBS@
+libz_CFLAGS = @libz_CFLAGS@
+libz_LIBS = @libz_LIBS@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
+openssl_CFLAGS = @openssl_CFLAGS@
+openssl_LIBS = @openssl_LIBS@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -356,10 +402,17 @@ mstdevices_info_DEPENDENCIES = $(top_builddir)/${MTCR_CONF_DIR}/libmtcr_ul.la \
mstdevices_info_LDADD = $(mstdevices_info_DEPENDENCIES) ${LDL}
mstdevices_info_LDFLAGS = -static
+@ENABLE_CABLES_TRUE@mstcable_discovery_SOURCES = cable_discovery.cpp
+@ENABLE_CABLES_TRUE@mstcable_discovery_DEPENDENCIES = $(top_builddir)/${MTCR_CONF_DIR}/libmtcr_ul.la \
+@ENABLE_CABLES_TRUE@ $(top_builddir)/dev_mgt/libdev_mgt.la \
+@ENABLE_CABLES_TRUE@ $(top_builddir)/reg_access/libreg_access.la
+
+@ENABLE_CABLES_TRUE@mstcable_discovery_LDADD = $(mstcable_discovery_DEPENDENCIES) ${LDL}
+@ENABLE_CABLES_TRUE@mstcable_discovery_LDFLAGS = -static
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -440,6 +493,10 @@ clean-binPROGRAMS:
echo " rm -f" $$list; \
rm -f $$list
+mstcable_discovery$(EXEEXT): $(mstcable_discovery_OBJECTS) $(mstcable_discovery_DEPENDENCIES) $(EXTRA_mstcable_discovery_DEPENDENCIES)
+ @rm -f mstcable_discovery$(EXEEXT)
+ $(AM_V_CXXLD)$(mstcable_discovery_LINK) $(mstcable_discovery_OBJECTS) $(mstcable_discovery_LDADD) $(LIBS)
+
mstdevices_info$(EXEEXT): $(mstdevices_info_OBJECTS) $(mstdevices_info_DEPENDENCIES) $(EXTRA_mstdevices_info_DEPENDENCIES)
@rm -f mstdevices_info$(EXEEXT)
$(AM_V_CCLD)$(mstdevices_info_LINK) $(mstdevices_info_OBJECTS) $(mstdevices_info_LDADD) $(LIBS)
@@ -450,6 +507,7 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cable_discovery.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mdevices_info.Po@am__quote@
.c.o:
@@ -476,6 +534,30 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
mostlyclean-libtool:
-rm -f *.lo
diff --git a/mst_utils/cable_discovery.cpp b/mst_utils/cable_discovery.cpp
new file mode 100644
index 0000000..f7c9850
--- /dev/null
+++ b/mst_utils/cable_discovery.cpp
@@ -0,0 +1,130 @@
+#include <cstdlib>
+#include <cstdio>
+#include <string>
+#include <cstring>
+#include <fstream>
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include "include/mtcr_ul/mtcr.h"
+#include "mtcr_ul/mtcr_cables.h"
+#include "dev_mgt/tools_dev_types.h"
+#include "reg_access/reg_access.h"
+#include "tools_layouts/reg_access_hca_layouts.h"
+
+
+const std::string MSTFLINT_DEV_DIR = "/dev/mstflint/";
+
+int checkModule(mfile* mf, u_int32_t localPort)
+{
+ int ret = -1;
+
+ if ((localPort < 1) || !mf) {
+ /*std::cout << "Invalid local port" << std::endl; */
+ return ret;
+ }
+
+ struct reg_access_hca_pmlp_reg_ext pmlp;
+
+ memset(&pmlp, 0, sizeof(pmlp));
+ pmlp.local_port = localPort;
+ if (reg_access_pmlp(mf, REG_ACCESS_METHOD_GET, &pmlp)) {
+ /* std::cout << "Failed to get module" << std::endl; */
+ } else {
+ if (pmlp.width) {
+ ret = pmlp.lane_module_mapping[0].module;
+ }
+ }
+
+ return ret;
+}
+
+void CreateDirectoryIfNotExist(const std::string& poNewDirectory)
+{
+ if (mkdir(poNewDirectory.c_str(),
+ 0777)) {
+ switch (errno) {
+ case EEXIST:
+ case 0:
+ return;
+
+ default:
+ throw std::runtime_error("Unable to create the directory: " + poNewDirectory + " " + strerror(errno));
+ return;
+ }
+ }
+}
+
+int main(int argc, char* argv[])
+{
+ dev_info * devs = NULL;
+ int device_count = 0;
+ int num_ports = -1;
+ int verbose = 0;
+ int domain_needed = 0;
+ int ul_mode = 0;
+ unsigned int cable_count = 0;
+
+ devs = mdevices_info_v(0xffffffff, &device_count, 1);
+
+ if (!device_count || !devs) {
+ printf("\nNo supported PCIe devices were found.\n");
+ if (devs) {
+ free(devs);
+ }
+ }
+
+ for (int i = 0; i < device_count; i++) {
+ mfile* mf = mopen_adv(devs[i].dev_name, (MType)(MST_DEFAULT | MST_CABLE));
+ if (!mf) {
+ continue;
+ }
+
+ u_int32_t hw_id = 0;
+ u_int32_t hw_rev = 0;
+ dm_dev_id_t devid_type = DeviceUnknown;
+ if (dm_get_device_id(mf, &devid_type, &hw_id, &hw_rev) != GET_DEV_ID_SUCCESS) {
+ mclose(mf);
+ continue;
+ }
+
+
+ if (dm_is_5th_gen_hca(devid_type) && !dm_is_bluefield(devid_type)) {
+ num_ports = 1;
+ if (checkModule(mf, num_ports) == -1) {
+ mclose(mf);
+ continue;
+ }
+ } else if (dm_dev_is_switch(devid_type) && !dm_is_gpu(devid_type)) {
+ num_ports = dm_get_hw_ports_num(devid_type);
+ } else {
+ mclose(mf);
+ continue;
+ }
+
+ mclose(mf);
+
+ for (int port = 0; port < num_ports; port++) {
+ std::string cable_name = std::string(devs[i].dev_name) + "_" + CABLE_DEVICE_STR + std::to_string(port);
+ mfile * cable_mf = mopen_adv(cable_name.c_str(), (MType)(MST_DEFAULT | MST_CABLE));
+ if (!cable_mf) {
+ continue;
+ } else {
+ CreateDirectoryIfNotExist(MSTFLINT_DEV_DIR);
+ std::ofstream mstDeviceFile(MSTFLINT_DEV_DIR + cable_name, std::ios::out | std::ios::trunc);
+ mstDeviceFile.close();
+ cable_count++;
+ }
+
+ mclose(cable_mf);
+ }
+ }
+
+ if (cable_count == 0) {
+ printf("\nNo supported NVIDIA cables were found.\n");
+ } else {
+ printf("Added %d NVIDIA cable devices.\n", cable_count);
+ }
+
+ return 0;
+}
diff --git a/mst_utils/mdevices_info.c b/mst_utils/mdevices_info.c
index 72cffa0..eea32fa 100644
--- a/mst_utils/mdevices_info.c
+++ b/mst_utils/mdevices_info.c
@@ -238,21 +238,24 @@ int print_rdma_bond_dev(char* net_dev_secondary, char* net_dev_primary)
}
void print_pci_info(dev_info* dev, int domain_needed)
{
+ char dbdf[16384] = {0};
char fmt[16384] = {0};
/* Add PCI info */
if (domain_needed) {
- sprintf(fmt, "%04x:%02x:%02x.%x", dev->pci.domain, dev->pci.bus, dev->pci.dev, dev->pci.func);
- printf("%-16s", fmt);
+ sprintf(dbdf, "%04x:%02x:%02x.%x", dev->pci.domain, dev->pci.bus, dev->pci.dev, dev->pci.func);
+ printf("%-16s", dbdf);
} else {
- sprintf(fmt, "%02x:%02x.%x", dev->pci.bus, dev->pci.dev, dev->pci.func);
- printf("%-10s", fmt);
+ sprintf(dbdf, "%02x:%02x.%x", dev->pci.bus, dev->pci.dev, dev->pci.func);
+ printf("%-10s", dbdf);
}
int hasIB = fmt_ib_dev(dev, fmt);
if (hasIB) {
printf("%-16s", fmt);
+ } else {
+ printf("%-16s", " ");
}
/* Add NET devices info */
@@ -284,6 +287,8 @@ void print_pci_info(dev_info* dev, int domain_needed)
/* Add NUMA node */
printf("%-6s", dev->pci.numa_node);
+ printf("vfio-%-6s", dbdf);
+
printf("\n");
}
@@ -385,16 +390,44 @@ int main(int argc, char** argv)
if (verbose) {
if (domain_needed) {
if (ul_mode) {
- printf("%-24s%-9s%-16s%-16s%-40s%-6s\n", "DEVICE_TYPE", "MST", "PCI", "RDMA", "NET", "NUMA");
+ printf("%-24s%-9s%-16s%-16s%-40s%-6s%-16s\n",
+ "DEVICE_TYPE",
+ "MST",
+ "PCI",
+ "RDMA",
+ "NET",
+ "NUMA",
+ "VFIO");
} else {
- printf("%-24s%-30s%-16s%-16s%-40s%-6s\n", "DEVICE_TYPE", "MST", "PCI", "RDMA", "NET", "NUMA");
+ printf("%-24s%-30s%-16s%-16s%-40s%-6s%-16s\n",
+ "DEVICE_TYPE",
+ "MST",
+ "PCI",
+ "RDMA",
+ "NET",
+ "NUMA",
+ "VFIO");
}
/* printf("%-30s%-16s%-16s%-8s%-20s\n", "---", "-----------", "---", "----", "---"); */
} else {
if (ul_mode) {
- printf("%-24s%-9s%-10s%-16s%-40s%-6s\n", "DEVICE_TYPE", "MST", "PCI", "RDMA", "NET", "NUMA");
+ printf("%-24s%-9s%-10s%-16s%-40s%-6s%-16s\n",
+ "DEVICE_TYPE",
+ "MST",
+ "PCI",
+ "RDMA",
+ "NET",
+ "NUMA",
+ "VFIO");
} else {
- printf("%-24s%-30s%-10s%-16s%-40s%-6s\n", "DEVICE_TYPE", "MST", "PCI", "RDMA", "NET", "NUMA");
+ printf("%-24s%-30s%-10s%-16s%-40s%-6s%-16s\n",
+ "DEVICE_TYPE",
+ "MST",
+ "PCI",
+ "RDMA",
+ "NET",
+ "NUMA",
+ "VFIO");
}
/* printf("%-30s%-16s%-10s%-8s%-20s\n", "---", "-----------", "---", "----", "---"); */
}
@@ -403,7 +436,7 @@ int main(int argc, char** argv)
/* dev_lst = devs; */
/* dev_lst_len = len; */
for (i = 0; i < len; i++) {
- if (devs[i].type == MDEVS_TAVOR_CR) {
+ if ((devs[i].type == MDEVS_TAVOR_CR) && (strstr(devs[i].dev_name, "cable_") == NULL)) {
mfile* mf = mopen(devs[i].dev_name);
if (is_pcie_switch_device(mf)) {
@@ -495,6 +528,21 @@ int main(int argc, char** argv)
printf("\n");
}
+ int cable_found = 0;
+ for (i = 0; i < len; i++) {
+ if (devs[i].dev_name && (strstr(devs[i].dev_name, "cable_") != NULL)) {
+ if (cable_found == 0) {
+ printf("\nCable devices:\n");
+ printf("---------------\n");
+ cable_found = 1;
+ }
+ printf("%s\n", devs[i].dev_name);
+ }
+ }
+ if (cable_found) {
+ printf("\n");
+ }
+
rc = 0;
cleanup:
if (devs) {