Brice -- Is there a reason to not bring this to v1.4?
On Mar 21, 2012, at 3:29 AM, bgog...@osl.iu.edu wrote: > Author: bgoglin > Date: 2012-03-21 03:29:17 EDT (Wed, 21 Mar 2012) > New Revision: 4417 > URL: https://svn.open-mpi.org/trac/hwloc/changeset/4417 > > Log: > Add Port info attribute to network OS devices inside OpenFabrics PCI > devices so as to identify which interface corresponds to which port. > > Don't do it for all network OS devices because the dev_id sysfs > attribute for OFED (dev_id = port-1) is not strictly equivalent > to its generic meaning (shared nic id, 0 is most cases). > > > Text files modified: > trunk/NEWS | 2 ++ > trunk/src/topology-libpci.c | 21 +++++++++++++++++++++ > 2 files changed, 23 insertions(+), 0 deletions(-) > > Modified: trunk/NEWS > ============================================================================== > --- trunk/NEWS (original) > +++ trunk/NEWS 2012-03-21 03:29:17 EDT (Wed, 21 Mar 2012) > @@ -47,6 +47,8 @@ > + Instruction caches are enabled in lstopo by default. User --no-icaches > to disable them. > * Misc > + + Add Port info attribute to network OS devices inside OpenFabrics PCI > + devices so as to identify which interface corresponds to which port. > + Remove support for "Proc" type name, it was superseded by "PU" in v1.0. > > > > Modified: trunk/src/topology-libpci.c > ============================================================================== > --- trunk/src/topology-libpci.c (original) > +++ trunk/src/topology-libpci.c 2012-03-21 03:29:17 EDT (Wed, 21 Mar > 2012) > @@ -25,6 +25,7 @@ > #include <hwloc/linux.h> > #include <dirent.h> > #include <sys/types.h> > +#include <sys/stat.h> > #endif > > #define CONFIG_SPACE_CACHESIZE 256 > @@ -123,6 +124,7 @@ > hwloc_linux_net_class_fillinfos(struct hwloc_topology *topology > __hwloc_attribute_unused, struct hwloc_obj *obj, const char *osdevpath) > { > FILE *fd; > + struct stat st; > char path[256]; > snprintf(path, sizeof(path), "%s/address", osdevpath); > fd = fopen(path, "r"); > @@ -136,6 +138,25 @@ > } > fclose(fd); > } > + snprintf(path, sizeof(path), "%s/device/infiniband", osdevpath); > + if (!stat(path, &st)) { > + snprintf(path, sizeof(path), "%s/dev_id", osdevpath); > + fd = fopen(path, "r"); > + if (fd) { > + char hexid[16]; > + if (fgets(hexid, sizeof(hexid), fd)) { > + char *eoid; > + unsigned long port; > + port = strtoul(hexid, &eoid, 0); > + if (eoid != hexid) { > + char portstr[16]; > + snprintf(portstr, sizeof(portstr), "%ld", port+1); > + hwloc_obj_add_info(obj, "Port", portstr); > + } > + } > + fclose(fd); > + } > + } > } > static void > hwloc_linux_lookup_net_class(struct hwloc_topology *topology, struct > hwloc_obj *pcidev, const char *pcidevpath) > _______________________________________________ > hwloc-svn mailing list > hwloc-...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-svn -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/