[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1.1-60-gb61fc70

Service Account noreply at mpich.org
Mon Jul 7 12:46:29 CDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".

The branch, master has been updated
       via  b61fc70291f34acf1995ca3988207af5038f927b (commit)
       via  82d16bac6c2e0d26042b4ff282e1e8e98830ae34 (commit)
      from  6b62d390c90af7acdd740bc076c847ce9e8b44c2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/b61fc70291f34acf1995ca3988207af5038f927b

commit b61fc70291f34acf1995ca3988207af5038f927b
Author: Pavan Balaji <balaji at mcs.anl.gov>
Date:   Sun May 19 00:17:55 2013 -0500

    Hydra-specific patches for hwloc.
    
    Picked up the relevant parts of [a460c1ee], [dab3166d], and [1eb07c6e].
    
    Signed-off-by: Antonio J. Pena <apenya at mcs.anl.gov>

diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
index ca9c00c..9c58e93 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
@@ -9,10 +9,10 @@ ACLOCAL_AMFLAGS = -I ./config
 
 SUBDIRS = src include
 if HWLOC_BUILD_STANDALONE
-SUBDIRS += utils tests
+# SUBDIRS += utils tests
 # We need doc/ if HWLOC_BUILD_DOXYGEN, or during make install if HWLOC_INSTALL_DOXYGEN.
 # There's no INSTALL_SUBDIRS, so always enter doc/ and check HWLOC_BUILD/INSTALL_DOXYGEN there
-SUBDIRS += doc
+# SUBDIRS += doc
 endif
 
 # Do not let automake automatically add the non-standalone dirs to the
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
index df42802..c73edc2 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
@@ -1,2 +1,9 @@
-:
-autoreconf ${autoreconf_args:-"-ivf"}
+#!/bin/sh
+
+if [ -n "$MPICH_AUTOTOOLS_DIR" ] ; then
+    autoreconf=${MPICH_AUTOTOOLS_DIR}/autoreconf
+else
+    autoreconf=${AUTORECONF:-autoreconf}
+fi
+
+$autoreconf ${autoreconf_args:-"-ivf"}
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c
index 40cda64..6e04290 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c
@@ -98,7 +98,7 @@ static int hwloc_append_diff_obj_attr_string(hwloc_obj_t obj,
 
 static int hwloc_append_diff_obj_attr_uint64(hwloc_obj_t obj,
 					     hwloc_topology_diff_obj_attr_type_t type,
-					     hwloc_uint64_t index,
+					     hwloc_uint64_t idx,
 					     hwloc_uint64_t oldvalue,
 					     hwloc_uint64_t newvalue,
 					     hwloc_topology_diff_t *firstdiffp,
@@ -118,7 +118,7 @@ static int hwloc_append_diff_obj_attr_uint64(hwloc_obj_t obj,
 	newdiff->obj_attr.obj_depth = obj->depth;
 	newdiff->obj_attr.obj_index = obj->logical_index;
 	newdiff->obj_attr.diff.uint64.type = type;
-	newdiff->obj_attr.diff.uint64.index = index;
+	newdiff->obj_attr.diff.uint64.index = idx;
 	newdiff->obj_attr.diff.uint64.oldvalue = oldvalue;
 	newdiff->obj_attr.diff.uint64.newvalue = newvalue;
 	hwloc_append_diff(newdiff, firstdiffp, lastdiffp);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
index a42b4f3..13f3f18 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
@@ -2727,7 +2727,7 @@ look_sysfsnode(struct hwloc_topology *topology,
       for (index_ = 0; index_ < nbnodes; index_++) {
           char nodepath[SYSFS_NUMA_NODE_PATH_LEN];
           hwloc_bitmap_t cpuset;
-          hwloc_obj_t node, res_obj;
+          hwloc_obj_t node, res_obj __hwloc_attribute_unused;
 
 	  osnode = indexes[index_];
 
@@ -4688,7 +4688,7 @@ hwloc_look_linuxfs_pci(struct hwloc_backend *backend)
     unsigned os_index;
     char path[64];
     char value[16];
-    size_t read;
+    size_t read __hwloc_attribute_unused;
     FILE *file;
 
     if (sscanf(dirent->d_name, "%04x:%02x:%02x.%01x", &domain, &bus, &dev, &func) != 4)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
index cf1d3a1..9335009 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
@@ -1405,7 +1405,7 @@ hwloc_export_obj_userdata_base64(void *reserved,
   hwloc__xml_export_state_t state = reserved;
   size_t encoded_length;
   char *encoded_buffer;
-  int ret;
+  int ret __hwloc_attribute_unused;
 
   if (name && hwloc__xml_export_check_buffer(name, strlen(name)) < 0) {
     errno = EINVAL;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
index d5d1c84..09545e0 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
@@ -1055,17 +1055,19 @@ hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t paren
     if (obj->cpuset && (!curcpuset || hwloc__object_cpusets_compare_first(obj, *current) < 0)) {
       static int reported = 0;
       if (!reported && !hwloc_hide_errors()) {
-	char *a = "NULL", *b;
-	if (curcpuset)
-	  hwloc_bitmap_asprintf(&a, curcpuset);
+	char *a, *b;
 	hwloc_bitmap_asprintf(&b, obj->cpuset);
         fprintf(stderr, "****************************************************************************\n");
         fprintf(stderr, "* hwloc has encountered an out-of-order topology discovery.\n");
-        fprintf(stderr, "* An object with (complete) cpuset %s was inserted after object with %s\n", b, a);
+	if (curcpuset) {
+	  hwloc_bitmap_asprintf(&a, curcpuset);
+	  fprintf(stderr, "* An object with (complete) cpuset %s was inserted after object with %s\n", b, a);
+	  free(a);
+	} else {
+	  fprintf(stderr, "* An object with (complete) cpuset %s was inserted after object with NULL\n", b);
+	}
         fprintf(stderr, "* Please check that your input topology (XML file, etc.) is valid.\n");
         fprintf(stderr, "****************************************************************************\n");
-	if (curcpuset)
-	  free(a);
 	free(b);
 	reported = 1;
       }

http://git.mpich.org/mpich.git/commitdiff/82d16bac6c2e0d26042b4ff282e1e8e98830ae34

commit 82d16bac6c2e0d26042b4ff282e1e8e98830ae34
Author: Pavan Balaji <balaji at anl.gov>
Date:   Sat Jul 5 06:18:16 2014 -0500

    Upgraded to hwloc-1.9
    
    No reviewer.

diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
index d41f485..ca9c00c 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright © 2009      inria.  All rights reserved.
+# Copyright © 2009-2014 Inria.  All rights reserved.
 # Copyright © 2009      Université Bordeaux 1
 # Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 # See COPYING in top-level directory.
@@ -9,10 +9,10 @@ ACLOCAL_AMFLAGS = -I ./config
 
 SUBDIRS = src include
 if HWLOC_BUILD_STANDALONE
-# SUBDIRS += utils tests
+SUBDIRS += utils tests
 # We need doc/ if HWLOC_BUILD_DOXYGEN, or during make install if HWLOC_INSTALL_DOXYGEN.
 # There's no INSTALL_SUBDIRS, so always enter doc/ and check HWLOC_BUILD/INSTALL_DOXYGEN there
-# SUBDIRS += doc
+SUBDIRS += doc
 endif
 
 # Do not let automake automatically add the non-standalone dirs to the
@@ -41,40 +41,23 @@ EXTRA_DIST = \
         config/hwloc_get_version.sh \
         config/distscript.csh
 
+# Only install entire visual studio subdirectory if we're building in standalone mode
 if HWLOC_BUILD_STANDALONE
-#
-# Double check that we generated both the doxygen docs and a new copy
-# of the top-level README file.
-#
-cannot-dist:
-	@echo "ERROR: Did not build both of the doxygen docs and README."
-	@echo "ERROR: This tarball is not complete!"
-	@echo "ERROR: Cowardly refusing to complete successfully..."
-	@exit 1
+EXTRA_DIST += contrib/windows
+endif
 
-# Refuse to make dist if we can't make the doxygen stuff (note that
-# BUILD_DOXYGEN will automatically be false if we're not building
-# standalone).
-if !HWLOC_BUILD_DOXYGEN
-dist-hook: cannot-dist
-else
-if !HWLOC_BUILD_README
-dist-hook: cannot-dist
-else
+if HWLOC_BUILD_STANDALONE
 dist-hook:
 	csh "$(top_srcdir)/config/distscript.csh" "$(top_srcdir)" "$(distdir)" "$(HWLOC_VERSION)"
-endif HWLOC_BUILD_README
-endif HWLOC_BUILD_DOXYGEN
 endif HWLOC_BUILD_STANDALONE
 
 #
-# Build the top-level README file
+# Build the documenation and top-level README file
 #
-
 if HWLOC_BUILD_STANDALONE
 .PHONY: doc readme
 doc readme:
-	$(MAKE) -C doc readme
+	$(MAKE) -C doc
 endif HWLOC_BUILD_STANDALONE
 
 if HWLOC_BUILD_STANDALONE
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS b/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
index 9ff170f..93426da 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
@@ -1,5 +1,5 @@
 Copyright © 2009 CNRS
-Copyright © 2009-2013 Inria.  All rights reserved.
+Copyright © 2009-2014 Inria.  All rights reserved.
 Copyright © 2009-2013 Université Bordeaux 1
 Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
 
@@ -17,6 +17,76 @@ bug fixes (and other actions) for each version of hwloc since version
 in v0.9.1).
 
 
+Version 1.9.0
+-------------
+* API
+  + Add hwloc_obj_type_sscanf() to extend hwloc_obj_type_of_string() with
+    type-specific attributes such as Cache/Group depth and Cache type.
+    hwloc_obj_type_of_string() is moved to hwloc/deprecated.h.
+  + Add hwloc_linux_get_tid_last_cpu_location() for retrieving the
+    last CPU where a Linux thread given by TID ran.
+  + Add hwloc_distrib() to extend the old hwloc_distribute[v]() functions.
+    hwloc_distribute[v]() is moved to hwloc/deprecated.h.
+  + Don't mix total and local memory when displaying verbose object attributes
+    with hwloc_obj_attr_snprintf() or in lstopo.
+* Backends
+  + Add CPUVendor, CPUModelNumber and CPUFamilyNumber info attributes for
+    x86, ia64 and Xeon Phi sockets on Linux, to extend the x86-specific
+    support added in v1.8.1. Requested by Ralph Castain.
+  + Add many CPU- and Platform-related info attributes on ARM and POWER
+    platforms, in the Machine and Socket objects.
+  + Add CUDA info attributes describing the number of multiprocessors and
+    cores and the size of the global, shared and L2 cache memories in CUDA
+    OS devices.
+  + Add OpenCL info attributes describing the number of compute units and
+    the global memory size in OpenCL OS devices.
+  + The synthetic backend now accepts extended types such as L2Cache, L1i or
+    Group3. lstopo also exports synthetic strings using these extended types.
+* Tools
+  + lstopo
+    - Do not overwrite output files by default anymore.
+      Pass -f or --force to enforce it.
+    - Display OpenCL, CUDA and Xeon Phi numbers of cores and memory sizes
+      in the graphical output.
+    - Fix export to stdout when specifying a Cairo-based output type
+      with --of.
+  + hwloc-ps
+    - Add -e or --get-last-cpu-location to report where processes/threads
+      run instead of where they are bound.
+    - Report locations as likely-more-useful objects such as Cores or Sockets
+      instead of Caches when possible.
+  + hwloc-bind
+    - Fix failure on Windows when not using --pid.
+    - Add -e as a synonym to --get-last-cpu-location.
+  + hwloc-distrib
+    - Add --reverse to distribute using last objects first and singlify
+      into last bits first. Thanks to Jirka Hladky for the suggestion.
+  + hwloc-info
+    - Report unified caches when looking for data or instruction cache
+      ancestor objects.
+* Misc
+  + Add experimental Visual Studio support under contrib/windows.
+    Thanks to Eloi Gaudry for his help and for providing the first draft.
+  + Fix some overzealous assertions and warnings about the ordering of
+    objects on a level with respect to cpusets. The ordering is only
+    guaranteed for complete cpusets (based on the first bit in sets).
+  + Fix some memory leaks when importing xml diffs and when exporting a
+    "too complex" entry.
+
+
+Version 1.8.1
+-------------
+* Fix the cpuid code on Windows 64bits so that the x86 backend gets
+  enabled as expected and can populate CPU information.
+  Thanks to Robin Scher for reporting the problem.
+* Add CPUVendor/CPUModelNumber/CPUFamilyNumber attributes when running
+  on x86 architecture. Thanks to Ralph Castain for the suggestion.
+* Work around buggy BIOS reporting duplicate NUMA nodes on Linux.
+  Thanks to Jeff Becker for reporting the problem and testing the patch.
+* Add a name to the lstopo graphical window. Thanks to Michael Prokop
+  for reporting the issue.
+
+
 Version 1.8.0
 -------------
 * New components
@@ -330,7 +400,7 @@ Version 1.5.0
     - Packagers splitting lstopo and lstopo-no-graphics into different
       packages are advised to use the alternatives system so that lstopo
       points to the best available binary.
-  + Instruction caches are enabled in lstopo by default. User --no-icaches
+  + Instruction caches are enabled in lstopo by default. Use --no-icaches
     to disable them.
   + Add -t/--threads to show threads in hwloc-ps.
 * Removal of obsolete components
@@ -398,7 +468,7 @@ Version 1.4.1
 * Fix helpers converting from Linux libnuma to hwloc (hwloc/linux-libnuma.h)
   in case of out-of-order NUMA node ids.
 * Fix some overzealous assertions in the distance grouping code.
-* Workaround BIOS reporting empty I/O locality in cuda and openfabrics
+* Workaround BIOS reporting empty I/O locality in CUDA and OpenFabrics
   helpers on Linux. Thanks to Albert Solernou for reporting the problem.
 * Install a valgrind suppressions file hwloc-valgrind.supp (see the FAQ).
 * Fix memory binding documentation. Thanks to Karl Napf for reporting the
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/README b/src/pm/hydra/tools/topo/hwloc/hwloc/README
index 4628e34..babe22d 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/README
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/README
@@ -25,7 +25,8 @@ using PLPA has already switched to hwloc.
 hwloc supports the following operating systems:
 
   * Linux (including old kernels not having sysfs topology information, with
- knowledge of cpusets, offline CPUs, ScaleMP vSMP, and Kerrighed support)
+ knowledge of cpusets, offline CPUs, ScaleMP vSMP, NumaScale NumaConnect,
+ and Kerrighed support)
   * Solaris
   * AIX
   * Darwin / OS X
@@ -678,7 +679,7 @@ the most recent version of the BIOS for your machine.
 If those things fail, contact us on the mailing list for additional help.
 Please attach the output of lstopo after having given the --enable-debug option
 to ./configure and rebuilt completely, to get debugging output. Also attach the
-/proc + /sys tarball generated by the installed script hwloc-gather-topology.sh
+/proc + /sys tarball generated by the installed script hwloc-gather-topology
 when submitting problems about Linux, or send the output of kstat cpu_info in
 the Solaris case, or the output of sysctl hw in the Darwin or BSD cases.
 
@@ -717,7 +718,3 @@ The documentation chapters include
 
 Make sure to have had a look at those too!
 
--------------------------------------------------------------------------------
-
-Generated on Tue Sep 10 2013 16:08:12 for Hardware Locality (hwloc) by   
-doxygen 1.8.4
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION b/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
index 66a0341..f146c49 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
@@ -12,7 +12,7 @@ snapshot_version=gitclone
 # <major>.<minor>.<release>.  If release is zero, then it is omitted.
 
 major=1
-minor=8
+minor=9
 release=0
 
 # greek is used for alpha or beta release tags.  If it is non-empty,
@@ -39,4 +39,4 @@ date="Unreleased developer copy"
 # 2. Version numbers are described in the Libtool current:revision:age
 # format.
 
-libhwloc_so_version=9:0:4
+libhwloc_so_version=10:0:5
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
index c73edc2..df42802 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
@@ -1,9 +1,2 @@
-#!/bin/sh
-
-if [ -n "$MPICH_AUTOTOOLS_DIR" ] ; then
-    autoreconf=${MPICH_AUTOTOOLS_DIR}/autoreconf
-else
-    autoreconf=${AUTORECONF:-autoreconf}
-fi
-
-$autoreconf ${autoreconf_args:-"-ivf"}
+:
+autoreconf ${autoreconf_args:-"-ivf"}
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh b/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh
index e528223..720783e 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh
@@ -10,7 +10,7 @@
 #                         University of Stuttgart.  All rights reserved.
 # Copyright (c) 2004-2005 The Regents of the University of California.
 #                         All rights reserved.
-# Copyright © 2010 inria.  All rights reserved.
+# Copyright © 2010-2014   Inria.  All rights reserved.
 # Copyright © 2009-2013 Cisco Systems, Inc.  All rights reserved.
 # $COPYRIGHT$
 # 
@@ -39,14 +39,6 @@ endif
 
 #========================================================================
 
-if ("$srcdir" != "$builddir") then
-    set vpath=1
-    set vpath_msg=yes
-else
-    set vpath=0
-    set vpath_msg=no
-endif
-
 set start=`date`
 cat <<EOF
  
@@ -54,7 +46,6 @@ Creating hwloc distribution
 In directory: `pwd`
 Srcdir: $srcdir
 Builddir: $builddir
-VPATH: $vpath_msg
 Version: $HWLOC_VERSION
 Started: $start
  
@@ -68,59 +59,20 @@ if (! -d "$distdir") then
     exit 1
 endif
 
-#
-# VPATH builds only work if the srcdir has valid docs already built.
-# If we're VPATH and the srcdir doesn't have valid docs, then fail.
-#
-
-if ($vpath == 1 && ! -d $srcdir/doc/doxygen-doc) then
-    echo "*** This is a VPATH 'make dist', but the srcdir does not already"
-    echo "*** have a doxygen-doc tree built.  hwloc's config/distscript.csh"
-    echo "*** requores the docs to be built in the srcdir before executing"
-    echo "*** 'make dist' in a VPATH build."
+if (! -d $srcdir/doc/doxygen-doc) then
+    echo "*** The srcdir does not already have a doxygen-doc tree built."
+    echo "*** hwloc's config/distscript.csh requires the docs to be built"
+    echo "*** in the srcdir before executing 'make dist'."
     exit 1
 endif
 
-#
-# If we're not VPATH, force the generation of new doxygen documentation
-#
-
-if ($vpath == 0) then
-    # Not VPATH
-    echo "*** Making new doxygen documentation (doxygen-doc tree)"
-    echo "*** Directory: srcdir: $srcdir, distdir: $distdir, pwd: `pwd`"
-    cd doc
-    # We're still in the src tree, so kill any previous doxygen-docs
-    # tree and make a new one.
-    chmod -R a=rwx doxygen-doc
-    rm -rf doxygen-doc
-    make
-    if ($status != 0) then
-        echo ERROR: generating doxygen docs failed
-        echo ERROR: cannot continue
-        exit 1
-    endif
-
-    # Make new README file
-    echo "*** Making new README"
-    make readme
-    if ($status != 0) then
-        echo ERROR: generating new README failed
-        echo ERROR: cannot continue
-        exit 1
-    endif
-else
-    echo "*** This is a VPATH build; assuming that the doxygen docs and REAME"
-    echo "*** are current in the srcdir (i.e., we'll just copy those)"
-endif
-
 echo "*** Copying doxygen-doc tree to dist..."
 echo "*** Directory: srcdir: $srcdir, distdir: $distdir, pwd: `pwd`"
-chmod -R a=rwx $distdir/doc/doxygen-doc
-echo rm -rf $distdir/doc/doxygen-doc
-rm -rf $distdir/doc/doxygen-doc
-echo cp -rpf $srcdir/doc/doxygen-doc $distdir/doc
-cp -rpf $srcdir/doc/doxygen-doc $distdir/doc
+chmod -R a=rwx $distdir/doc/doxygen-doc/
+echo rm -rf $distdir/doc/doxygen-doc/
+rm -rf $distdir/doc/doxygen-doc/
+echo cp -rpf $srcdir/doc/doxygen-doc/ $distdir/doc
+cp -rpf $srcdir/doc/doxygen-doc/ $distdir/doc
 
 echo "*** Copying new README"
 ls -lf $distdir/README
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4 b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
index 3806933..ef3c53e 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
@@ -1,6 +1,6 @@
 dnl -*- Autoconf -*-
 dnl
-dnl Copyright © 2009-2013 Inria.  All rights reserved.
+dnl Copyright © 2009-2014 Inria.  All rights reserved.
 dnl Copyright (c) 2009-2012 Université Bordeaux 1
 dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
 dnl                         University Research and Technology
@@ -991,27 +991,42 @@ EOF])
     fi
     # don't add LIBS/CFLAGS/REQUIRES yet, depends on plugins
 
-    # Try to compile the cpuid inlines
-    AC_MSG_CHECKING([for cpuid])
+    # Try to compile the x86 cpuid inlines
+    AC_MSG_CHECKING([for x86 cpuid])
     old_CPPFLAGS="$CPPFLAGS"
     CPPFLAGS="$CPPFLAGS -I$HWLOC_top_srcdir/include"
+    # We need hwloc_uint64_t but we can't use hwloc/autogen/config.h before configure ends.
+    # So pass #include/#define manually here for now.
+    CPUID_CHECK_HEADERS=
+    CPUID_CHECK_DEFINE=
+    if test "x$hwloc_windows" = xyes; then
+      X86_CPUID_CHECK_HEADERS="#include <windows.h>"
+      X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t DWORDLONG"
+    else
+      X86_CPUID_CHECK_DEFINE="#define hwloc_uint64_t uint64_t"
+      if test "x$ac_cv_header_stdint_h" = xyes; then
+        X86_CPUID_CHECK_HEADERS="#include <stdint.h>"
+      fi
+    fi
     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
         #include <stdio.h>
+        $X86_CPUID_CHECK_HEADERS
+        $X86_CPUID_CHECK_DEFINE
         #define __hwloc_inline
-        #include <private/cpuid.h>
+        #include <private/cpuid-x86.h>
       ]], [[
-        if (hwloc_have_cpuid()) {
+        if (hwloc_have_x86_cpuid()) {
           unsigned eax = 0, ebx, ecx = 0, edx;
-          hwloc_cpuid(&eax, &ebx, &ecx, &edx);
-          printf("highest cpuid %x\n", eax);
+          hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
+          printf("highest x86 cpuid %x\n", eax);
           return 0;
         }
       ]])],
       [AC_MSG_RESULT([yes])
-       AC_DEFINE(HWLOC_HAVE_CPUID, 1, [Define to 1 if you have cpuid])
-       hwloc_have_cpuid=yes],
+       AC_DEFINE(HWLOC_HAVE_X86_CPUID, 1, [Define to 1 if you have x86 cpuid])
+       hwloc_have_x86_cpuid=yes],
       [AC_MSG_RESULT([no])])
-    if test "x$hwloc_have_cpuid" = xyes; then
+    if test "x$hwloc_have_x86_cpuid" = xyes; then
       hwloc_components="$hwloc_components x86"
     fi
     CPPFLAGS="$old_CPPFLAGS"
@@ -1241,7 +1256,7 @@ AC_DEFUN([HWLOC_DO_AM_CONDITIONALS],[
 
         AM_CONDITIONAL([HWLOC_HAVE_X86_32], [test "x$hwloc_x86_32" = "xyes"])
         AM_CONDITIONAL([HWLOC_HAVE_X86_64], [test "x$hwloc_x86_64" = "xyes"])
-        AM_CONDITIONAL([HWLOC_HAVE_CPUID], [test "x$hwloc_have_cpuid" = "xyes"])
+        AM_CONDITIONAL([HWLOC_HAVE_X86_CPUID], [test "x$hwloc_have_x86_cpuid" = "xyes"])
 
         AM_CONDITIONAL([HWLOC_HAVE_PLUGINS], [test "x$hwloc_have_plugins" = "xyes"])
         AM_CONDITIONAL([HWLOC_PCI_BUILD_STATIC], [test "x$hwloc_pci_component" = "xstatic"])
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4 b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4
index bfc3f36..55ac182 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4
@@ -1,6 +1,6 @@
 dnl -*- Autoconf -*-
 dnl
-dnl Copyright (c) 2009-2012 Inria.  All rights reserved.
+dnl Copyright (c) 2009-2014 Inria.  All rights reserved.
 dnl Copyright (c) 2009, 2011 Université Bordeaux 1
 dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
 dnl                         University Research and Technology
@@ -9,7 +9,7 @@ dnl Copyright (c) 2004-2005 The Regents of the University of California.
 dnl                         All rights reserved.
 dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, 
 dnl                         University of Stuttgart.  All rights reserved.
-dnl Copyright © 2010-2012 Inria.  All rights reserved.
+dnl Copyright © 2010-2014 Inria.  All rights reserved.
 dnl Copyright © 2006-2011 Cisco Systems, Inc.  All rights reserved.
 dnl
 dnl See COPYING in top-level directory.
@@ -117,8 +117,10 @@ EOF
 
     AC_MSG_CHECKING([if this is a developer build])
     AS_IF([test ! -d "$srcdir/.hg" -a ! -d "$srcdir/.git"],
-          [AC_MSG_RESULT([no (doxygen generation is optional)])],
-          [AC_MSG_RESULT([yes])])
+          [AC_MSG_RESULT([no (doxygen generation is optional)])
+	   test "x$enable_doxygen" = x && enable_doxygen=no],
+          [AC_MSG_RESULT([yes])
+	   test "x$enable_doxygen" = x && enable_doxygen=yes])
     
     # Generating the doxygen output requires a few tools.  If we
     # don't have all of them, refuse the build the docs.
@@ -190,7 +192,7 @@ EOF
     # See if we want to install the doxygen docs
     AC_MSG_CHECKING([if will install doxygen docs])
     AS_IF([test "x$hwloc_generate_doxs" = "xyes" -o \
-    	    -f "$srcdir/doc/doxygen-doc/man/man3/hwloc_distribute.3" -a \
+	    -f "$srcdir/doc/doxygen-doc/man/man3/hwloc_distrib.3" -a \
     	    -f "$srcdir/doc/doxygen-doc/hwloc-a4.pdf" -a \
     	    -f "$srcdir/doc/doxygen-doc/hwloc-letter.pdf"],
           [hwloc_install_doxs=yes],
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/ci.inria.fr/hwloc-windows-build.sh b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/ci.inria.fr/hwloc-windows-build.sh
new file mode 100755
index 0000000..2b29aff
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/ci.inria.fr/hwloc-windows-build.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+#
+# Copyright © 20012-2014 Inria.  All rights reserved.
+# See COPYING in top-level directory.
+#
+
+set -e
+set -x
+
+oldPATH=$PATH
+
+tarball=$(ls -tr hwloc-*.tar.gz | tail -1)
+basename=$(basename $tarball .tar.gz)
+version=$(echo $basename | cut -d- -f2)
+
+test -d $basename && chmod -R u+rwX $basename && rm -rf $basename
+tar xfz $tarball
+
+mkdir ${basename}/build32
+cd ${basename}/build32
+winball=hwloc-win32-build-${version}
+prefix=${PWD}/../${winball}
+export PATH=/c/Builds:/c/Builds/mingw32/bin/:/c/Builds/mingw64/bin/:/c/Builds/mingw32/i686-w64-mingw32/lib:"/c/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin":"/c/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE":$oldPATH
+../configure --prefix=$prefix --enable-static --host=i686-w64-mingw32 CC_FOR_BUILD=x86_64-w64-mingw32-gcc
+make
+make install
+#make install-winball || true # not needed anymore in v1.7+
+make check
+utils/lstopo-no-graphics -v
+cd ..
+zip -r ../${winball}.zip ${winball}
+test -f ${winball}/lib/libhwloc.lib || false
+cd ..
+
+
+mkdir ${basename}/build64
+cd ${basename}/build64
+winball=hwloc-win64-build-${version}
+prefix=${PWD}/../${winball}
+export PATH=/c/Builds:/c/Builds/mingw64/bin/:/c/Builds/mingw32/i686-w64-mingw32/lib/:"/c/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin":"/c/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE":$oldPATH
+../configure --prefix=$prefix --enable-static --host=x86_64-w64-mingw32
+make
+make install
+#make install-winball || true # not needed anymore in v1.7+
+make check
+utils/lstopo-no-graphics -v
+cd ..
+zip -r ../${winball}.zip ${winball}
+test -f ${winball}/lib/libhwloc.lib || false
+cd ..
+
+PATH=$oldPATH
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball
index 485e686..7c6011a 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball
@@ -27,7 +27,7 @@
 # Version of auto tools that we want
 #
 
-AM_TARGET_VERSION=1.14
+AM_TARGET_VERSION=1.14.1
 AC_TARGET_VERSION=2.69
 LT_TARGET_VERSION=2.4.2
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/README.txt b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/README.txt
new file mode 100644
index 0000000..70f5339
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/README.txt
@@ -0,0 +1,10 @@
+Github doesn't send good diff emails, so we do it ourselves.
+
+On mtt.open-mpi.org, we have a git clone from github.  We then also
+have a local naked git clone that has a post-receive hook that sends
+diff emails.
+
+So via cron, we git pull from github, and then git push to the local
+naked git repo, which then triggers sending the emails.
+
+It's not perfect, but it seems to be good enough.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/github-send-commit-mails.pl b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/github-send-commit-mails.pl
new file mode 100755
index 0000000..58f8cf7
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/github-send-commit-mails.pl
@@ -0,0 +1,42 @@
+#!/usr/bin/env perl
+
+use strict;
+
+use Cwd;
+
+die "Must specify location of source git repo"
+    if ($#ARGV < 0);
+
+sub doit {
+    my ($cmd, $repo) = @_;
+
+    my $rc;
+    my $outfile = "/tmp/github-send-email-tmp.$$";
+    unlink($outfile);
+    $rc = system("$cmd >$outfile 2>&1");
+    if (0 != $rc) {
+        print "Command failed:
+
+Command: $cmd
+Repo:    $repo
+Output:\n";
+        open(IN, $outfile);
+        print $_
+            while (<IN>);
+        close(IN);
+        die "Aborting";
+    }
+    unlink($outfile);
+}
+
+foreach my $src_repo (@ARGV) {
+    die "Specified location of source git repo is invalid"
+        if (! -d $src_repo);
+    chdir($src_repo);
+    die "Could not chdir to $src_repo"
+        if (getcwd() != $src_repo);
+
+    doit("/u/mpiteam/git/local/bin/git fetch", $src_repo);
+    doit("/u/mpiteam/git/local/bin/git push email", $src_repo);
+}
+
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/build-server/hwloc-nightly-tarball.sh b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/build-server/hwloc-nightly-tarball.sh
new file mode 100755
index 0000000..d3912a9
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/build-server/hwloc-nightly-tarball.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+#####
+#
+# Configuration options
+#
+#####
+
+# e-mail address to send results to
+results_addr=hwloc-devel at open-mpi.org
+
+# git repository URL
+code_uri=https://github.com/open-mpi/hwloc.git
+raw_uri=https://raw.github.com/open-mpi/hwloc
+
+# where to put built tarballs
+outputroot=/l/osl/www/www.open-mpi.org/software/hwloc/nightly
+
+# where to find the build script
+script_uri=contrib/nightly/make_snapshot_tarball
+
+# The tarballs to make
+if [ $# -eq 0 ] ; then
+    # Branches v1.6 and earlier were not updated to build nightly
+    # snapshots from git, so only check v1.7 and later
+    branches="master v1.7"
+else
+    branches=$@
+fi
+
+# Build root - scratch space
+build_root=/home/mpiteam/hwloc/nightly-tarball-build-root
+
+export PATH=$HOME/local/bin:$PATH
+export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH
+
+#####
+#
+# Actually do stuff
+#
+#####
+
+# load the modules configuration
+. /etc/profile.d/modules.sh
+module use ~/modules
+
+# get our nightly build script
+mkdir -p $build_root
+cd $build_root
+
+# Loop making them
+for branch in $branches; do
+    # Form a URL-specific script name
+    script=$branch-`basename $script_uri`
+
+    wget --quiet --no-check-certificate --tries=10 $raw_uri/$branch/$script_uri -O $script
+    if test ! $? -eq 0 ; then
+        echo "wget of hwloc nightly tarball create script failed."
+        if test -f $script ; then
+            echo "Using older version of $script for this run."
+        else
+            echo "No build script available.  Aborting."
+            exit 1
+        fi
+    fi
+    chmod +x $script
+
+    module load "autotools/hwloc-$branch"
+    module load "tex-live/hwloc-$branch"
+
+    ./$script \
+        $build_root/$branch \
+        $results_addr \
+        $outputroot/$branch \
+        $code_uri \
+        $branch \
+        >/dev/null 2>&1
+
+    module unload autotools tex-live
+done
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/make_snapshot_tarball b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/make_snapshot_tarball
index f069caa..3adbc71 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/make_snapshot_tarball
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/make_snapshot_tarball
@@ -10,7 +10,7 @@
 #                         University of Stuttgart.  All rights reserved.
 # Copyright (c) 2004-2005 The Regents of the University of California.
 #                         All rights reserved.
-# Copyright © 2006-2013 Cisco Systems, Inc.  All rights reserved.
+# Copyright © 2006-2014 Cisco Systems, Inc.  All rights reserved.
 # $COPYRIGHT$
 #
 # Additional copyrights may follow
@@ -216,6 +216,10 @@ do_command "./autogen.sh"
 # do config
 do_command "./configure"
 
+# because of the doxygen setup, we now much run "make doc" before we
+# run "make dist".
+do_command "make doc"
+
 # Do make distcheck (which will invoke config/distscript.csh to set
 # the right values in VERSION).  distcheck does many things; we need
 # to ensure it doesn't pick up any other installs via LD_LIBRARY_PATH.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl
index 8b54595..4709429 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 #
 # Copyright (c) 2010-2013 Cisco Systems, Inc.  All rights reserved.
-# Copyright (c) 2011-2013 Inria.  All rights reserved.
+# Copyright (c) 2011-2014 Inria.  All rights reserved.
 # $COPYRIGHT$
 #
 
@@ -55,6 +55,8 @@ my @tokens;
 push(@tokens, "See COPYING in top-level directory");
 push(@tokens, "\\\$COPYRIGHT\\\$");
 
+my $commit = $ARGV[0];
+
 # Override the defaults if some values are set in the environment
 $my_search_name = $ENV{HWLOC_COPYRIGHT_SEARCH_NAME}
     if (defined($ENV{HWLOC_COPYRIGHT_SEARCH_NAME}));
@@ -83,8 +85,13 @@ print "==> Top-level hwloc dir: $top\n";
 print "==> Current directory: $start\n";
 
 my $cmd;
-$cmd = "LANG=C git status . | sed -n -e 's/^\#[ 	]*modified:[ 	]*/M /p' -e 's/^\#[ 	]* new file:[ 	]*/A /p'"
-    if (-d "$top/.git" && ! -d "$top/.svn");
+if (-d "$top/.git") {
+    if ($commit) {
+	$cmd = "LANG=C git show --stat --pretty=format: $commit | sed -n -r -e 's/^[ 	]*([^ ].*[^ ])[ 	]*\\|[ 	]*[0-9]+[ 	]*\\+.*/\\1/p'"
+    } else {
+	$cmd = "LANG=C git status . | sed -n -r -e 's/^\#?[ 	]*(modified|new file)[ 	]*:[ 	]+(.+)/\\2/p'"
+    }
+}
 die "Can't find git meta dir"
     if (!defined($cmd));
 
@@ -95,12 +102,7 @@ open(CMD, "$cmd|") || die "Can't run command";
 my @files;
 while (<CMD>) {
     chomp;
-    if ($_ =~ /^M/ || $_ =~ /^A/) {
-        my ($state, $filename, $extra) = split(/\s+/, $_);
-        $filename = $extra
-            if ($filename eq "+");
-        push(@files, $filename);
-    }
+    push (@files, $_);
 }
 close(CMD);
 
@@ -195,7 +197,7 @@ foreach my $f (@files) {
     my $newf = "$f.new-copyright";
     unlink($newf);
     open(FILE, ">$newf") || die "Can't open file: $newf";
-    print FILE join(//, @lines);
+    print FILE join("", @lines);
     close(FILE);
 
     # Now replace the old one
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/README b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/README
new file mode 100644
index 0000000..04a2ae9
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/README
@@ -0,0 +1,33 @@
+This Visual Studio support is experimental.
+Thanks to Eloi Gaudry for contributing the first draft of files.
+
+
+No PlatformToolset is specified, so that the default target is always
+used during build.
+That means your build may not be compatible with older systems.
+Enforce a specific toolset before building if needed.
+
+
+hwloc-assembler-remote is not built because it requires a hardwired
+path to hwloc-assembler and it uses ssh.
+
+
+hwloc-ps is not built because it does nothing on Windows anyway.
+Possible code proposed by Eloi Gaudry:
+  // Get the process list snapshot
+  HANDLE hProcessSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
+  // Initialize the process entry structure
+  PROCESSENTRY32 ProcessEntry = { 0 } ;
+  ProcessEntry.dwSize = sizeof(ProcessEntry);
+  // Get the first process info
+  if (Process32First( hProcessSnapShot, &ProcessEntry)) {
+    do {
+      HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, ProcessEntry.th32ProcessID) ;
+      if (hProcess) {
+        std::cerr << ProcessEntry.th32ProcessID << "(" << ProcessEntry.szExeFile << ")" << std::endl ;
+      }
+      // check the PROCESSENTRY32 for other members.
+    } while (Process32Next(hProcessSnapShot, &ProcessEntry));
+    // Close the handle
+    CloseHandle( hProcessSnapShot ) ;
+  }
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj
new file mode 100644
index 0000000..ac2f3fd
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-bind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-annotate.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj.filters
new file mode 100644
index 0000000..cad9fee
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj.filters
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-annotate.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\hwloc-calc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj
new file mode 100644
index 0000000..91eda43
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-bind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-assembler.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj.filters
new file mode 100644
index 0000000..697ae29
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj.filters
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-assembler.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj
new file mode 100644
index 0000000..4a2b64d
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-bind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-bind.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+    <ClInclude Include="..\..\utils\hwloc-calc.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj.filters
new file mode 100644
index 0000000..5e739fb
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj.filters
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-bind.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\hwloc-calc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj
new file mode 100644
index 0000000..3028a54
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-calc</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-calc.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+    <ClInclude Include="..\..\utils\hwloc-calc.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj.filters
new file mode 100644
index 0000000..99fe6bc
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj.filters
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-calc.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\hwloc-calc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj
new file mode 100644
index 0000000..5f2bf1d
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-bind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-diff.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj.filters
new file mode 100644
index 0000000..e4d8e34
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj.filters
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-diff.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj
new file mode 100644
index 0000000..63b762d
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-bind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-distances.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj.filters
new file mode 100644
index 0000000..5e141c2
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj.filters
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-distances.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj
new file mode 100644
index 0000000..a101786
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-bind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-distrib.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj.filters
new file mode 100644
index 0000000..86c197b
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj.filters
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-distrib.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj
new file mode 100644
index 0000000..955c0f2
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-info</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-info.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+    <ClInclude Include="..\..\utils\hwloc-calc.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj.filters
new file mode 100644
index 0000000..e79161a
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj.filters
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-info.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\hwloc-calc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj
new file mode 100644
index 0000000..813ebfe
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>hwloc-bind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-patch.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj.filters
new file mode 100644
index 0000000..637529a
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj.filters
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\hwloc-patch.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc.sln b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc.sln
new file mode 100644
index 0000000..5f4f4e4
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc.sln
@@ -0,0 +1,113 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhwloc", "libhwloc.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo-no-graphics", "lstopo-no-graphics.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8E}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-annotate", "hwloc-annotate.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB8F}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-assembler", "hwloc-assembler.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB90}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-bind", "hwloc-bind.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB91}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-calc", "hwloc-calc.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB92}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-diff", "hwloc-diff.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB93}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-distances", "hwloc-distances.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB94}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-distrib", "hwloc-distrib.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-info", "hwloc-info.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB96}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hwloc-patch", "hwloc-patch.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB97}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D} = {9DE76C6D-4773-4766-9F93-69C56166CB8D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo", "lstopo.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB98}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB8E} = {9DE76C6D-4773-4766-9F93-69C56166CB8E}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lstopo-win", "lstopo-win.vcxproj", "{9DE76C6D-4773-4766-9F93-69C56166CB99}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9DE76C6D-4773-4766-9F93-69C56166CB98} = {9DE76C6D-4773-4766-9F93-69C56166CB98}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		ReleaseDll|x64 = ReleaseDll|x64
+		ReleaseStatic|x64 = ReleaseStatic|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseDll|x64.ActiveCfg = ReleaseDll|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseDll|x64.Build.0 = ReleaseDll|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseStatic|x64.ActiveCfg = ReleaseStatic|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8D}.ReleaseStatic|x64.Build.0 = ReleaseStatic|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8E}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8E}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8E}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8F}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8F}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB8F}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB90}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB90}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB90}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB91}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB91}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB91}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB92}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB92}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB92}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB93}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB93}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB93}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB94}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB94}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB94}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB95}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB95}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB95}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB96}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB96}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB96}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB97}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB97}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB97}.ReleaseStatic|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB98}.ReleaseDll|x64.ActiveCfg = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB98}.ReleaseDll|x64.Build.0 = Release|x64
+		{9DE76C6D-4773-4766-9F93-69C56166CB98}.ReleaseStatic|x64.ActiveCfg = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc_config.h b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc_config.h
new file mode 100644
index 0000000..5c8cea6
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc_config.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2014 Inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+/* The configuration file */
+
+#ifndef HWLOC_CONFIG_H
+#define HWLOC_CONFIG_H
+
+#define __hwloc_restrict
+#define __hwloc_inline __inline
+
+#define __hwloc_attribute_unused
+#define __hwloc_attribute_malloc
+#define __hwloc_attribute_const
+#define __hwloc_attribute_pure
+#define __hwloc_attribute_deprecated
+
+/* Defined to 1 if you have the `windows.h' header. */
+#define HWLOC_HAVE_WINDOWS_H 1
+#define hwloc_pid_t HANDLE
+#define hwloc_thread_t HANDLE
+
+#include <windows.h>
+#include <BaseTsd.h>
+typedef DWORDLONG hwloc_uint64_t;
+typedef SSIZE_T ssize_t;
+#define snprintf _snprintf
+#define strcasecmp _stricmp
+#define strncasecmp _strnicmp
+#define strdup _strdup
+#define strtoull _strtoui64
+#define strtoll _strtoi64
+#define S_ISREG(m) ((m)&_S_IFREG)
+#define S_ISDIR( m ) (((m) & S_IFMT) == S_IFDIR)
+#define putenv _putenv
+
+#if defined( _USRDLL ) /* dynamic linkage */
+#if defined( DECLSPEC_EXPORTS )
+#define HWLOC_DECLSPEC __declspec(dllexport)
+#else
+#define HWLOC_DECLSPEC __declspec(dllimport)
+#endif
+#else /* static linkage */
+#define HWLOC_DECLSPEC
+#endif
+
+/* Whether we need to re-define all the hwloc public symbols or not */
+#define HWLOC_SYM_TRANSFORM 0
+
+/* The hwloc symbol prefix */
+#define HWLOC_SYM_PREFIX hwloc_
+
+/* The hwloc symbol prefix in all caps */
+#define HWLOC_SYM_PREFIX_CAPS HWLOC_
+
+#endif /* HWLOC_CONFIG_H */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj
new file mode 100644
index 0000000..8ff75ec
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8D}</ProjectGuid>
+    <RootNamespace>libhwloc</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DebugStatic|x64">
+      <Configuration>DebugStatic</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugDll|x64">
+      <Configuration>DebugDll</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseStatic|x64">
+      <Configuration>ReleaseStatic</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseDll|x64">
+      <Configuration>ReleaseDll</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDll|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugStatic|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDll|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='DebugDll|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugStatic|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='ReleaseDll|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDll|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugStatic|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDll|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDll|x64'">
+    <PreBuildEvent>
+      <Command>copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugStatic|x64'">
+    <PreBuildEvent>
+      <Command>copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;WIN64;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDll|x64'">
+    <PreBuildEvent>
+      <Command>copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\src</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseStatic|x64'">
+    <PreBuildEvent>
+      <Command>copy /V /Y private_config.h ..\..\include\private\autogen\config.h && copy /V /Y hwloc_config.h ..\..\include\hwloc\autogen\config.h && copy /V /Y static-components.h ..\..\src\static-components.h</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\src</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\base64.c" />
+    <ClCompile Include="..\..\src\bind.c" />
+    <ClCompile Include="..\..\src\bitmap.c" />
+    <ClCompile Include="..\..\src\components.c" />
+    <ClCompile Include="..\..\src\distances.c" />
+    <ClCompile Include="..\..\src\diff.c" />
+    <ClCompile Include="..\..\src\misc.c" />
+    <ClCompile Include="..\..\src\topology-custom.c" />
+    <ClCompile Include="..\..\src\topology-fake.c" />
+    <ClCompile Include="..\..\src\topology-noos.c" />
+    <ClCompile Include="..\..\src\topology-synthetic.c" />
+    <ClCompile Include="..\..\src\topology-windows.c" />
+    <ClCompile Include="..\..\src\topology-x86.c" />
+    <ClCompile Include="..\..\src\topology-xml-nolibxml.c" />
+    <ClCompile Include="..\..\src\topology-xml.c" />
+    <ClCompile Include="..\..\src\topology.c" />
+    <ClCompile Include="..\..\src\traversal.c" />
+    <ClCompile Include="..\..\src\dolib.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\diff.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid-x86.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj.filters
new file mode 100644
index 0000000..2bfb4c7
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj.filters
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\base64.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\bind.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\bitmap.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\components.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\distances.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\diff.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\misc.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-custom.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-fake.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-noos.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-synthetic.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-windows.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-x86.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-xml-nolibxml.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology-xml.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\topology.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\traversal.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\dolib.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\diff.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid-x86.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj
new file mode 100644
index 0000000..7fe3abb
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>lstopo-no-graphics</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\lstopo.c" />
+    <ClCompile Include="..\..\utils\lstopo-color.c" />
+    <ClCompile Include="..\..\utils\lstopo-draw.c" />
+    <ClCompile Include="..\..\utils\lstopo-fig.c" />
+    <ClCompile Include="..\..\utils\lstopo-text.c" />
+    <ClCompile Include="..\..\utils\lstopo-xml.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+    <ClInclude Include="..\..\utils\lstopo.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj.filters
new file mode 100644
index 0000000..6a93601
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj.filters
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\lstopo.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-color.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-draw.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-fig.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-text.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-xml.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\lstopo.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj
new file mode 100644
index 0000000..241e047
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>lstopo-no-graphics</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>LSTOPO_HAVE_GRAPHICS=1;PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Windows</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\lstopo.c" />
+    <ClCompile Include="..\..\utils\lstopo-color.c" />
+    <ClCompile Include="..\..\utils\lstopo-draw.c" />
+    <ClCompile Include="..\..\utils\lstopo-fig.c" />
+    <ClCompile Include="..\..\utils\lstopo-text.c" />
+    <ClCompile Include="..\..\utils\lstopo-xml.c" />
+    <ClCompile Include="..\..\utils\lstopo-windows.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+    <ClInclude Include="..\..\utils\lstopo.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj.filters
new file mode 100644
index 0000000..525684b
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj.filters
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\lstopo.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-color.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-draw.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-fig.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-text.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-xml.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-windows.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\lstopo.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj
new file mode 100644
index 0000000..cde3495
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9DE76C6D-4773-4766-9F93-69C56166CB8E}</ProjectGuid>
+    <RootNamespace>lstopo-no-graphics</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <EmbedManifest>true</EmbedManifest>
+    <TargetName>$(ProjectName)-5</TargetName>
+    <IntDir>$(SolutionDir)$(Platform)\$(Configuration)\</IntDir>
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>LSTOPO_HAVE_GRAPHICS=1;PSAPI_VERSION=1;WIN32;NDEBUG;WIN64;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\include;..\..\utils</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>
+      <EnableCOMDATFolding>false</EnableCOMDATFolding>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <GenerateMapFile>false</GenerateMapFile>
+      <IgnoreSpecificDefaultLibraries>libcmt.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)$(TargetName).exe</OutputFile>
+      <ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
+      <ShowProgress>LinkVerboseLib</ShowProgress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetMachine>MachineX64</TargetMachine>
+      <LinkErrorReporting>NoErrorReport</LinkErrorReporting>
+      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\ReleaseDll;$(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalDependencies>libhwloc.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\lstopo.c" />
+    <ClCompile Include="..\..\utils\lstopo-color.c" />
+    <ClCompile Include="..\..\utils\lstopo-draw.c" />
+    <ClCompile Include="..\..\utils\lstopo-fig.c" />
+    <ClCompile Include="..\..\utils\lstopo-text.c" />
+    <ClCompile Include="..\..\utils\lstopo-xml.c" />
+    <ClCompile Include="..\..\utils\lstopo-windows.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h" />
+    <ClInclude Include="..\..\include\private\autogen\config.h" />
+    <ClInclude Include="..\..\include\hwloc.h" />
+    <ClInclude Include="..\..\include\hwloc\bitmap.h" />
+    <ClInclude Include="..\..\include\hwloc\helper.h" />
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h" />
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h" />
+    <ClInclude Include="..\..\include\hwloc\plugins.h" />
+    <ClInclude Include="..\..\include\hwloc\rename.h" />
+    <ClInclude Include="..\..\include\private\components.h" />
+    <ClInclude Include="..\..\include\private\cpuid.h" />
+    <ClInclude Include="..\..\include\private\debug.h" />
+    <ClInclude Include="..\..\include\private\misc.h" />
+    <ClInclude Include="..\..\include\private\private.h" />
+    <ClInclude Include="..\..\include\private\xml.h" />
+    <ClInclude Include="..\..\utils\misc.h" />
+    <ClInclude Include="..\..\utils\lstopo.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj.filters b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj.filters
new file mode 100644
index 0000000..525684b
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj.filters
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\utils\lstopo.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-color.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-draw.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-fig.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-text.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-xml.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\utils\lstopo-windows.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\include\hwloc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\bitmap.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\helper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\myriexpress.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\openfabrics-verbs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\plugins.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\rename.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\components.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\cpuid.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\debug.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\private.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\xml.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\private\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\hwloc\autogen\config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\misc.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\utils\lstopo.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+</Project>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/private_config.h b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/private_config.h
new file mode 100644
index 0000000..4ba1760
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/private_config.h
@@ -0,0 +1,695 @@
+/*
+ * Copyright © 2009, 2011, 2012 CNRS.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
+ * Copyright © 2009, 2011, 2012 Université Bordeaux 1.  All rights reserved.
+ * Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
+ * $COPYRIGHT$
+ *
+ * Additional copyrights may follow
+ *
+ * $HEADER$
+ */
+
+#ifndef HWLOC_CONFIGURE_H
+#define HWLOC_CONFIGURE_H
+
+#define DECLSPEC_EXPORTS
+
+#define HWLOC_HAVE_MSVC_CPUIDEX 1
+
+/* Define to 1 if the system has the type `CACHE_DESCRIPTOR'. */
+#define HAVE_CACHE_DESCRIPTOR 0
+
+/* Define to 1 if the system has the type `CACHE_RELATIONSHIP'. */
+#define HAVE_CACHE_RELATIONSHIP 0
+
+/* Define to 1 if you have the `clz' function. */
+/* #undef HAVE_CLZ */
+
+/* Define to 1 if you have the `clzl' function. */
+/* #undef HAVE_CLZL */
+
+/* Define to 1 if you have the <CL/cl_ext.h> header file. */
+/* #undef HAVE_CL_CL_EXT_H */
+
+/* Define to 1 if you have the `cpuset_setaffinity' function. */
+/* #undef HAVE_CPUSET_SETAFFINITY */
+
+/* Define to 1 if you have the `cpuset_setid' function. */
+/* #undef HAVE_CPUSET_SETID */
+
+/* Define to 1 if we have -lcuda */
+/* #undef HAVE_CUDA */
+
+/* Define to 1 if you have the <cuda.h> header file. */
+/* #undef HAVE_CUDA_H */
+
+/* Define to 1 if you have the <cuda_runtime_api.h> header file. */
+/* #undef HAVE_CUDA_RUNTIME_API_H */
+
+/* Define to 1 if you have the declaration of `CL_DEVICE_TOPOLOGY_AMD', and to
+   0 if you don't. */
+/* #undef HAVE_DECL_CL_DEVICE_TOPOLOGY_AMD */
+
+/* Define to 1 if you have the declaration of `CTL_HW', and to 0 if you don't.
+   */
+/* #undef HAVE_DECL_CTL_HW */
+
+/* Define to 1 if you have the declaration of `fabsf', and to 0 if you don't.
+   */
+#define HAVE_DECL_FABSF 1
+
+/* Define to 1 if you have the declaration of `HW_NCPU', and to 0 if you
+   don't. */
+/* #undef HAVE_DECL_HW_NCPU */
+
+/* Define to 1 if you have the declaration of
+   `nvmlDeviceGetMaxPcieLinkGeneration', and to 0 if you don't. */
+/* #undef HAVE_DECL_NVMLDEVICEGETMAXPCIELINKGENERATION */
+
+/* Define to 1 if you have the declaration of `PCI_LOOKUP_NO_NUMBERS', and to
+   0 if you don't. */
+/* #undef HAVE_DECL_PCI_LOOKUP_NO_NUMBERS */
+
+/* Define to 1 if you have the declaration of `pthread_getaffinity_np', and to
+   0 if you don't. */
+#define HAVE_DECL_PTHREAD_GETAFFINITY_NP 0
+
+/* Define to 1 if you have the declaration of `pthread_setaffinity_np', and to
+   0 if you don't. */
+#define HAVE_DECL_PTHREAD_SETAFFINITY_NP 0
+
+/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
+   don't. */
+#define HAVE_DECL_STRTOULL 1
+
+/* Define to 1 if you have the declaration of `_SC_LARGE_PAGESIZE', and to 0
+   if you don't. */
+#define HAVE_DECL__SC_LARGE_PAGESIZE 0
+
+/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_CONF', and to 0
+   if you don't. */
+#define HAVE_DECL__SC_NPROCESSORS_CONF 0
+
+/* Define to 1 if you have the declaration of `_SC_NPROCESSORS_ONLN', and to 0
+   if you don't. */
+#define HAVE_DECL__SC_NPROCESSORS_ONLN 0
+
+/* Define to 1 if you have the declaration of `_SC_NPROC_CONF', and to 0 if
+   you don't. */
+#define HAVE_DECL__SC_NPROC_CONF 0
+
+/* Define to 1 if you have the declaration of `_SC_NPROC_ONLN', and to 0 if
+   you don't. */
+#define HAVE_DECL__SC_NPROC_ONLN 0
+
+/* Define to 1 if you have the declaration of `_SC_PAGESIZE', and to 0 if you
+   don't. */
+#define HAVE_DECL__SC_PAGESIZE 0
+
+/* Define to 1 if you have the declaration of `_SC_PAGE_SIZE', and to 0 if you
+   don't. */
+#define HAVE_DECL__SC_PAGE_SIZE 0
+
+/* Define to 1 if you have the <dirent.h> header file. */
+/* #define HAVE_DIRENT_H 1 */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have the `ffs' function. */
+/* #undef HAVE_FFS */
+
+/* Define to 1 if you have the `ffsl' function. */
+/* #undef HAVE_FFSL */
+
+/* Define to 1 if you have the `fls' function. */
+/* #undef HAVE_FLS */
+
+/* Define to 1 if you have the `flsl' function. */
+/* #undef HAVE_FLSL */
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if the system has the type `GROUP_AFFINITY'. */
+#define HAVE_GROUP_AFFINITY 1
+
+/* Define to 1 if the system has the type `GROUP_RELATIONSHIP'. */
+#define HAVE_GROUP_RELATIONSHIP 1
+
+/* Define to 1 if you have the `host_info' function. */
+/* #undef HAVE_HOST_INFO */
+
+/* Define to 1 if you have the <infiniband/verbs.h> header file. */
+/* #undef HAVE_INFINIBAND_VERBS_H */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if the system has the type `KAFFINITY'. */
+#define HAVE_KAFFINITY 1
+
+/* Define to 1 if you have the <kstat.h> header file. */
+/* #undef HAVE_KSTAT_H */
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+/* #undef HAVE_LANGINFO_H */
+
+/* Define to 1 if we have -lgdi32 */
+#define HAVE_LIBGDI32 1
+
+/* Define to 1 if we have -libverbs */
+/* #undef HAVE_LIBIBVERBS */
+
+/* Define to 1 if we have -lkstat */
+/* #undef HAVE_LIBKSTAT */
+
+/* Define to 1 if we have -llgrp */
+/* #undef HAVE_LIBLGRP */
+
+/* Define to 1 if you have the `pci' library (-lpci). */
+/* #undef HAVE_LIBPCI */
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if the system has the type `LOGICAL_PROCESSOR_RELATIONSHIP'. */
+#define HAVE_LOGICAL_PROCESSOR_RELATIONSHIP 1
+
+/* Define to 1 if you have the <mach/mach_host.h> header file. */
+/* #undef HAVE_MACH_MACH_HOST_H */
+
+/* Define to 1 if you have the <mach/mach_init.h> header file. */
+/* #undef HAVE_MACH_MACH_INIT_H */
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define to 1 if you have the `memalign' function. */
+/* #undef HAVE_MEMALIGN */
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if we have -lmyriexpress */
+/* #undef HAVE_MYRIEXPRESS */
+
+/* Define to 1 if you have the <myriexpress.h> header file. */
+/* #undef HAVE_MYRIEXPRESS_H */
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+/* #undef HAVE_NL_LANGINFO */
+
+/* Define to 1 if you have the <numaif.h> header file. */
+/* #undef HAVE_NUMAIF_H */
+
+/* Define to 1 if the system has the type `NUMA_NODE_RELATIONSHIP'. */
+#define HAVE_NUMA_NODE_RELATIONSHIP 1
+
+/* Define to 1 if you have the <NVCtrl/NVCtrl.h> header file. */
+/* #undef HAVE_NVCTRL_NVCTRL_H */
+
+/* Define to 1 if you have the <nvml.h> header file. */
+/* #undef HAVE_NVML_H */
+
+/* Define to 1 if you have the `openat' function. */
+/* #undef HAVE_OPENAT */
+
+/* Define to 1 if you have the <pci/pci.h> header file. */
+/* #undef HAVE_PCI_PCI_H */
+
+/* Define to 1 if you have the <picl.h> header file. */
+/* #undef HAVE_PICL_H */
+
+/* Define to 1 if you have the `posix_memalign' function. */
+/* #undef HAVE_POSIX_MEMALIGN */
+
+/* Define to 1 if the system has the type `PROCESSOR_CACHE_TYPE'. */
+#define HAVE_PROCESSOR_CACHE_TYPE 1
+
+/* Define to 1 if the system has the type `PROCESSOR_GROUP_INFO'. */
+#define HAVE_PROCESSOR_GROUP_INFO 1
+
+/* Define to 1 if the system has the type `PROCESSOR_RELATIONSHIP'. */
+#define HAVE_PROCESSOR_RELATIONSHIP 1
+
+/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_BLOCK'. */
+/* #undef HAVE_PSAPI_WORKING_SET_EX_BLOCK */
+
+/* Define to 1 if the system has the type `PSAPI_WORKING_SET_EX_INFORMATION'.
+   */
+/* #undef HAVE_PSAPI_WORKING_SET_EX_INFORMATION */
+
+/* Define to 1 if you have the <pthread_np.h> header file. */
+/* #undef HAVE_PTHREAD_NP_H */
+
+/* Define to 1 if the system has the type `pthread_t'. */
+/* #undef HAVE_PTHREAD_T */
+#undef HAVE_PTHREAD_T
+
+/* Define to 1 if you have the `putwc' function. */
+#define HAVE_PUTWC 1
+
+/* Define to 1 if the system has the type `RelationProcessorPackage'. */
+/* #undef HAVE_RELATIONPROCESSORPACKAGE */
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #define HAVE_STRINGS_H 1*/
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to '1' if sysctl is present and usable */
+/* #undef HAVE_SYSCTL */
+
+/* Define to '1' if sysctlbyname is present and usable */
+/* #undef HAVE_SYSCTLBYNAME */
+
+/* Define to 1 if the system has the type
+   `SYSTEM_LOGICAL_PROCESSOR_INFORMATION'. */
+#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION 1
+
+/* Define to 1 if the system has the type
+   `SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX'. */
+#define HAVE_SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX 1
+
+/* Define to 1 if you have the <sys/cpuset.h> header file. */
+/* #undef HAVE_SYS_CPUSET_H */
+
+/* Define to 1 if you have the <sys/lgrp_user.h> header file. */
+/* #undef HAVE_SYS_LGRP_USER_H */
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+/* #undef HAVE_SYS_MMAN_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+/* #define HAVE_SYS_PARAM_H 1 */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+/* #undef HAVE_SYS_SYSCTL_H */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/utsname.h> header file. */
+/* #undef HAVE_SYS_UTSNAME_H */
+
+/* Define to 1 if you have the `uname' function. */
+/* #undef HAVE_UNAME */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #define HAVE_UNISTD_H 1 */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `uselocale' function. */
+/* #undef HAVE_USELOCALE */
+
+/* Define to 1 if the system has the type `wchar_t'. */
+#define HAVE_WCHAR_T 1
+
+/* Define to 1 if you have the <X11/keysym.h> header file. */
+/* #undef HAVE_X11_KEYSYM_H */
+
+/* Define to 1 if you have the <X11/Xlib.h> header file. */
+/* #undef HAVE_X11_XLIB_H */
+
+/* Define to 1 if you have the <X11/Xutil.h> header file. */
+/* #undef HAVE_X11_XUTIL_H */
+
+/* Define to 1 if you have the <xlocale.h> header file. */
+/* #undef HAVE_XLOCALE_H */
+
+/* Define to 1 on AIX */
+/* #undef HWLOC_AIX_SYS */
+
+/* Define to 1 on BlueGene/Q */
+/* #undef HWLOC_BGQ_SYS */
+
+/* Whether C compiler supports symbol visibility or not */
+#define HWLOC_C_HAVE_VISIBILITY 0
+
+/* Define to 1 on Darwin */
+/* #undef HWLOC_DARWIN_SYS */
+
+/* Whether we are in debugging mode or not */
+/* #undef HWLOC_DEBUG */
+
+/* Define to 1 on *FREEBSD */
+/* #undef HWLOC_FREEBSD_SYS */
+
+/* Whether your compiler has __attribute__ or not */
+/* #define HWLOC_HAVE_ATTRIBUTE 1 */
+#undef HWLOC_HAVE_ATTRIBUTE
+
+/* Whether your compiler has __attribute__ aligned or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_ALIGNED 1 */
+
+/* Whether your compiler has __attribute__ always_inline or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_ALWAYS_INLINE 1 */
+
+/* Whether your compiler has __attribute__ cold or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_COLD 1 */
+
+/* Whether your compiler has __attribute__ const or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_CONST 1 */
+
+/* Whether your compiler has __attribute__ deprecated or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_DEPRECATED 1 */
+
+/* Whether your compiler has __attribute__ format or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_FORMAT 1 */
+
+/* Whether your compiler has __attribute__ hot or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_HOT 1 */
+
+/* Whether your compiler has __attribute__ malloc or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_MALLOC 1 */
+
+/* Whether your compiler has __attribute__ may_alias or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_MAY_ALIAS 1 */
+
+/* Whether your compiler has __attribute__ nonnull or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_NONNULL 1 */
+
+/* Whether your compiler has __attribute__ noreturn or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_NORETURN 1 */
+
+/* Whether your compiler has __attribute__ no_instrument_function or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_NO_INSTRUMENT_FUNCTION 1 */
+
+/* Whether your compiler has __attribute__ packed or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_PACKED 1 */
+
+/* Whether your compiler has __attribute__ pure or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_PURE 1 */
+
+/* Whether your compiler has __attribute__ sentinel or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_SENTINEL 1 */
+
+/* Whether your compiler has __attribute__ unused or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_UNUSED 1 */
+
+/* Whether your compiler has __attribute__ warn unused result or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_WARN_UNUSED_RESULT 1 */
+
+/* Whether your compiler has __attribute__ weak alias or not */
+/* #define HWLOC_HAVE_ATTRIBUTE_WEAK_ALIAS 1 */
+
+/* Define to 1 if your `ffs' function is known to be broken. */
+/* #undef HWLOC_HAVE_BROKEN_FFS */
+
+/* Define to 1 if you have the `cairo' library. */
+/* #undef HWLOC_HAVE_CAIRO */
+
+/* Define to 1 if you have the `clz' function. */
+/* #undef HWLOC_HAVE_CLZ */
+
+/* Define to 1 if you have the `clzl' function. */
+/* #undef HWLOC_HAVE_CLZL */
+
+/* Define to 1 if you have cpuid */
+/* #undef HWLOC_HAVE_CPUID */
+
+/* Define to 1 if the CPU_SET macro works */
+/* #undef HWLOC_HAVE_CPU_SET */
+
+/* Define to 1 if the CPU_SET_S macro works */
+/* #undef HWLOC_HAVE_CPU_SET_S */
+
+/* Define to 1 if you have the `cudart' SDK. */
+/* #undef HWLOC_HAVE_CUDART */
+
+/* Define to 1 if function `clz' is declared by system headers */
+/* #undef HWLOC_HAVE_DECL_CLZ */
+
+/* Define to 1 if function `clzl' is declared by system headers */
+/* #undef HWLOC_HAVE_DECL_CLZL */
+
+/* Define to 1 if function `ffs' is declared by system headers */
+/* #undef HWLOC_HAVE_DECL_FFS */
+
+/* Define to 1 if function `ffsl' is declared by system headers */
+/* #undef HWLOC_HAVE_DECL_FFSL */
+
+/* Define to 1 if function `fls' is declared by system headers */
+/* #undef HWLOC_HAVE_DECL_FLS */
+
+/* Define to 1 if function `flsl' is declared by system headers */
+/* #undef HWLOC_HAVE_DECL_FLSL */
+
+/* Define to 1 if you have the `ffs' function. */
+/* #undef HWLOC_HAVE_FFS */
+
+/* Define to 1 if you have the `ffsl' function. */
+/* #undef HWLOC_HAVE_FFSL */
+
+/* Define to 1 if you have the `fls' function. */
+/* #undef HWLOC_HAVE_FLS */
+
+/* Define to 1 if you have the `flsl' function. */
+/* #undef HWLOC_HAVE_FLSL */
+
+/* Define to 1 if you have the GL module components. */
+/* #undef HWLOC_HAVE_GL */
+
+/* Define to 1 if you have the `libpciaccess' library. */
+/* #undef HWLOC_HAVE_LIBPCIACCESS */
+
+/* Define to 1 if you have a library providing the termcap interface */
+/* #undef HWLOC_HAVE_LIBTERMCAP */
+
+/* Define to 1 if you have the `libxml2' library. */
+/* #undef HWLOC_HAVE_LIBXML2 */
+
+/* Define to 1 if building the Linux PCI component */
+/* #undef HWLOC_HAVE_LINUXPCI */
+
+/* Define to 1 if mbind is available. */
+/* #undef HWLOC_HAVE_MBIND */
+
+/* Define to 1 if migrate_pages is available. */
+/* #undef HWLOC_HAVE_MIGRATE_PAGES */
+
+/* Define to 1 if you have the `NVML' library. */
+/* #undef HWLOC_HAVE_NVML */
+
+/* Define to 1 if glibc provides the old prototype (without length) of
+   sched_setaffinity() */
+/* #undef HWLOC_HAVE_OLD_SCHED_SETAFFINITY */
+
+/* Define to 1 if you have the `OpenCL' library. */
+/* #undef HWLOC_HAVE_OPENCL */
+
+/* Define to 1 if `libpci' struct pci_dev has a `device_class' field. */
+/* #undef HWLOC_HAVE_PCIDEV_DEVICE_CLASS */
+
+/* Define to 1 if `libpci' struct pci_dev has a `domain' field. */
+/* #undef HWLOC_HAVE_PCIDEV_DOMAIN */
+
+/* Define to 1 if you have the pciutils `libpci' library. */
+/* #undef HWLOC_HAVE_PCIUTILS */
+
+/* Define to 1 if `libpci' has the `pci_find_cap' function. */
+/* #undef HWLOC_HAVE_PCI_FIND_CAP */
+
+/* Define to 1 if the hwloc library should support dynamically-loaded plugins
+   */
+/* #undef HWLOC_HAVE_PLUGINS */
+
+/* `Define to 1 if you have pthread_getthrds_np' */
+/* #undef HWLOC_HAVE_PTHREAD_GETTHRDS_NP */
+
+/* Define to 1 if pthread mutexes are available */
+/* #undef HWLOC_HAVE_PTHREAD_MUTEX */
+
+/* Define to 1 if glibc provides a prototype of sched_setaffinity() */
+#define HWLOC_HAVE_SCHED_SETAFFINITY 1
+
+/* Define to 1 if set_mempolicy is available. */
+/* #undef HWLOC_HAVE_SET_MEMPOLICY */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HWLOC_HAVE_STDINT_H 1
+
+/* Define to 1 if you have the `windows.h' header. */
+#define HWLOC_HAVE_WINDOWS_H 1
+
+/* Define to 1 if X11 headers including Xutil.h and keysym.h are available. */
+/* #undef HWLOC_HAVE_X11_KEYSYM */
+
+/* Define to 1 if the _syscall3 macro works */
+/* #undef HWLOC_HAVE__SYSCALL3 */
+
+/* Define to 1 on HP-UX */
+/* #undef HWLOC_HPUX_SYS */
+
+/* Define to 1 on Irix */
+/* #undef HWLOC_IRIX_SYS */
+
+/* Define to 1 on Linux */
+/* #undef HWLOC_LINUX_SYS */
+
+/* Define to 1 on *NETBSD */
+/* #undef HWLOC_NETBSD_SYS */
+
+/* Define to 1 on OSF */
+/* #undef HWLOC_OSF_SYS */
+
+/* The size of `unsigned int', as computed by sizeof */
+#define HWLOC_SIZEOF_UNSIGNED_INT 4
+
+/* The size of `unsigned long', as computed by sizeof */
+#define HWLOC_SIZEOF_UNSIGNED_LONG 4
+
+/* Define to 1 on Solaris */
+/* #undef HWLOC_SOLARIS_SYS */
+
+/* The hwloc symbol prefix */
+#define HWLOC_SYM_PREFIX hwloc_
+
+/* The hwloc symbol prefix in all caps */
+#define HWLOC_SYM_PREFIX_CAPS HWLOC_
+
+/* Whether we need to re-define all the hwloc public symbols or not */
+#define HWLOC_SYM_TRANSFORM 0
+
+/* Define to 1 on unsupported systems */
+/* #undef HWLOC_UNSUPPORTED_SYS */
+
+/* Define to 1 if ncurses works, preferred over curses */
+/* #undef HWLOC_USE_NCURSES */
+
+/* Define to 1 on WINDOWS */
+#define HWLOC_WIN_SYS 1
+
+/* Define to 1 on x86_32 */
+/* #undef HWLOC_X86_32_ARCH */
+
+/* Define to 1 on x86_64 */
+#define HWLOC_X86_64_ARCH 1
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+#define PACKAGE "hwloc"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://www.open-mpi.org/projects/hwloc/"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "hwloc"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "hwloc 1.7.2"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "hwloc"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.7.2"
+
+/* The size of `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Enable extensions on HP-UX. */
+#ifndef _HPUX_SOURCE
+# define _HPUX_SOURCE 1
+#endif
+
+
+/* Enable extensions on AIX 3, Interix.  */
+/*
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+*/
+
+/* Enable GNU extensions on systems that have them.  */
+/*
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+*/
+/* Enable threading extensions on Solaris.  */
+/*
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+*/
+/* Enable extensions on HP NonStop.  */
+/*
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+*/
+/* Enable general extensions on Solaris.  */
+/*
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
+*/
+
+
+/* Version number of package */
+#define VERSION "1.9"
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#define X_DISPLAY_MISSING 1
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define this to the process ID type */
+#define hwloc_pid_t HANDLE
+
+/* Define this to either strncasecmp or strncmp */
+#define hwloc_strncasecmp strncasecmp
+
+/* Define this to the thread ID type */
+#define hwloc_thread_t HANDLE
+
+
+#endif /* HWLOC_CONFIGURE_H */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/static-components.h b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/static-components.h
new file mode 100644
index 0000000..f0373ab
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/static-components.h
@@ -0,0 +1,17 @@
+HWLOC_DECLSPEC extern const struct hwloc_component hwloc_noos_component;
+HWLOC_DECLSPEC extern const struct hwloc_component hwloc_xml_component;
+HWLOC_DECLSPEC extern const struct hwloc_component hwloc_synthetic_component;
+HWLOC_DECLSPEC extern const struct hwloc_component hwloc_custom_component;
+HWLOC_DECLSPEC extern const struct hwloc_component hwloc_xml_nolibxml_component;
+HWLOC_DECLSPEC extern const struct hwloc_component hwloc_windows_component;
+HWLOC_DECLSPEC extern const struct hwloc_component hwloc_x86_component;
+static const struct hwloc_component * hwloc_static_components[] = {
+  &hwloc_noos_component,
+  &hwloc_xml_component,
+  &hwloc_synthetic_component,
+  &hwloc_custom_component,
+  &hwloc_xml_nolibxml_component,
+  &hwloc_windows_component,
+  &hwloc_x86_component,
+  NULL
+};
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am
index 9bfee66..0b01e23 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright © 2009-2013 Inria.  All rights reserved.
+# Copyright © 2009-2014 Inria.  All rights reserved.
 # Copyright © 2009-2013 Université Bordeaux 1
 # Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 # See COPYING in top-level directory.
@@ -24,9 +24,6 @@ DOX_TAG = $(DOX_DIR)/$(PACKAGE).tag
 # time they build after a checkout (or if something in the docs
 # changes, etc.).
 #
-# Note that by listing directories in EXTRA_DIST, we pick up the whole
-# tree (e.g., everything in the man and latex directories).
-#
 
 # images already available in repository
 PREBUILT_IMAGES = images/dudley.png images/emmett.png images/hagrid.png
@@ -54,6 +51,10 @@ EXTRA_DIST = \
         $(PREBUILT_IMAGES) \
         $(BUILT_IMAGES)
 
+
+
+if HWLOC_BUILD_DOXYGEN
+
 #
 # Files where the doxygen inputs live (i.e., dependencies).  Make the
 # generated tagfile depend on these files, which will force them to be
@@ -90,7 +91,6 @@ dox_inputs = $(DOX_CONFIG) \
 # building standalone.
 #
 
-if HWLOC_BUILD_DOXYGEN
 BUILT_SOURCES = $(BUILT_IMAGES)
 
 images/diagram.png: $(srcdir)/images/diagram.fig
@@ -108,7 +108,6 @@ images/diagram.eps: $(srcdir)/images/diagram.fig
 	    exit 1; \
 	fi
 	$(FIG2DEV) -L eps $< $@
-endif
 
 #
 # Rules for running doxygen.  It depends on the built images and the
@@ -117,30 +116,20 @@ endif
 # of nested structurre/union declarations.
 #
 
-RENAME_SED = \
-	$(SED_I) -e 's/__hwloc_restrict/restrict/g' \
-	          -e 's/\\_\\-\\_\\-hwloc\\_\\-restrict/restrict/g' \
-	          -e 's/__hwloc_attribute_unused//g' \
-	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-unused//g' \
-	          -e 's/__hwloc_attribute_malloc//g' \
-	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-malloc//g' \
-	          -e 's/__hwloc_attribute_const//g' \
-	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-const//g' \
-	          -e 's/__hwloc_attribute_pure//g' \
-	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-pure//g' \
-	          -e 's/__hwloc_attribute_deprecated//g' \
-	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-deprecated//g' \
-	          -e 's/HWLOC_DECLSPEC//g' \
-	          -e 's/HWLOC\\_\\-DECLSPEC//g' \
-	          -e 's/__hwloc_inline/inline/g' \
-	          -e 's/\\_\\-\\_\\-hwloc\\_\\-inline/inline/g'
+#
+# Note that we want to use our own doxygen.css file; not the one that
+# doxygen installs in the HTML directory.  So manually copy it over.
+# Be a little clever: only copy the doxygen.css file over if it exists
+# in DOX_HTML_DIR (which is in the build tree).  If the html tree
+# doesn't exist in the build tree, then we're using an html tree in
+# the source tree, and we don't need to copy over the doxygen.css
+# because we didn't build the html tree (e.g., the html tree came
+# pre-bundled in a tarball).
+#
 
-if HWLOC_BUILD_DOXYGEN
 $(DOX_TAG): $(BUILT_SOURCES) $(dox_inputs) $(PREBUILT_IMAGES)
 	rm -fr $(DOX_DIR)
 	$(DOXYGEN) $(DOX_CONFIG)
-	-$(RENAME_SED) \
-		$(DOX_DIR)/html/*.html $(DOX_DIR)/latex/*.tex $(DOX_DIR)/man/man3/*.3
 	@echo "Work-around spurious leading _ in doxygen filenames..."
 	-(cd $(DOX_DIR)/man/man3 ; \
 	for i in _hwloc* ; do \
@@ -151,17 +140,15 @@ $(DOX_TAG): $(BUILT_SOURCES) $(dox_inputs) $(PREBUILT_IMAGES)
 	@mv $(DOX_MAN_DIR)/man3/hwloc* $(DOX_MAN_DIR)/man3/HWLOC* $(DOX_DIR)/man.tmp/
 	@rm -rf $(DOX_MAN_DIR)/man3
 	@mv $(DOX_DIR)/man.tmp $(DOX_MAN_DIR)/man3
-endif
-
-www-doc-sed:
-	-$(RENAME_SED) www.open-mpi.org/html/*.php
+	@echo "Copying custom doxygen.css..."
+	if test -d $(DOX_HTML_DIR) -a -f $(DOX_HTML_DIR)/doxygen.css; then \
+	    cp -f $(srcdir)/doxygen.css $(DOX_HTML_DIR); \
+	fi
 
 #
 # Rules for building the PDF
 #
 
-if HWLOC_BUILD_DOXYGEN
-
 # The Doxygen config is set to generate a4 latex -- no transformation
 # is necessary.
 $(DOX_A4PDF): $(DOX_TAG)
@@ -201,25 +188,20 @@ $(DOX_LETTERPDF): $(DOX_TAG)
 	   fi; \
 	done; \
 	mv letter-refman.pdf $(DOCDIR)/$(DOX_LETTERPDF)
-endif
 
-#
-# Note that we want to use our own doxygen.css file; not the one that
-# doxygen installs in the HTML directory.  So manually copy it over.
-# Be a little clever: only copy the doxygen.css file over if it exists
-# in DOX_HTML_DIR (which is in the build tree).  If the html tree
-# doesn't exist in the build tree, then we're using an html tree in
-# the source tree, and we don't need to copy over the doxygen.css
-# because we didn't build the html tree (e.g., the html tree came
-# pre-bundled in a tarball).
-#
+doc: $(DOX_TAG) $(DOX_LETTERPDF) $(DOX_A4PDF)
 
-if HWLOC_BUILD_DOXYGEN
-all-local: $(DOX_TAG)
-	if test -d $(DOX_HTML_DIR) -a -f $(DOX_HTML_DIR)/doxygen.css; then \
-	    cp -f $(srcdir)/doxygen.css $(DOX_HTML_DIR); \
-	fi
-endif
+else !HWLOC_BUILD_DOXYGEN
+
+# When we don't have doxygen, nothing to do
+doc:
+
+endif !HWLOC_BUILD_DOXYGEN
+# there are also a bunch of doxygen-build-dependencies later in this file
+
+
+
+if HWLOC_INSTALL_DOXYGEN
 
 #
 # Un/install the generated PDF and man pages (just like BUILD_DOXYGEN,
@@ -227,9 +209,7 @@ endif
 # standalone mode).
 #
 
-if HWLOC_INSTALL_DOXYGEN
-dist_pdf_DATA = $(DOX_A4PDF) $(DOX_LETTERPDF)
-endif
+pdf_DATA = $(DOX_A4PDF) $(DOX_LETTERPDF)
 
 #
 # Install the HWLOC_* and hwloc_* man pages.  It would be great to
@@ -237,8 +217,6 @@ endif
 # in the Makefile.am...  :-(
 #
 
-if HWLOC_INSTALL_DOXYGEN
-
 # We have so many man pages that if we put them all in man3_MANS, we
 # exceed the maximum command line length on some systems (during "make
 # install").  :-( So we have to split them up so that the total
@@ -384,7 +362,7 @@ man3_object_stringsdir = $(man3dir)
 man3_object_strings_DATA = \
         $(DOX_MAN_DIR)/man3/hwlocality_object_strings.3 \
         $(DOX_MAN_DIR)/man3/hwloc_obj_type_string.3 \
-        $(DOX_MAN_DIR)/man3/hwloc_obj_type_of_string.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_type_sscanf.3 \
         $(DOX_MAN_DIR)/man3/hwloc_obj_type_snprintf.3 \
         $(DOX_MAN_DIR)/man3/hwloc_obj_attr_snprintf.3 \
         $(DOX_MAN_DIR)/man3/hwloc_obj_cpuset_snprintf.3 \
@@ -572,8 +550,9 @@ man3_helper_find_misc_DATA = \
 man3_helper_distributedir = $(man3dir)
 man3_helper_distribute_DATA = \
         $(DOX_MAN_DIR)/man3/hwlocality_helper_distribute.3 \
-        $(DOX_MAN_DIR)/man3/hwloc_distribute.3 \
-        $(DOX_MAN_DIR)/man3/hwloc_distributev.3
+        $(DOX_MAN_DIR)/man3/hwloc_distrib_flags_e.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_DISTRIB_FLAG_REVERSE.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_distrib.3
 
 man3_helper_topology_setsdir = $(man3dir)
 man3_helper_topology_sets_DATA = \
@@ -674,9 +653,10 @@ man3_glibc_sched_DATA = \
 man3_linuxdir = $(man3dir)
 man3_linux_DATA = \
         $(DOX_MAN_DIR)/man3/hwlocality_linux.3 \
-        $(DOX_MAN_DIR)/man3/hwloc_linux_get_tid_cpubind.3 \
         $(DOX_MAN_DIR)/man3/hwloc_linux_parse_cpumap_file.3 \
-        $(DOX_MAN_DIR)/man3/hwloc_linux_set_tid_cpubind.3
+        $(DOX_MAN_DIR)/man3/hwloc_linux_set_tid_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_linux_get_tid_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_linux_get_tid_last_cpu_location.3
 
 man3_linux_libnumadir = $(man3dir)
 man3_linux_libnuma_DATA = \
@@ -705,7 +685,10 @@ man3_openfabrics_DATA = \
         $(DOX_MAN_DIR)/man3/hwloc_ibv_get_device_osdev_by_name.3
 
 # end of manpages(3) if HWLOC_BUILD_DOXYGEN
-endif
+
+endif HWLOC_INSTALL_DOXYGEN
+
+
 
 if HWLOC_BUILD_DOXYGEN
 
@@ -759,7 +742,10 @@ $(DOX_MAN_DIR): $(DOX_TAG)
 # built at the same time during a parallel build (e.g., "make -j X").
 # So arbitrarily make the A4 PDF dependent upon the Letter PDF.
 $(DOX_A4PDF): $(DOX_TAG) $(DOX_LETTERPDF)
-endif
+
+endif HWLOC_BUILD_DOXYGEN
+
+
 
 #
 # Make sure that the documentation example works
@@ -798,6 +784,8 @@ MAINTAINERCLEANFILES = $(DOX_TAG) \
     $(DOX_LETTERPDF) \
     $(DOX_HTML_README)
 
+if HWLOC_BUILD_README
+
 #
 # Rules for creating the top-level README file.  There does not appear
 # to be an easy way to know if AC_PATH_PROG found something in
@@ -807,28 +795,20 @@ MAINTAINERCLEANFILES = $(DOX_TAG) \
 # Just like BUILD_DOXYGEN, BUILD_README will automatically be false if
 # we're not building standalone.
 #
-
-if HWLOC_BUILD_README
-doc readme: all $(HWLOC_top_srcdir)/README
-$(HWLOC_top_srcdir)/README: $(DOX_HTML_README)
-	LC_ALL=C $(HWLOC_W3_GENERATOR) $(DOX_HTML_README) | $(SED) -n -e 's/^   //' -e '/^Introduction$$/,$$p' > $@
+readme: $(HWLOC_top_srcdir)/README
+$(HWLOC_top_srcdir)/README: $(DOX_TAG)
+	sed -n -f $(srcdir)/README.sed $(DOX_HTML_DIR)/index.html > $(DOX_HTML_README)
+	LC_ALL=C $(HWLOC_W3_GENERATOR) $(DOX_HTML_README) \
+	 | $(SED) -n -e 's/^   //' -e '/^Introduction$$/,$$p' \
+	 | $(SED) -e '/^--*-$$/,$$ d' \
+	 > $@
 	rm -f $(DOX_HTML_README)
-$(DOX_HTML_README): $(DOX_HTML_DIR)
-	rm -f $@
-	sed -n -f $(srcdir)/README.sed $(DOX_HTML_DIR)/index.html > $@
+
 else
-doc readme: no-build-readme
-$(HWLOC_top_srcdir)/README: no-build-readme
 
-no-build-readme:
-	@echo "ERROR: You do not have the 'w3m' or 'lynx' executables to build the README, or do not have the 'doxygen' executable to build the docs."
-	@echo "ERROR: Cannot continue."
-	@exit 1
+# When we don't have what's needed to build the README, nothing to do
+readme: doc
+
 endif
 
-#DOCUPLOADHOST=sync.bordeaux.inria.fr
-#DOCUPLOADOPTS=
-#doc-upload: @DX_DOCDIR@/html
-#	echo FIXME
-#	false
-#	rsync -avz --delete --chmod=ug+rwX,o+rX $(DOCUPLOADOPTS) @DX_DOCDIR@/html/ $(DOCUPLOADHOST):/web/runtime/libtopology/doc/
+all-local: doc readme
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.cfg b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.cfg
index 61701b4..6e9b0eb 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.cfg
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.cfg
@@ -1,4 +1,4 @@
-# Copyright © 2010 inria.  All rights reserved.
+# Copyright © 2010-2014 Inria.  All rights reserved.
 # Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
 # See COPYING in top-level directory.
 
@@ -1278,7 +1278,7 @@ INCLUDE_FILE_PATTERNS  =
 # undefined via #undef or recursively expanded use the := operator 
 # instead of the = operator.
 
-PREDEFINED             = hwloc_thread_t=hwloc_thread_t HWLOC_HAVE_CPU_SET=1 NUMA_VERSION1_COMPATIBILITY=1 __GNUC__=1
+PREDEFINED             = hwloc_thread_t=hwloc_thread_t HWLOC_HAVE_CPU_SET=1 NUMA_VERSION1_COMPATIBILITY=1 __GNUC__=1 __hwloc_inline=inline __hwloc_restrict=restrict __hwloc_attribute_const= __hwloc_attribute_deprecated= __hwloc_attribute_malloc= __hwloc_attribute_pure= __hwloc_attribute_unused= HWLOC_DECLSPEC=
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 # this tag can be used to specify a list of macro names that should be expanded. 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
index 84f1866..8570ff9 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2013 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -609,7 +609,7 @@ If those things fail, contact us on the mailing list for additional
 help.  Please attach the output of lstopo after having given the
 <tt>--enable-debug</tt> option to ./configure and rebuilt completely, to get
 debugging output. Also attach the <tt>/proc</tt> + <tt>/sys</tt> tarball
-generated by the installed script <tt>hwloc-gather-topology.sh</tt>
+generated by the installed script <tt>hwloc-gather-topology</tt>
 when submitting problems about Linux, or send the
 output of <tt>kstat cpu_info</tt> in the Solaris case, or the output of
 <tt>sysctl hw</tt> in the Darwin or BSD cases.
@@ -1640,13 +1640,34 @@ placed.
 <dd>The description string that was given to hwloc to build this
 synthetic topology.
 </dd>
-<dt>CPUModel, CPUType (Socket or Machine)</dt>
-<dd>The processor model name,
-and a more-general processor type name when applicable (Solaris/Sparc).
-These attributes are usually added to Socket objects.
-However, when hwloc cannot detect the number of sockets but still
-knows their (same) model, the attribute may be added to the Machine
-object instead.
+<dt>CPUModel (Socket or Machine)</dt>
+<dd>The processor model name.
+Usually added to Socket objects, but can be in Machine instead if
+hwloc failed to discover any socket.
+</dd>
+<dt>CPUType (Socket)</dt>
+<dd>
+A Solaris-specific general processor type name, such as "i86pc".
+</dd>
+<dt>CPUVendor, CPUModelNumber, CPUFamilyNumber (Socket or Machine)</dt>
+<dd>The processor vendor name, model number, and family number.
+Currently available for x86 and Xeon Phi processors on most systems,
+and for ia64 processors on Linux.
+Usually added to Socket objects, but can be in Machine instead if
+hwloc failed to discover any socket.
+</dd>
+<dt>CPURevision (Socket)</dt>
+<dd>
+A POWER/PowerPC-specific general processor revision number,
+currently only available on Linux.
+</dd>
+<dt>PlatformName, PlatformModel, PlatformVendor, PlatformBoardID, PlatformRevision,</dt>
+<dt> SystemVersionRegister, ProcessorVersionRegister (Machine)</dt>
+<dd>Some POWER/PowerPC-specific attributes describing the platform
+and processor.
+Currently only available on Linux.
+Usually added to Socket objects, but can be in Machine instead if
+hwloc failed to discover any socket.
 </dd>
 <dt>PCIVendor, PCIDevice (PCI devices and bridges)</dt>
 <dd>The vendor and device names of the PCI device.
@@ -1658,15 +1679,26 @@ object instead.
 <dt>GPUVendor, GPUModel (GPU or Co-Processor OS devices)</dt>
 <dd>The vendor and model names of the GPU device.
 </dd>
-<dt>OpenCLDeviceType, OpenCLPlatformIndex,
+<dt>OpenCLDeviceType, OpenCLPlatformIndex,</dt>
 <dt>OpenCLPlatformName, OpenCLPlatformDeviceIndex (OpenCL GPU OS devices)</dt>
 <dd>The type of OpenCL device,
  the OpenCL platform index and name,
  and the index of the device within the platform.
 </dd>
+<dt>OpenCLComputeUnits, OpenCLGlobalMemorySize</dt>
+<dd>The number of compute units and global memory size (in kB) of a OpenCL device.
+</dd>
 <dt>NVIDIAUUID, NVIDIASerial (NVML GPU OS devices)</dt>
 <dd>The UUID and Serial of NVIDIA GPUs.
 </dd>
+<dt>CUDAMultiProcessors, CUDACoresPerMP,</dt>
+<dt>CUDAGlobalMemorySize, CUDAL2CacheSize, CUDASharedMemorySizePerMP (CUDA OS devices)</dt>
+<dd>
+ The number of shared multiprocessors, the number of cores per
+ multiprocessor, the global memory size, the (global) L2 cache size,
+ and size of the shared memory in each multiprocessor of a CUDA device.
+ Sizes are in kB.
+</dd>
 <dt>MICSerialNumber</dt>
 <dd>
  The serial number of an Intel Xeon Phi (MIC) coprocessor.
@@ -1825,8 +1857,11 @@ That is why the above topology contains 4 cores (2 cores times 2 nodes).
 These type names must be written as
 <tt>machine</tt>, <tt>node</tt>, <tt>socket</tt>, <tt>core</tt>,
 <tt>cache</tt>, <tt>pu</tt>, <tt>misc</tt>, <tt>group</tt>.
-They do not need to be written case-sensitively, nor entirely (2
-characters such as <tt>ma</tt> select a Machine level).
+They do not need to be written case-sensitively, nor entirely
+(as long as there is no ambiguity, 2 characters such as <tt>ma</tt>
+ select a Machine level).
+Type-specific attributes may also be given such as <tt>L2iCache</tt>
+(hwloc_obj_type_sscanf() is used for parsing the type names).
 Note that I/O objects are not available.
 
 The root object does not appear in the string.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am
index e7f6dd3..bac3d23 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright © 2009-2013 Inria.  All rights reserved.
+# Copyright © 2009-2014 Inria.  All rights reserved.
 # Copyright © 2009-2010 Université Bordeaux 1
 # Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
 # Copyright © 2011      Oracle and/or its affiliates.  All rights reserved.
@@ -35,7 +35,7 @@ noinst_HEADERS = \
         private/misc.h \
         private/xml.h \
         private/components.h \
-        private/cpuid.h
+        private/cpuid-x86.h
 
 if HWLOC_HAVE_LINUX
 include_hwloc_HEADERS += \
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h
index 84ff056..10c9672 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -75,7 +75,7 @@ extern "C" {
  */
 
 /** \brief Indicate at build time which hwloc API version is being used. */
-#define HWLOC_API_VERSION 0x00010800
+#define HWLOC_API_VERSION 0x00010900
 
 /** \brief Indicate at runtime which hwloc API version was used at build time. */
 HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
@@ -1173,11 +1173,36 @@ hwloc_get_next_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type,
 /** \brief Return a stringified topology object type */
 HWLOC_DECLSPEC const char * hwloc_obj_type_string (hwloc_obj_type_t type) __hwloc_attribute_const;
 
-/** \brief Return an object type from the string
+/** \brief Return an object type and attributes from a type string.
  *
- * \return -1 if unrecognized.
+ * Convert strings such as "socket" or "cache" into the corresponding types.
+ * Matching is case-insensitive, and only the first letters are actually
+ * required to match.
+ *
+ * Types that have specific attributes, for instance caches and groups,
+ * may be returned in \p depthattrp and \p typeattrp. They are ignored
+ * when these pointers are \c NULL.
+ *
+ * For instance "L2i" or "L2iCache" would return
+ * type HWLOC_OBJ_CACHE in \p typep, 2 in \p depthattrp,
+ * and HWLOC_OBJ_CACHE_TYPE_INSTRUCTION in \p typeattrp
+ * (this last pointer should point to a hwloc_obj_cache_type_t).
+ * "Group3" would return type HWLOC_OBJ_GROUP type and 3 in \p depthattrp.
+ * Attributes that are not specified in the string (for instance "Group"
+ * without a depth, or "L2Cache" without a cache type) are set to -1.
+ *
+ * \p typeattrd is only filled if the size specified in \p typeattrsize
+ * is large enough. It is currently only used for caches, and the required
+ * size is at least the size of hwloc_obj_cache_type_t.
+ *
+ * \return 0 if a type was correctly identified, otherwise -1.
+ *
+ * \note This is an extended version of the now deprecated hwloc_obj_type_of_string()
  */
-HWLOC_DECLSPEC hwloc_obj_type_t hwloc_obj_type_of_string (const char * string) __hwloc_attribute_pure;
+HWLOC_DECLSPEC int hwloc_obj_type_sscanf(const char *string,
+					 hwloc_obj_type_t *typep,
+					 int *depthattrp,
+					 void *typeattrp, size_t typeattrsize);
 
 /** \brief Stringify the type of a given topology object into a human-readable form.
  *
@@ -1368,7 +1393,11 @@ HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t s
  * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
  * and \p HANDLE on native Windows platforms.
  *
- * \note HWLOC_CPUBIND_THREAD can not be used in \p flags.
+ * \note As a special case on Linux, if a tid (thread ID) is supplied
+ * instead of a pid (process ID) and HWLOC_CPUBIND_THREAD is passed in flags,
+ * the binding is applied to that specific thread.
+ *
+ * \note On non-Linux systems, HWLOC_CPUBIND_THREAD can not be used in \p flags.
  */
 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
 
@@ -1377,11 +1406,11 @@ HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t
  * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
  * and \p HANDLE on native Windows platforms.
  *
- * \note HWLOC_CPUBIND_THREAD can not be used in \p flags.
- *
  * \note As a special case on Linux, if a tid (thread ID) is supplied
- * instead of a pid (process ID), the binding for that specific thread
- * is returned.
+ * instead of a pid (process ID) and HWLOC_CPUBIND_THREAD is passed in flags,
+ * the binding for that specific thread is returned.
+ *
+ * \note On non-Linux systems, HWLOC_CPUBIND_THREAD can not be used in \p flags.
  */
 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
 
@@ -1434,7 +1463,9 @@ HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_
  *
  * \note As a special case on Linux, if a tid (thread ID) is supplied
  * instead of a pid (process ID) and HWLOC_CPUBIND_THREAD is passed in flags,
- * the binding for that specific thread is returned.
+ * the last CPU location of that specific thread is returned.
+ *
+ * \note On non-Linux systems, HWLOC_CPUBIND_THREAD can not be used in \p flags.
  */
 HWLOC_DECLSPEC int hwloc_get_proc_last_cpu_location(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
 
@@ -2120,6 +2151,8 @@ HWLOC_DECLSPEC hwloc_obj_t hwloc_custom_insert_group_object_by_parent(hwloc_topo
  * \note Only printable characters may be exported to XML string attributes.
  * Any other character, especially any non-ASCII character, will be silently
  * dropped.
+ *
+ * \note If \p name is "-", the XML output is sent to the standard output.
  */
 HWLOC_DECLSPEC int hwloc_topology_export_xml(hwloc_topology_t topology, const char *xmlpath);
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/deprecated.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/deprecated.h
index 544ca8f..06ca2a8 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/deprecated.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/deprecated.h
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -21,6 +21,12 @@
 extern "C" {
 #endif
 
+/** \brief Return an object type from the string
+ *
+ * \return -1 if unrecognized.
+ */
+HWLOC_DECLSPEC hwloc_obj_type_t hwloc_obj_type_of_string (const char * string) __hwloc_attribute_pure;
+
 /** \brief Stringify a given topology object into a human-readable form.
  *
  * \note This function is deprecated in favor of hwloc_obj_type_snprintf()
@@ -45,6 +51,39 @@ HWLOC_DECLSPEC int hwloc_obj_snprintf(char * __hwloc_restrict string, size_t siz
 				      hwloc_topology_t topology, hwloc_obj_t obj,
 				      const char * __hwloc_restrict indexprefix, int verbose);
 
+/** \brief Distribute \p n items over the topology under \p root
+ *
+ * Array \p cpuset will be filled with \p n cpusets recursively distributed
+ * linearly over the topology under \p root, down to depth \p until (which can
+ * be INT_MAX to distribute down to the finest level).
+ *
+ * This is typically useful when an application wants to distribute \p n
+ * threads over a machine, giving each of them as much private cache as
+ * possible and keeping them locally in number order.
+ *
+ * The caller may typically want to also call hwloc_bitmap_singlify()
+ * before binding a thread so that it does not move at all.
+ *
+ * \note This function requires the \p root object to have a CPU set.
+ */
+static __hwloc_inline void
+hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *set, unsigned n, unsigned until)
+{
+  hwloc_distrib(topology, &root, 1, set, n, until, 0);
+}
+
+/** \brief Distribute \p n items over the topology under \p roots
+ *
+ * This is the same as hwloc_distribute, but takes an array of roots instead of
+ * just one root.
+ *
+ * \note This function requires the \p roots objects to have a CPU set.
+ */
+static __hwloc_inline void
+hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *set, unsigned n, unsigned until)
+{
+  hwloc_distrib(topology, roots, n_roots, set, n, until, 0);
+}
 
 #ifdef __cplusplus
 } /* extern "C" */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/diff.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/diff.h
index 59f7296..a6046ff 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/diff.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/diff.h
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2013 Inria.  All rights reserved.
+ * Copyright © 2013-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -44,6 +44,13 @@ extern "C" {
  * be represented in the difference structures and therefore return
  * errors.
  *
+ * It means that there is no need to apply the difference when
+ * looking at the tree organization (how many levels, how many
+ * objects per level, what kind of objects, CPU and node sets, etc)
+ * and when binding to objects.
+ * However the difference must be applied when looking at object
+ * attributes such as the name, the memory size or info attributes.
+ *
  * @{
  */
 
@@ -121,7 +128,7 @@ typedef union hwloc_topology_diff_u {
   struct hwloc_topology_diff_generic_s {
     /* each part of the union must start with these */
     hwloc_topology_diff_type_t type;
-    union hwloc_topology_diff_u * next;
+    union hwloc_topology_diff_u * next; /* pointer to the next element of the list, or NULL */
   } generic;
 
   /* A difference in an object attribute. */
@@ -153,20 +160,20 @@ typedef union hwloc_topology_diff_u {
  * simultaneously.
  *
  * If the difference between 2 objects is too complex to be represented
- * (for instance if some objects are added or removed), a special diff
- * entry of type HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX is queued.
- * The computation of the diff does not continue under these objects.
+ * (for instance if some objects have different types, or different numbers
+ * of children), a special diff entry of type HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX
+ * is queued.
+ * The computation of the diff does not continue below these objects.
  * So each such diff entry means that the difference between two subtrees
  * could not be computed.
  *
  * \return 0 if the difference can be represented properly.
  *
- * \return 0 with \p diff pointing NULL if there is no difference between
- * the topologies.
+ * \return 0 with \p diff pointing to NULL if there is no difference
+ * between the topologies.
  *
- * \return 1 if the difference is too complex (for instance if some objects are added
- * or removed), some entries in the list will be of type HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX
- * and 1 is returned.
+ * \return 1 if the difference is too complex (see above). Some entries in
+ * the list will be of type HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX.
  *
  * \return -1 on any other error.
  *
@@ -179,8 +186,8 @@ typedef union hwloc_topology_diff_u {
  * HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX is listed.
  * 
  * \note The output diff may be modified by removing some entries from
- * the list. The removed entries should be freed by passing them as a list
- * to hwloc_topology_diff_destroy().
+ * the list. The removed entries should be freed by passing them to
+ * to hwloc_topology_diff_destroy() (possible as another list).
 */
 HWLOC_DECLSPEC int hwloc_topology_diff_build(hwloc_topology_t topology, hwloc_topology_t newtopology, unsigned long flags, hwloc_topology_diff_t *diff);
 
@@ -198,16 +205,16 @@ enum hwloc_topology_diff_apply_flags_e {
  * \p flags is an OR'ed set of hwloc_topology_diff_apply_flags_e.
  *
  * The new topology is modified in place. hwloc_topology_dup()
- * may be used to duplicate before patching.
+ * may be used to duplicate it before patching.
  *
  * If the difference cannot be applied entirely, all previous applied
- * portions are unapplied before returning.
+ * elements are unapplied before returning.
  *
  * \return 0 on success.
  *
  * \return -N if applying the difference failed while trying
  * to apply the N-th part of the difference. For instance -1
- * is returned if the very first difference portion could not
+ * is returned if the very first difference element could not
  * be applied.
  */
 HWLOC_DECLSPEC int hwloc_topology_diff_apply(hwloc_topology_t topology, hwloc_topology_diff_t diff, unsigned long flags);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
index eb09998..750f404 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -644,11 +644,23 @@ hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_
  * @{
  */
 
-/** \brief Distribute \p n items over the topology under \p root
+/** \brief Flags to be given to hwloc_distrib().
+ */
+enum hwloc_distrib_flags_e {
+  /** \brief Distrib in reverse order, starting from the last objects.
+   * \hideinitializer
+   */
+  HWLOC_DISTRIB_FLAG_REVERSE = (1UL<<0)
+};
+
+/** \brief Distribute \p n items over the topology under \p roots
+ *
+ * Array \p set will be filled with \p n cpusets recursively distributed
+ * linearly over the topology under objects \p roots, down to depth \p until
+ * (which can be INT_MAX to distribute down to the finest level).
  *
- * Array \p cpuset will be filled with \p n cpusets recursively distributed
- * linearly over the topology under \p root, down to depth \p until (which can
- * be INT_MAX to distribute down to the finest level).
+ * \p n_roots is usually 1 and \p roots only contains the topology root object
+ * so as to distribute over the entire topology.
  *
  * This is typically useful when an application wants to distribute \p n
  * threads over a machine, giving each of them as much private cache as
@@ -657,51 +669,54 @@ hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_
  * The caller may typically want to also call hwloc_bitmap_singlify()
  * before binding a thread so that it does not move at all.
  *
- * \note This function requires the \p root object to have a CPU set.
- */
-static __hwloc_inline void
-hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *root, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until);
-static __hwloc_inline void
-hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *set, unsigned n, unsigned until)
-{
-  unsigned i;
-  if (!root->arity || n == 1 || root->depth >= until) {
-    /* Got to the bottom, we can't split any more, put everything there.  */
-    for (i=0; i<n; i++)
-      set[i] = hwloc_bitmap_dup(root->cpuset);
-    return;
-  }
-  hwloc_distributev(topology, root->children, root->arity, set, n, until);
-}
-
-/** \brief Distribute \p n items over the topology under \p roots
- *
- * This is the same as hwloc_distribute, but takes an array of roots instead of
- * just one root.
+ * \p flags should be 0 or a OR'ed set of ::hwloc_distrib_flags_e.
  *
  * \note This function requires the \p roots objects to have a CPU set.
+ *
+ * \note This function replaces the now deprecated hwloc_distribute()
+ * and hwloc_distributev() functions.
  */
-static __hwloc_inline void
-hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *set, unsigned n, unsigned until)
+static __hwloc_inline int
+hwloc_distrib(hwloc_topology_t topology,
+	      hwloc_obj_t *roots, unsigned n_roots,
+	      hwloc_cpuset_t *set,
+	      unsigned n,
+	      unsigned until, unsigned long flags)
 {
   unsigned i;
   unsigned tot_weight;
   hwloc_cpuset_t *cpusetp = set;
 
+  if (flags & ~HWLOC_DISTRIB_FLAG_REVERSE) {
+    errno = EINVAL;
+    return -1;
+  }
+
   tot_weight = 0;
   for (i = 0; i < n_roots; i++)
     if (roots[i]->cpuset)
       tot_weight += hwloc_bitmap_weight(roots[i]->cpuset);
 
   for (i = 0; i < n_roots && tot_weight; i++) {
-    /* Give to roots[i] a portion proportional to its weight */
-    unsigned weight = roots[i]->cpuset ? hwloc_bitmap_weight(roots[i]->cpuset) : 0;
+    /* Give to roots[] a portion proportional to its weight */
+    hwloc_obj_t root = roots[flags & HWLOC_DISTRIB_FLAG_REVERSE ? n_roots-1-i : i];
+    unsigned weight = root->cpuset ? hwloc_bitmap_weight(root->cpuset) : 0;
     unsigned chunk = (n * weight + tot_weight-1) / tot_weight;
-    hwloc_distribute(topology, roots[i], cpusetp, chunk, until);
+    if (!root->arity || chunk == 1 || root->depth >= until) {
+      /* Got to the bottom, we can't split any more, put everything there.  */
+      unsigned j;
+      for (j=0; j<n; j++)
+	cpusetp[j] = hwloc_bitmap_dup(root->cpuset);
+    } else {
+      /* Still more to distribute, recurse into children */
+      hwloc_distrib(topology, root->children, root->arity, cpusetp, chunk, until, flags);
+    }
     cpusetp += chunk;
     tot_weight -= weight;
     n -= chunk;
   }
+
+  return 0;
 }
 
 /** @} */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h
index a105278..10769f0 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h
@@ -43,6 +43,9 @@ HWLOC_DECLSPEC int hwloc_linux_parse_cpumap_file(FILE *file, hwloc_cpuset_t set)
  *
  * The behavior is exactly the same as the Linux sched_setaffinity system call,
  * but uses a hwloc cpuset.
+ *
+ * \note This is equivalent to calling hwloc_set_proc_cpubind() with
+ * HWLOC_CPUBIND_THREAD as flags.
  */
 HWLOC_DECLSPEC int hwloc_linux_set_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_const_cpuset_t set);
 
@@ -50,9 +53,19 @@ HWLOC_DECLSPEC int hwloc_linux_set_tid_cpubind(hwloc_topology_t topology, pid_t
  *
  * The behavior is exactly the same as the Linux sched_getaffinity system call,
  * but uses a hwloc cpuset.
+ *
+ * \note This is equivalent to calling hwloc_get_proc_cpubind() with
+ * HWLOC_CPUBIND_THREAD as flags.
  */
 HWLOC_DECLSPEC int hwloc_linux_get_tid_cpubind(hwloc_topology_t topology, pid_t tid, hwloc_cpuset_t set);
 
+/** \brief Get the last physical CPU where thread \p tid ran.
+ *
+ * \note This is equivalent to calling hwloc_get_proc_last_cpu_location() with
+ * HWLOC_CPUBIND_THREAD as flags.
+ */
+HWLOC_DECLSPEC int hwloc_linux_get_tid_last_cpu_location(hwloc_topology_t topology, pid_t tid, hwloc_bitmap_t set);
+
 /** @} */
 
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/plugins.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/plugins.h
index aa5d993..8efd219 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/plugins.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/plugins.h
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2013 Inria.  All rights reserved.
+ * Copyright © 2013-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -305,35 +305,6 @@ hwloc_alloc_setup_object(hwloc_obj_type_t type, signed os_index)
  */
 HWLOC_DECLSPEC int hwloc_fill_object_sets(hwloc_obj_t obj);
 
-/** \brief Insert a list of PCI devices and bridges in the backend topology.
- *
- * Insert a list of objects (either PCI device or bridges) starting at first_obj
- * (linked by next_sibling in the topology, and ending with NULL).
- * Objects are placed under the right bridges, and the remaining upstream bridges
- * are then inserted in the topology by calling the get_obj_cpuset() callback to
- * find their locality.
- */
-HWLOC_DECLSPEC int hwloc_insert_pci_device_list(struct hwloc_backend *backend, struct hwloc_obj *first_obj);
-
-/** \brief Return the offset of the given capability in the PCI config space buffer
- *
- * This function requires a 256-bytes config space. Unknown/unavailable bytes should be set to 0xff.
- */
-HWLOC_DECLSPEC unsigned hwloc_pci_find_cap(const unsigned char *config, unsigned cap);
-
-/** \brief Fill linkspeed by reading the PCI config space where PCI_CAP_ID_EXP is at position offset.
- *
- * Needs 20 bytes of EXP capability block starting at offset in the config space
- * for registers up to link status.
- */
-HWLOC_DECLSPEC int hwloc_pci_find_linkspeed(const unsigned char *config, unsigned offset, float *linkspeed);
-
-/** \brief Modify the PCI device object into a bridge and fill its attribute if a bridge is found in the PCI config space.
- *
- * This function requires 64 bytes of common configuration header at the beginning of config.
- */
-HWLOC_DECLSPEC int hwloc_pci_prepare_bridge(hwloc_obj_t obj, const unsigned char *config);
-
 /** \brief Make sure that plugins can lookup core symbols.
  *
  * This is a sanity check to avoid lazy-lookup failures when libhwloc
@@ -382,4 +353,42 @@ hwloc_plugin_check_namespace(const char *pluginname __hwloc_attribute_unused, co
 
 
 
+/** \defgroup hwlocality_components_pci_funcs Components and Plugins: PCI functions to be used by components
+ * @{
+ */
+
+/** \brief Insert a list of PCI devices and bridges in the backend topology.
+ *
+ * Insert a list of objects (either PCI device or bridges) starting at first_obj
+ * (linked by next_sibling in the topology, and ending with NULL).
+ * Objects are placed under the right bridges, and the remaining upstream bridges
+ * are then inserted in the topology by calling the get_obj_cpuset() callback to
+ * find their locality.
+ */
+HWLOC_DECLSPEC int hwloc_insert_pci_device_list(struct hwloc_backend *backend, struct hwloc_obj *first_obj);
+
+/** \brief Return the offset of the given capability in the PCI config space buffer
+ *
+ * This function requires a 256-bytes config space. Unknown/unavailable bytes should be set to 0xff.
+ */
+HWLOC_DECLSPEC unsigned hwloc_pci_find_cap(const unsigned char *config, unsigned cap);
+
+/** \brief Fill linkspeed by reading the PCI config space where PCI_CAP_ID_EXP is at position offset.
+ *
+ * Needs 20 bytes of EXP capability block starting at offset in the config space
+ * for registers up to link status.
+ */
+HWLOC_DECLSPEC int hwloc_pci_find_linkspeed(const unsigned char *config, unsigned offset, float *linkspeed);
+
+/** \brief Modify the PCI device object into a bridge and fill its attribute if a bridge is found in the PCI config space.
+ *
+ * This function requires 64 bytes of common configuration header at the beginning of config.
+ */
+HWLOC_DECLSPEC int hwloc_pci_prepare_bridge(hwloc_obj_t obj, const unsigned char *config);
+
+/** @} */
+
+
+
+
 #endif /* HWLOC_PLUGINS_H */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
index 382cee9..56d4aa5 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
- * Copyright © 2010-2013 Inria.  All rights reserved.
+ * Copyright © 2010-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -176,7 +176,7 @@ extern "C" {
 #define hwloc_get_obj_by_type HWLOC_NAME(get_obj_by_type )
 
 #define hwloc_obj_type_string HWLOC_NAME(obj_type_string )
-#define hwloc_obj_type_of_string HWLOC_NAME(obj_type_of_string )
+#define hwloc_obj_type_sscanf HWLOC_NAME(obj_type_sscanf)
 #define hwloc_obj_type_snprintf HWLOC_NAME(obj_type_snprintf )
 #define hwloc_obj_attr_snprintf HWLOC_NAME(obj_attr_snprintf )
 #define hwloc_obj_cpuset_snprintf HWLOC_NAME(obj_cpuset_snprintf)
@@ -329,8 +329,9 @@ extern "C" {
 #define hwloc_get_closest_objs HWLOC_NAME(get_closest_objs)
 #define hwloc_get_obj_below_by_type HWLOC_NAME(get_obj_below_by_type)
 #define hwloc_get_obj_below_array_by_type HWLOC_NAME(get_obj_below_array_by_type)
-#define hwloc_distributev HWLOC_NAME(distributev)
-#define hwloc_distribute HWLOC_NAME(distribute)
+#define hwloc_distrib_flags_e HWLOC_NAME(distrib_flags_e)
+#define HWLOC_DISTRIB_FLAG_REVERSE HWLOC_NAME_CAPS(DISTRIB_FLAG_REVERSE)
+#define hwloc_distrib HWLOC_NAME(distrib)
 #define hwloc_alloc_membind_policy HWLOC_NAME(alloc_membind_policy)
 #define hwloc_alloc_membind_policy_nodeset HWLOC_NAME(alloc_membind_policy_nodeset)
 #define hwloc_topology_get_complete_cpuset HWLOC_NAME(topology_get_complete_cpuset)
@@ -353,17 +354,17 @@ extern "C" {
 
 #define hwloc_topology_diff_obj_attr_type_e HWLOC_NAME(topology_diff_obj_attr_type_e)
 #define hwloc_topology_diff_obj_attr_type_t HWLOC_NAME(topology_diff_obj_attr_type_t)
-#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE HWLOC_NAME_CAPS(HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE)
-#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME HWLOC_NAME_CAPS(HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME)
-#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO HWLOC_NAME_CAPS(HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO)
+#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_SIZE HWLOC_NAME_CAPS(TOPOLOGY_DIFF_OBJ_ATTR_SIZE)
+#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_NAME HWLOC_NAME_CAPS(TOPOLOGY_DIFF_OBJ_ATTR_NAME)
+#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR_INFO HWLOC_NAME_CAPS(TOPOLOGY_DIFF_OBJ_ATTR_INFO)
 #define hwloc_topology_diff_obj_attr_u HWLOC_NAME(topology_diff_obj_attr_u)
 #define hwloc_topology_diff_obj_attr_generic_s HWLOC_NAME(topology_diff_obj_attr_generic_s)
 #define hwloc_topology_diff_obj_attr_uint64_s HWLOC_NAME(topology_diff_obj_attr_uint64_s)
 #define hwloc_topology_diff_obj_attr_string_s HWLOC_NAME(topology_diff_obj_attr_string_s)
 #define hwloc_topology_diff_type_e HWLOC_NAME(topology_diff_type_e)
 #define hwloc_topology_diff_type_t HWLOC_NAME(topology_diff_type_t)
-#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR HWLOC_NAME_CAPS(HWLOC_TOPOLOGY_DIFF_OBJ_ATTR)
-#define HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX HWLOC_NAME_CAPS(HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX)
+#define HWLOC_TOPOLOGY_DIFF_OBJ_ATTR HWLOC_NAME_CAPS(TOPOLOGY_DIFF_OBJ_ATTR)
+#define HWLOC_TOPOLOGY_DIFF_TOO_COMPLEX HWLOC_NAME_CAPS(TOPOLOGY_DIFF_TOO_COMPLEX)
 #define hwloc_topology_diff_u HWLOC_NAME(topology_diff_u)
 #define hwloc_topology_diff_t HWLOC_NAME(topology_diff_t)
 #define hwloc_topology_diff_generic_s HWLOC_NAME(topology_diff_generic_s)
@@ -371,7 +372,7 @@ extern "C" {
 #define hwloc_topology_diff_too_complex_s HWLOC_NAME(topology_diff_too_complex_s)
 #define hwloc_topology_diff_build HWLOC_NAME(topology_diff_build)
 #define hwloc_topology_diff_apply_flags_e HWLOC_NAME(topology_diff_apply_flags_e)
-#define HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE HWLOC_NAME_CAPS(HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE)
+#define HWLOC_TOPOLOGY_DIFF_APPLY_REVERSE HWLOC_NAME_CAPS(TOPOLOGY_DIFF_APPLY_REVERSE)
 #define hwloc_topology_diff_apply HWLOC_NAME(topology_diff_apply)
 #define hwloc_topology_diff_destroy HWLOC_NAME(topology_diff_destroy)
 #define hwloc_topology_diff_load_xml HWLOC_NAME(topology_diff_load_xml)
@@ -400,6 +401,7 @@ extern "C" {
 #define hwloc_linux_parse_cpumap_file HWLOC_NAME(linux_parse_cpumap_file)
 #define hwloc_linux_set_tid_cpubind HWLOC_NAME(linux_set_tid_cpubind)
 #define hwloc_linux_get_tid_cpubind HWLOC_NAME(linux_get_tid_cpubind)
+#define hwloc_linux_get_tid_last_cpu_location HWLOC_NAME(linux_get_tid_last_cpu_location)
 
 /* openfabrics-verbs.h */
 
@@ -492,7 +494,10 @@ extern "C" {
 
 /* hwloc/deprecated.h */
 
+#define hwloc_obj_type_of_string HWLOC_NAME(obj_type_of_string )
 #define hwloc_obj_snprintf HWLOC_NAME(obj_snprintf)
+#define hwloc_distributev HWLOC_NAME(distributev)
+#define hwloc_distribute HWLOC_NAME(distribute)
 
 /* private/debug.h */
 
@@ -510,10 +515,10 @@ extern "C" {
 #define hwloc_flsl_from_fls32 HWLOC_NAME(flsl_from_fls32)
 #define hwloc_weight_long HWLOC_NAME(weight_long)
 
-/* private/cpuid.h */
+/* private/cpuid-x86.h */
 
-#define hwloc_have_cpuid HWLOC_NAME(have_cpuid)
-#define hwloc_cpuid HWLOC_NAME(cpuid)
+#define hwloc_have_x86_cpuid HWLOC_NAME(have_x86_cpuid)
+#define hwloc_x86_cpuid HWLOC_NAME(x86_cpuid)
 
 /* private/xml.h */
 
@@ -567,6 +572,11 @@ extern "C" {
 #define hwloc_topology_setup_defaults HWLOC_NAME(topology_setup_defaults)
 #define hwloc_topology_clear HWLOC_NAME(topology_clear)
 
+#define hwloc__add_info HWLOC_NAME(_add_info)
+#define hwloc__find_info_slot HWLOC_NAME(_find_info_slot)
+#define hwloc__move_infos HWLOC_NAME(_move_infos)
+#define hwloc__free_infos HWLOC_NAME(_free_infos)
+
 #define hwloc_binding_hooks HWLOC_NAME(binding_hooks)
 #define hwloc_set_native_binding_hooks HWLOC_NAME(set_native_binding_hooks)
 #define hwloc_set_binding_hooks HWLOC_NAME(set_binding_hooks)
@@ -607,6 +617,8 @@ extern "C" {
 #define hwloc_encode_to_base64 HWLOC_NAME(encode_to_base64)
 #define hwloc_decode_from_base64 HWLOC_NAME(decode_from_base64)
 
+#define hwloc_obj_add_info_nodup HWLOC_NAME(obj_add_info_nodup)
+
 /* private/solaris-chiptype.h */
 
 #define hwloc_solaris_get_chip_type HWLOC_NAME(solaris_get_chip_type)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/autogen/README.txt b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/autogen/README.txt
index f4e9bbb..17f7f60 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/autogen/README.txt
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/autogen/README.txt
@@ -1,4 +1,3 @@
 This directory needs to exist in the repo so that the Autotools can
 generate a file here.  We have a put a token file in this directory so
-that tools like hg/git don't ignore the empty directory in the
-repository.
+that git doesn't ignore the empty directory in the repository.
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid-x86.h
similarity index 69%
rename from src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h
rename to src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid-x86.h
index 9234848..f00a97f 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid-x86.h
@@ -1,17 +1,18 @@
 /*
  * Copyright © 2010-2012 Université Bordeaux 1
  * Copyright © 2010 Cisco Systems, Inc.  All rights reserved.
+ * Copyright © 2014 Inria.  All rights reserved.
  *
  * See COPYING in top-level directory.
  */
 
 /* Internals for x86's cpuid.  */
 
-#ifndef HWLOC_PRIVATE_CPUID_H
-#define HWLOC_PRIVATE_CPUID_H
+#ifndef HWLOC_PRIVATE_CPUID_X86_H
+#define HWLOC_PRIVATE_CPUID_X86_H
 
-#ifdef HWLOC_X86_32_ARCH
-static __hwloc_inline int hwloc_have_cpuid(void)
+#if (defined HWLOC_X86_32_ARCH) && (!defined HWLOC_HAVE_MSVC_CPUIDEX)
+static __hwloc_inline int hwloc_have_x86_cpuid(void)
 {
   int ret;
   unsigned tmp, tmp2;
@@ -44,17 +45,25 @@ static __hwloc_inline int hwloc_have_cpuid(void)
       : "=r" (ret), "=&r" (tmp), "=&r" (tmp2));
   return ret;
 }
-#endif /* HWLOC_X86_32_ARCH */
-#ifdef HWLOC_X86_64_ARCH
-static __hwloc_inline int hwloc_have_cpuid(void) { return 1; }
+#endif /* !defined HWLOC_X86_32_ARCH && !defined HWLOC_HAVE_MSVC_CPUIDEX*/
+#if (defined HWLOC_X86_64_ARCH) || (defined HWLOC_HAVE_MSVC_CPUIDEX)
+static __hwloc_inline int hwloc_have_x86_cpuid(void) { return 1; }
 #endif /* HWLOC_X86_64_ARCH */
 
-static __hwloc_inline void hwloc_cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
+static __hwloc_inline void hwloc_x86_cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
 {
+#ifdef HWLOC_HAVE_MSVC_CPUIDEX
+  int regs[4];
+  __cpuidex(regs, *eax, *ecx);
+  *eax = regs[0];
+  *ebx = regs[1];
+  *ecx = regs[2];
+  *edx = regs[3];
+#else /* HWLOC_HAVE_MSVC_CPUIDEX */
   /* Note: gcc might want to use bx or the stack for %1 addressing, so we can't
    * use them :/ */
 #ifdef HWLOC_X86_64_ARCH
-  unsigned long sav_rbx;
+  hwloc_uint64_t sav_rbx;
   asm(
   "mov %%rbx,%2\n\t"
   "cpuid\n\t"
@@ -74,6 +83,7 @@ static __hwloc_inline void hwloc_cpuid(unsigned *eax, unsigned *ebx, unsigned *e
 #else
 #error unknown architecture
 #endif
+#endif /* HWLOC_HAVE_MSVC_CPUIDEX */
 }
 
-#endif /* HWLOC_PRIVATE_CPUID_H */
+#endif /* HWLOC_PRIVATE_X86_CPUID_H */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h
index a9009de..8d8e6f5 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009      CNRS
- * Copyright © 2009-2012 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  *
@@ -139,6 +139,11 @@ extern int hwloc_connect_levels(hwloc_topology_t topology);
 extern void hwloc_topology_setup_defaults(struct hwloc_topology *topology);
 extern void hwloc_topology_clear(struct hwloc_topology *topology);
 
+extern void hwloc__add_info(struct hwloc_obj_info_s **infosp, unsigned *countp, const char *name, const char *value);
+extern char ** hwloc__find_info_slot(struct hwloc_obj_info_s **infosp, unsigned *countp, const char *name);
+extern void hwloc__move_infos(struct hwloc_obj_info_s **dst_infosp, unsigned *dst_countp, struct hwloc_obj_info_s **src_infosp, unsigned *src_countp);
+extern void hwloc__free_infos(struct hwloc_obj_info_s *infos, unsigned count);
+
 /* set native OS binding hooks */
 extern void hwloc_set_native_binding_hooks(struct hwloc_binding_hooks *hooks, struct hwloc_topology_support *support);
 /* set either native OS binding hooks (if thissystem), or dummy ones */
@@ -184,8 +189,11 @@ extern void hwloc_set_netbsd_hooks(struct hwloc_binding_hooks *binding_hooks, st
 extern void hwloc_set_hpux_hooks(struct hwloc_binding_hooks *binding_hooks, struct hwloc_topology_support *support);
 #endif /* HWLOC_HPUX_SYS */
 
-/* Insert uname-specific names/values in the object infos array */
-extern void hwloc_add_uname_info(struct hwloc_topology *topology);
+/* Insert uname-specific names/values in the object infos array.
+ * If cached_uname isn't NULL, it is used as a struct utsname instead of recalling uname.
+ * Any field that starts with \0 is ignored.
+ */
+extern void hwloc_add_uname_info(struct hwloc_topology *topology, void *cached_uname);
 
 /* Free obj and its attributes assuming it doesn't have any children/parent anymore */
 extern void hwloc_free_unlinked_object(hwloc_obj_t obj);
@@ -295,4 +303,6 @@ extern int hwloc_namecoloncmp(const char *haystack, const char *needle, size_t n
  * required size.  hwloc_snprintf always report the actually required size. */
 extern int hwloc_snprintf(char *str, size_t size, const char *format, ...) __hwloc_attribute_format(printf, 3, 4);
 
+extern void hwloc_obj_add_info_nodup(hwloc_obj_t obj, const char *name, const char *value, int nodup);
+
 #endif /* HWLOC_PRIVATE_H */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
index 263895f..b4d2f6c 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright © 2009-2013 Inria.  All rights reserved.
+# Copyright © 2009-2014 Inria.  All rights reserved.
 # Copyright © 2009-2012 Université Bordeaux 1
 # Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 # Copyright © 2011-2012 Oracle and/or its affiliates.  All rights reserved.
@@ -157,9 +157,9 @@ sources += topology-netbsd.c
 ldflags += -lpthread
 endif HWLOC_HAVE_NETBSD
 
-if HWLOC_HAVE_CPUID
+if HWLOC_HAVE_X86_CPUID
 sources += topology-x86.c
-endif HWLOC_HAVE_CPUID
+endif HWLOC_HAVE_X86_CPUID
 
 if HWLOC_HAVE_GCC
 ldflags += -no-undefined
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c
index 046b7cf..37921bc 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c
@@ -13,8 +13,9 @@
 #ifdef HAVE_SYS_MMAN_H
 #  include <sys/mman.h>
 #endif
-#ifdef HAVE_MALLOC_H
-#  include <malloc.h>
+/* <malloc.h> is only needed if we don't have posix_memalign() */
+#if defined(hwloc_getpagesize) && !defined(HAVE_POSIX_MEMALIGN) && defined(HAVE_MEMALIGN) && defined(HAVE_MALLOC_H)
+#include <malloc.h>
 #endif
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/components.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/components.c
index 5309b56..6384dad 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/components.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/components.c
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2012 Université Bordeau 1
  * See COPYING in top-level directory.
  */
@@ -90,7 +90,7 @@ hwloc__dlforeach_cb(const char *filename, void *_data __hwloc_attribute_unused)
       fprintf(stderr, "Failed to load plugin: %s\n", lt_dlerror());
     goto out;
   }
-  componentsymbolname = malloc(6+strlen(basename)+10+1);
+  componentsymbolname = malloc(strlen(basename)+10+1);
   sprintf(componentsymbolname, "%s_component", basename);
   component = lt_dlsym(handle, componentsymbolname);
   if (!component) {
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c
index da14998..40cda64 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c
@@ -76,14 +76,15 @@ static int hwloc_append_diff_obj_attr_string(hwloc_obj_t obj,
 					     hwloc_topology_diff_t *lastdiffp)
 {
 	hwloc_topology_diff_t newdiff;
-	newdiff = malloc(sizeof(*newdiff));
-	if (!newdiff)
-		return -1;
 
 	if (obj->type == HWLOC_OBJ_MISC)
 		/* TODO: add a custom level/depth for Misc */
 		return hwloc_append_diff_too_complex(obj, firstdiffp, lastdiffp);
 
+	newdiff = malloc(sizeof(*newdiff));
+	if (!newdiff)
+		return -1;
+
 	newdiff->obj_attr.type = HWLOC_TOPOLOGY_DIFF_OBJ_ATTR;
 	newdiff->obj_attr.obj_depth = obj->depth;
 	newdiff->obj_attr.obj_index = obj->logical_index;
@@ -97,26 +98,27 @@ static int hwloc_append_diff_obj_attr_string(hwloc_obj_t obj,
 
 static int hwloc_append_diff_obj_attr_uint64(hwloc_obj_t obj,
 					     hwloc_topology_diff_obj_attr_type_t type,
-					     hwloc_uint64_t idx,
+					     hwloc_uint64_t index,
 					     hwloc_uint64_t oldvalue,
 					     hwloc_uint64_t newvalue,
 					     hwloc_topology_diff_t *firstdiffp,
 					     hwloc_topology_diff_t *lastdiffp)
 {
 	hwloc_topology_diff_t newdiff;
-	newdiff = malloc(sizeof(*newdiff));
-	if (!newdiff)
-		return -1;
 
 	if (obj->type == HWLOC_OBJ_MISC)
 		/* TODO: add a custom level/depth for Misc */
 		return hwloc_append_diff_too_complex(obj, firstdiffp, lastdiffp);
 
+	newdiff = malloc(sizeof(*newdiff));
+	if (!newdiff)
+		return -1;
+
 	newdiff->obj_attr.type = HWLOC_TOPOLOGY_DIFF_OBJ_ATTR;
 	newdiff->obj_attr.obj_depth = obj->depth;
 	newdiff->obj_attr.obj_index = obj->logical_index;
 	newdiff->obj_attr.diff.uint64.type = type;
-	newdiff->obj_attr.diff.uint64.index = idx;
+	newdiff->obj_attr.diff.uint64.index = index;
 	newdiff->obj_attr.diff.uint64.oldvalue = oldvalue;
 	newdiff->obj_attr.diff.uint64.newvalue = newvalue;
 	hwloc_append_diff(newdiff, firstdiffp, lastdiffp);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
index ca3f7ea..00d589a 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2010-2013 Inria.  All rights reserved.
+ * Copyright © 2010-2014 Inria.  All rights reserved.
  * Copyright © 2011-2012 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -515,7 +515,7 @@ hwloc_distances__finalize_logical(struct hwloc_topology *topology,
       fprintf(stderr, "*\n");
       fprintf(stderr, "* Please report this error message to the hwloc user's mailing list,\n");
 #ifdef HWLOC_LINUX_SYS
-      fprintf(stderr, "* along with the output from the hwloc-gather-topology.sh script.\n");
+      fprintf(stderr, "* along with the output from the hwloc-gather-topology script.\n");
 #else
       fprintf(stderr, "* along with any relevant topology information from your platform.\n");
 #endif
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c
index 9ef3be3..0cc7349 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2012 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -85,22 +85,33 @@ int hwloc_namecoloncmp(const char *haystack, const char *needle, size_t n)
   return i < n;
 }
 
-void hwloc_add_uname_info(struct hwloc_topology *topology __hwloc_attribute_unused)
+void hwloc_add_uname_info(struct hwloc_topology *topology __hwloc_attribute_unused,
+			  void *cached_uname __hwloc_attribute_unused)
 {
 #ifdef HAVE_UNAME
-  struct utsname utsname;
-
-  if (uname(&utsname) < 0)
-    return;
+  struct utsname _utsname, *utsname;
 
   if (hwloc_obj_get_info_by_name(topology->levels[0][0], "OSName"))
     /* don't annotate twice */
     return;
 
-  hwloc_obj_add_info(topology->levels[0][0], "OSName", utsname.sysname);
-  hwloc_obj_add_info(topology->levels[0][0], "OSRelease", utsname.release);
-  hwloc_obj_add_info(topology->levels[0][0], "OSVersion", utsname.version);
-  hwloc_obj_add_info(topology->levels[0][0], "HostName", utsname.nodename);
-  hwloc_obj_add_info(topology->levels[0][0], "Architecture", utsname.machine);
+  if (cached_uname)
+    utsname = (struct utsname *) cached_uname;
+  else {
+    utsname = &_utsname;
+    if (uname(utsname) < 0)
+      return;
+  }
+
+  if (*utsname->sysname)
+    hwloc_obj_add_info(topology->levels[0][0], "OSName", utsname->sysname);
+  if (*utsname->release)
+    hwloc_obj_add_info(topology->levels[0][0], "OSRelease", utsname->release);
+  if (*utsname->version)
+    hwloc_obj_add_info(topology->levels[0][0], "OSVersion", utsname->version);
+  if (*utsname->nodename)
+    hwloc_obj_add_info(topology->levels[0][0], "HostName", utsname->nodename);
+  if (*utsname->machine)
+    hwloc_obj_add_info(topology->levels[0][0], "Architecture", utsname->machine);
 #endif /* HAVE_UNAME */
 }
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c
index e19faeb..e2d34eb 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c
@@ -773,7 +773,7 @@ hwloc_look_aix(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "AIX");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-bgq.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-bgq.c
index 5a2e611..7b4dfec 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-bgq.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-bgq.c
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2013 Inria.  All rights reserved.
+ * Copyright © 2013-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -104,7 +104,7 @@ hwloc_look_bgq(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "BGQ");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
@@ -209,8 +209,9 @@ hwloc_bgq_component_instantiate(struct hwloc_disc_component *component,
   if (!env || !atoi(env)) {
     err = uname(&utsname);
     if (err || strcmp(utsname.sysname, "CNK") || strcmp(utsname.machine, "BGQ")) {
-      fprintf(stderr, "*** Found unexpected uname sysname `%s' machine `%s', disabling BGQ backend.\n", utsname.sysname, utsname.machine);
-      fprintf(stderr, "*** Set HWLOC_FORCE_BGQ=1 in the environment to enforce the BGQ backend.\n");
+      fprintf(stderr, "*** Found unexpected uname sysname `%s' machine `%s'\n", utsname.sysname, utsname.machine);
+      fprintf(stderr, "*** The BGQ backend is only enabled on compute nodes by default (sysname=CNK machine=BGQ)\n");
+      fprintf(stderr, "*** Set HWLOC_FORCE_BGQ=1 in the environment to enforce the BGQ backend anyway.\n");
       return NULL;
     }
   }
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-cuda.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-cuda.c
index e6f8ce6..9faf29a 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-cuda.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-cuda.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2011 Université Bordeaux 1
- * Copyright © 2012 Inria.  All rights reserved.
+ * Copyright © 2012-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -64,6 +64,31 @@ hwloc_cuda_query_devices(struct hwloc_cuda_backend_data_s *data)
   return;
 }
 
+static unsigned hwloc_cuda_cores_per_MP(int major, int minor)
+{
+  /* based on CUDA C Programming Guide, Annex G */
+  switch (major) {
+    case 1:
+      switch (minor) {
+        case 0:
+        case 1:
+        case 2:
+        case 3: return 8;
+      }
+      break;
+    case 2:
+      switch (minor) {
+        case 0: return 32;
+        case 1: return 48;
+      }
+      break;
+    case 3:
+      return 192;
+  }
+  hwloc_debug("unknown compute capability %u.%u, disabling core display.\n", major, minor);
+  return 0;
+}
+
 static int
 hwloc_cuda_backend_notify_new_object(struct hwloc_backend *backend, struct hwloc_backend *caller __hwloc_attribute_unused,
 				     struct hwloc_obj *pcidev)
@@ -96,9 +121,11 @@ hwloc_cuda_backend_notify_new_object(struct hwloc_backend *backend, struct hwloc
   for(i=0; i<data->nr_devices; i++) {
     struct hwloc_cuda_device_info_s *info = &data->devices[i];
     char cuda_name[32];
+    char number[32];
     struct cudaDeviceProp prop;
     hwloc_obj_t cuda_device;
     cudaError_t cures;
+    unsigned cores;
 
     if (info->pcidomain != pcidev->attr->pcidev.domain)
       continue;
@@ -123,6 +150,24 @@ hwloc_cuda_backend_notify_new_object(struct hwloc_backend *backend, struct hwloc
     if (!cures)
       hwloc_obj_add_info(cuda_device, "GPUModel", prop.name);
 
+    snprintf(number, sizeof(number), "%llu", ((unsigned long long) prop.totalGlobalMem) >> 10);
+    hwloc_obj_add_info(cuda_device, "CUDAGlobalMemorySize", number);
+
+    snprintf(number, sizeof(number), "%llu", ((unsigned long long) prop.l2CacheSize) >> 10);
+    hwloc_obj_add_info(cuda_device, "CUDAL2CacheSize", number);
+
+    snprintf(number, sizeof(number), "%d", prop.multiProcessorCount);
+    hwloc_obj_add_info(cuda_device, "CUDAMultiProcessors", number);
+
+    cores = hwloc_cuda_cores_per_MP(prop.major, prop.minor);
+    if (cores) {
+      snprintf(number, sizeof(number), "%u", cores);
+      hwloc_obj_add_info(cuda_device, "CUDACoresPerMP", number);
+    }
+
+    snprintf(number, sizeof(number), "%llu", ((unsigned long long) prop.sharedMemPerBlock) >> 10);
+    hwloc_obj_add_info(cuda_device, "CUDASharedMemorySizePerMP", number);
+
     hwloc_insert_object_by_parent(topology, pcidev, cuda_device);
     return 1;
   }
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c
index 39e13a3..7934c39 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c
@@ -265,7 +265,7 @@ hwloc_look_darwin(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "Darwin");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
index 7e13ca1..eecedb5 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
@@ -192,7 +192,7 @@ hwloc_look_freebsd(struct hwloc_backend *backend)
 #endif
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "FreeBSD");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c
index bd84379..02c3940 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c
@@ -247,7 +247,7 @@ hwloc_look_hpux(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "HP-UX");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
index 5e09731..a42b4f3 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2013 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * Copyright © 2010 IBM
@@ -40,6 +40,9 @@
 struct hwloc_linux_backend_data_s {
   int root_fd; /* The file descriptor for the file system root, used when browsing, e.g., Linux' sysfs and procfs. */
   int is_real_fsroot; /* Boolean saying whether root_fd points to the real filesystem root of the system */
+
+  struct utsname utsname; /* fields contain \0 when unknown */
+
   int deprecated_classlinks_model; /* -2 if never tried, -1 if unknown, 0 if new (device contains class/name), 1 if old (device contains class:name) */
   int mic_need_directlookup; /* if not tried yet, 0 if not needed, 1 if needed */
   unsigned mic_directlookup_id_max; /* -1 if not tried yet, 0 if none to lookup, maxid+1 otherwise */
@@ -974,7 +977,7 @@ hwloc_linux_get_thread_cpubind(hwloc_topology_t topology, pthread_t tid, hwloc_b
 }
 #endif /* HAVE_DECL_PTHREAD_GETAFFINITY_NP */
 
-static int
+int
 hwloc_linux_get_tid_last_cpu_location(hwloc_topology_t topology __hwloc_attribute_unused, pid_t tid, hwloc_bitmap_t set)
 {
   /* read /proc/pid/stat.
@@ -1539,8 +1542,10 @@ struct hwloc_linux_cpuinfo_proc {
   long Pcore, Psock;
   /* set later, or -1 if unknown */
   long Lcore, Lsock;
-  /* set during hwloc_linux_parse_cpuinfo or NULL if unknown */
-  char *cpumodel;
+
+  /* custom info, set during hwloc_linux_parse_cpuinfo */
+  struct hwloc_obj_info_s *infos;
+  unsigned infos_count;
 };
 
 static int
@@ -2685,20 +2690,23 @@ look_sysfsnode(struct hwloc_topology *topology,
 
   {
       hwloc_obj_t * nodes = calloc(nbnodes, sizeof(hwloc_obj_t));
-      float * distances = calloc(nbnodes*nbnodes, sizeof(float));
       unsigned *indexes = calloc(nbnodes, sizeof(unsigned));
+      float * distances;
+      int failednodes = 0;
       unsigned index_;
 
-      if (NULL == indexes || NULL == distances || NULL == nodes) {
+      if (NULL == nodes || NULL == indexes) {
           free(nodes);
           free(indexes);
-          free(distances);
           hwloc_bitmap_free(nodeset);
+          nbnodes = 0;
           goto out;
       }
 
-      /* Get node indexes now. We need them in order since Linux groups
-       * sparse distances but keep them in order in the sysfs distance files.
+      /* Unsparsify node indexes.
+       * We'll need them later because Linux groups sparse distances
+       * and keeps them in order in the sysfs distance files.
+       * It'll simplify things in the meantime.
        */
       index_ = 0;
       hwloc_bitmap_foreach_begin (osnode, nodeset) {
@@ -2708,25 +2716,28 @@ look_sysfsnode(struct hwloc_topology *topology,
       hwloc_bitmap_free(nodeset);
 
 #ifdef HWLOC_DEBUG
-      hwloc_debug("%s", "numa distance indexes: ");
+      hwloc_debug("%s", "NUMA indexes: ");
       for (index_ = 0; index_ < nbnodes; index_++) {
 	hwloc_debug(" %u", indexes[index_]);
       }
       hwloc_debug("%s", "\n");
 #endif
 
-      /* Get actual distances now */
+      /* Create NUMA objects */
       for (index_ = 0; index_ < nbnodes; index_++) {
           char nodepath[SYSFS_NUMA_NODE_PATH_LEN];
           hwloc_bitmap_t cpuset;
-          hwloc_obj_t node, res_obj __hwloc_attribute_unused;
+          hwloc_obj_t node, res_obj;
 
 	  osnode = indexes[index_];
 
           sprintf(nodepath, "%s/node%u/cpumap", path, osnode);
           cpuset = hwloc_parse_cpumap(nodepath, data->root_fd);
-          if (!cpuset)
-              continue;
+          if (!cpuset) {
+	    /* This NUMA object won't be inserted, we'll ignore distances */
+	    failednodes++;
+	    continue;
+	  }
 
           node = hwloc_alloc_setup_object(HWLOC_OBJ_NODE, osnode);
           node->cpuset = cpuset;
@@ -2738,9 +2749,36 @@ look_sysfsnode(struct hwloc_topology *topology,
           hwloc_debug_1arg_bitmap("os node %u has cpuset %s\n",
                                   osnode, node->cpuset);
           res_obj = hwloc_insert_object_by_cpuset(topology, node);
-          assert(node == res_obj); /* if we got merged, somebody else added NODEs earlier, things went wrong?! */
+	  if (node == res_obj) {
+	    nodes[index_] = node;
+	  } else {
+	    /* We got merged somehow, could be a buggy BIOS reporting wrong NUMA node cpuset.
+	     * This object disappeared, we'll ignore distances */
+	    failednodes++;
+	  }
+      }
 
-          nodes[index_] = node;
+      if (failednodes) {
+	/* failed to read/create some nodes, don't bother reading/fixing
+	 * a distance matrix that would likely be wrong anyway.
+	 */
+	nbnodes -= failednodes;
+	distances = NULL;
+      } else {
+	distances = calloc(nbnodes*nbnodes, sizeof(float));
+      }
+
+      if (NULL == distances) {
+          free(nodes);
+          free(indexes);
+          goto out;
+      }
+
+      /* Get actual distances now */
+      for (index_ = 0; index_ < nbnodes; index_++) {
+          char nodepath[SYSFS_NUMA_NODE_PATH_LEN];
+
+	  osnode = indexes[index_];
 
 	  /* Linux nodeX/distance file contains distance from X to other localities (from ACPI SLIT table or so),
 	   * store them in slots X*N...X*N+N-1 */
@@ -2847,10 +2885,9 @@ look_sysfscpu(struct hwloc_topology *topology,
 	/* add cpuinfo */
 	if (cpuinfo_Lprocs) {
 	  for(j=0; j<(int) cpuinfo_numprocs; j++)
-	    if ((int) cpuinfo_Lprocs[j].Pproc == i
-		&& cpuinfo_Lprocs[j].cpumodel) {
-	      /* FIXME add to name as well? */
-	      hwloc_obj_add_info(sock, "CPUModel", cpuinfo_Lprocs[j].cpumodel);
+	    if ((int) cpuinfo_Lprocs[j].Pproc == i) {
+	      hwloc__move_infos(&sock->infos, &sock->infos_count,
+				&cpuinfo_Lprocs[j].infos, &cpuinfo_Lprocs[j].infos_count);
 	    }
 	}
         hwloc_insert_object_by_cpuset(topology, sock);
@@ -3062,26 +3099,116 @@ look_sysfscpu(struct hwloc_topology *topology,
  ****** cpuinfo Topology Discovery ******
  ****************************************/
 
+static int
+hwloc_linux_parse_cpuinfo_x86(const char *prefix, const char *value,
+			      struct hwloc_obj_info_s **infos, unsigned *infos_count,
+			      int is_global __hwloc_attribute_unused)
+{
+  if (!strcmp("vendor_id", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUVendor", value);
+  } else if (!strcmp("model name", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUModel", value);
+  } else if (!strcmp("model", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUModelNumber", value);
+  } else if (!strcmp("cpu family", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUFamilyNumber", value);
+  }
+  return 0;
+}
+
+static int
+hwloc_linux_parse_cpuinfo_ia64(const char *prefix, const char *value,
+			       struct hwloc_obj_info_s **infos, unsigned *infos_count,
+			       int is_global __hwloc_attribute_unused)
+{
+  if (!strcmp("vendor", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUVendor", value);
+  } else if (!strcmp("model name", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUModel", value);
+  } else if (!strcmp("model", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUModelNumber", value);
+  } else if (!strcmp("family", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUFamilyNumber", value);
+  }
+  return 0;
+}
+
+static int
+hwloc_linux_parse_cpuinfo_arm(const char *prefix, const char *value,
+			      struct hwloc_obj_info_s **infos, unsigned *infos_count,
+			      int is_global __hwloc_attribute_unused)
+{
+  if (!strcmp("Processor", prefix) /* old kernels with one Processor header */
+      || !strcmp("model name", prefix) /* new kernels with one model name per core */) {
+    hwloc__add_info(infos, infos_count, "CPUModel", value);
+  } else if (!strcmp("CPU implementer", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUImplementer", value);
+  } else if (!strcmp("CPU architecture", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUArchitecture", value);
+  } else if (!strcmp("CPU variant", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUVariant", value);
+  } else if (!strcmp("CPU part", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUPart", value);
+  } else if (!strcmp("CPU revision", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPURevision", value);
+  } else if (!strcmp("Hardware", prefix)) {
+    hwloc__add_info(infos, infos_count, "HardwareName", value);
+  } else if (!strcmp("Revision", prefix)) {
+    hwloc__add_info(infos, infos_count, "HardwareRevision", value);
+  } else if (!strcmp("Serial", prefix)) {
+    hwloc__add_info(infos, infos_count, "HardwareSerial", value);
+  }
+  return 0;
+}
+
+static int
+hwloc_linux_parse_cpuinfo_ppc(const char *prefix, const char *value,
+			      struct hwloc_obj_info_s **infos, unsigned *infos_count,
+			      int is_global)
+{
+  /* common fields */
+  if (!strcmp("cpu", prefix)) {
+    hwloc__add_info(infos, infos_count, "CPUModel", value);
+  } else if (!strcmp("platform", prefix)) {
+    hwloc__add_info(infos, infos_count, "PlatformName", value);
+  } else if (!strcmp("model", prefix)) {
+    hwloc__add_info(infos, infos_count, "PlatformModel", value);
+  }
+  /* platform-specific fields */
+  else if (!strcasecmp("vendor", prefix)) {
+    hwloc__add_info(infos, infos_count, "PlatformVendor", value);
+  } else if (!strcmp("Board ID", prefix)) {
+    hwloc__add_info(infos, infos_count, "PlatformBoardID", value);
+  } else if (!strcmp("Board", prefix)
+	     || !strcasecmp("Machine", prefix)) {
+    /* machine and board are similar (and often more precise) than model above */
+    char **valuep = hwloc__find_info_slot(infos, infos_count, "PlatformModel");
+    if (*valuep)
+      free(*valuep);
+    *valuep = strdup(value);
+  } else if (!strcasecmp("Revision", prefix)
+	     || !strcmp("Hardware rev", prefix)) {
+    hwloc__add_info(infos, infos_count, is_global ? "PlatformRevision" : "CPURevision", value);
+  } else if (!strcmp("SVR", prefix)) {
+    hwloc__add_info(infos, infos_count, "SystemVersionRegister", value);
+  } else if (!strcmp("PVR", prefix)) {
+    hwloc__add_info(infos, infos_count, "ProcessorVersionRegister", value);
+  }
+  /* don't match 'board*' because there's also "board l2" on some platforms */
+  return 0;
+}
+
 /*
- * architecture properly detected:
- * arm: "Processor\t:"				=> OK
  * avr32: "chip type\t:"			=> OK
  * blackfin: "model name\t:"			=> OK
  * h8300: "CPU:"				=> OK
- * ia64: "model name :"				=> OK
  * m68k: "CPU:"					=> OK
  * mips: "cpu model\t\t:"			=> OK
  * openrisc: "CPU:"				=> OK
- * ppc: "cpu\t\t:"				=> OK
  * sparc: "cpu\t\t:"				=> OK
  * tile: "model name\t:"			=> OK
  * unicore32: "Processor\t:"			=> OK
- * x86: "model name\t:"				=> OK
- *
- * cannot work:
- * alpha: "cpu\t\t\t:" + "cpu model\t\t:"	=> no processor index lines anyway
- *
- * partially supported:
+ * alpha: "cpu\t\t\t: Alpha" + "cpu model\t\t:"	=> "cpu" overwritten by "cpu model", no processor indexes
  * cris: "cpu\t\t:" + "cpu model\t:"		=> only "cpu"
  * frv: "CPU-Core:" + "CPU:"			=> only "CPU"
  * mn10300: "cpu core   :" + "model name :"	=> only "model name"
@@ -3094,16 +3221,22 @@ look_sysfscpu(struct hwloc_topology *topology,
  * xtensa: "model\t\t:"				=> KO
  */
 static int
-hwloc_linux_parse_cpuinfo_model(const char *prefix, const char *value,
-				char **model)
+hwloc_linux_parse_cpuinfo_generic(const char *prefix, const char *value,
+				  struct hwloc_obj_info_s **infos, unsigned *infos_count,
+				  int is_global __hwloc_attribute_unused)
 {
   if (!strcmp("model name", prefix)
       || !strcmp("Processor", prefix)
       || !strcmp("chip type", prefix)
       || !strcmp("cpu model", prefix)
       || !strcasecmp("cpu", prefix)) {
-    if (!*model)
-	*model = strdup(value);
+    /* keep the last one, assume it's more precise than the first one.
+     * we should have the Architecture keypair for basic information anyway.
+     */
+    char **valuep = hwloc__find_info_slot(infos, infos_count, "CPUModel");
+    if (*valuep)
+      free(*valuep);
+    *valuep = strdup(value);
   }
   return 0;
 }
@@ -3111,7 +3244,8 @@ hwloc_linux_parse_cpuinfo_model(const char *prefix, const char *value,
 static int
 hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
 			  const char *path,
-			  struct hwloc_linux_cpuinfo_proc ** Lprocs_p)
+			  struct hwloc_linux_cpuinfo_proc ** Lprocs_p,
+			  struct hwloc_obj_info_s **global_infos, unsigned *global_infos_count)
 {
   FILE *fd;
   char *str = NULL;
@@ -3120,7 +3254,8 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
   unsigned allocated_Lprocs = 0;
   struct hwloc_linux_cpuinfo_proc * Lprocs = NULL;
   unsigned numprocs = 0;
-  char *global_cpumodel = NULL;
+  int curproc = -1;
+  int (*parse_cpuinfo_func)(const char *, const char *, struct hwloc_obj_info_s **, unsigned *, int) = NULL;
 
   if (!(fd=hwloc_fopen(path,"r", data->root_fd)))
     {
@@ -3145,12 +3280,18 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
       *end = 0;
     else
       noend = 1;
+    /* if empty line, skip and reset curproc */
+    if (!*str) {
+      curproc = -1;
+      continue;
+    }
     /* skip lines with no dot */
     dot = strchr(str, ':');
     if (!dot)
       continue;
     /* skip lines not starting with a letter */
-    if (*str > 'z' || *str < 'a')
+    if ((*str > 'z' || *str < 'a')
+	&& (*str > 'Z' || *str < 'A'))
       continue;
 
     /* mark the end of the prefix */
@@ -3177,7 +3318,7 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
     }
     /* actually parse numbers */
     getprocnb_begin(PROCESSOR, Pproc);
-    numprocs++;
+    curproc = numprocs++;
     if (numprocs > allocated_Lprocs) {
       if (!allocated_Lprocs)
 	allocated_Lprocs = 8;
@@ -3185,24 +3326,49 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
         allocated_Lprocs *= 2;
       Lprocs = realloc(Lprocs, allocated_Lprocs * sizeof(*Lprocs));
     }
-    Lprocs[numprocs-1].Pproc = Pproc;
-    Lprocs[numprocs-1].Pcore = -1;
-    Lprocs[numprocs-1].Psock = -1;
-    Lprocs[numprocs-1].Lcore = -1;
-    Lprocs[numprocs-1].Lsock = -1;
-    Lprocs[numprocs-1].cpumodel = global_cpumodel ? strdup(global_cpumodel) : NULL;
+    Lprocs[curproc].Pproc = Pproc;
+    Lprocs[curproc].Pcore = -1;
+    Lprocs[curproc].Psock = -1;
+    Lprocs[curproc].Lcore = -1;
+    Lprocs[curproc].Lsock = -1;
+    Lprocs[curproc].infos = NULL;
+    Lprocs[curproc].infos_count = 0;
     getprocnb_end() else
     getprocnb_begin(PACKAGEID, Psock);
-    Lprocs[numprocs-1].Psock = Psock;
+    Lprocs[curproc].Psock = Psock;
     getprocnb_end() else
     getprocnb_begin(COREID, Pcore);
-    Lprocs[numprocs-1].Pcore = Pcore;
+    Lprocs[curproc].Pcore = Pcore;
     getprocnb_end() else {
+
+      /* architecture specific or default routine for parsing cpumodel */
+      if (!parse_cpuinfo_func) {
+	parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_generic;
+	if (*data->utsname.machine) {
+	  /* x86_32 x86_64 k1om => x86 */
+	  if (!strcmp(data->utsname.machine, "x86_64")
+	      || (data->utsname.machine[0] == 'i' && !strcmp(data->utsname.machine+2, "86"))
+	      || !strcmp(data->utsname.machine, "k1om"))
+	    parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_x86;
+	  /* ia64 */
+	  else if (!strcmp(data->utsname.machine, "ia64"))
+	    parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ia64;
+	  /* arm */
+	  else if (!strncmp(data->utsname.machine, "arm", 3))
+	    parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_arm;
+	  else if (!strncmp(data->utsname.machine, "ppc", 3)
+		   || !strncmp(data->utsname.machine, "power", 5))
+	    parse_cpuinfo_func = hwloc_linux_parse_cpuinfo_ppc;
+	}
+      }
       /* we can't assume that we already got a processor index line:
        * alpha/frv/h8300/m68k/microblaze/sparc have no processor lines at all, only a global entry.
        * tile has a global section with model name before the list of processor lines.
        */
-      hwloc_linux_parse_cpuinfo_model(prefix, value, numprocs ? &Lprocs[numprocs-1].cpumodel : &global_cpumodel);
+      parse_cpuinfo_func(prefix, value,
+			 curproc >= 0 ? &Lprocs[curproc].infos : global_infos,
+			 curproc >= 0 ? &Lprocs[curproc].infos_count : global_infos_count,
+			 curproc < 0);
     }
 
     if (noend) {
@@ -3214,7 +3380,6 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
   }
   fclose(fd);
   free(str);
-  free(global_cpumodel);
 
   *Lprocs_p = Lprocs;
   return numprocs;
@@ -3222,18 +3387,22 @@ hwloc_linux_parse_cpuinfo(struct hwloc_linux_backend_data_s *data,
  err:
   fclose(fd);
   free(str);
-  free(global_cpumodel);
   free(Lprocs);
   return -1;
 }
 
 static void
-hwloc_linux_free_cpuinfo(struct hwloc_linux_cpuinfo_proc * Lprocs, unsigned numprocs)
+hwloc_linux_free_cpuinfo(struct hwloc_linux_cpuinfo_proc * Lprocs, unsigned numprocs,
+			 struct hwloc_obj_info_s *global_infos, unsigned global_infos_count)
 {
-  unsigned i;
-  for(i=0; i<numprocs; i++)
-    free(Lprocs[i].cpumodel);
-  free(Lprocs);
+  if (Lprocs) {
+    unsigned i;
+    for(i=0; i<numprocs; i++) {
+      hwloc__free_infos(Lprocs[i].infos, Lprocs[i].infos_count);
+    }
+    free(Lprocs);
+  }
+  hwloc__free_infos(global_infos, global_infos_count);
 }
 
 static int
@@ -3242,6 +3411,8 @@ look_cpuinfo(struct hwloc_topology *topology,
 	     const char *path, hwloc_bitmap_t online_cpuset)
 {
   struct hwloc_linux_cpuinfo_proc * Lprocs = NULL;
+  struct hwloc_obj_info_s *global_infos = NULL;
+  unsigned global_infos_count = 0;
   /* P for physical/OS index, L for logical (e.g. in we order we get them, not in the final hwloc logical order) */
   unsigned *Lcore_to_Pcore;
   unsigned *Lcore_to_Psock; /* needed because Lcore is equivalent to Pcore+Psock, not to Pcore alone */
@@ -3257,8 +3428,16 @@ look_cpuinfo(struct hwloc_topology *topology,
   hwloc_bitmap_t cpuset;
 
   /* parse the entire cpuinfo first, fill the Lprocs array and numprocs */
-  _numprocs = hwloc_linux_parse_cpuinfo(data, path, &Lprocs);
+  _numprocs = hwloc_linux_parse_cpuinfo(data, path, &Lprocs, &global_infos, &global_infos_count);
+
+
+  /* setup root info */
+  hwloc__move_infos(&hwloc_get_root_obj(topology)->infos, &hwloc_get_root_obj(topology)->infos_count,
+		    &global_infos, &global_infos_count);
+
+
   if (_numprocs <= 0)
+    /* found no processor */
     return -1;
   numprocs = _numprocs;
 
@@ -3325,18 +3504,16 @@ look_cpuinfo(struct hwloc_topology *topology,
   if (!missingsocket && numsockets>0) {
     for (i = 0; i < numsockets; i++) {
       struct hwloc_obj *obj = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, Lsock_to_Psock[i]);
-      char *cpumodel = NULL;
+      int doneinfos = 0;
       obj->cpuset = hwloc_bitmap_alloc();
       for(j=0; j<numprocs; j++)
 	if ((unsigned) Lprocs[j].Lsock == i) {
 	  hwloc_bitmap_set(obj->cpuset, Lprocs[j].Pproc);
-	  if (Lprocs[j].cpumodel && !cpumodel) /* use the first one, they should all be equal anyway */
-	    cpumodel = Lprocs[j].cpumodel;
+	  if (!doneinfos) {
+	    hwloc__move_infos(&obj->infos, &obj->infos_count, &Lprocs[j].infos, &Lprocs[j].infos_count);
+	    doneinfos = 1;
+	  }
 	}
-      if (cpumodel) {
-	/* FIXME add to name as well? */
-        hwloc_obj_add_info(obj, "CPUModel", cpumodel);
-      }
       hwloc_debug_1arg_bitmap("Socket %d has cpuset %s\n", i, obj->cpuset);
       hwloc_insert_object_by_cpuset(topology, obj);
     }
@@ -3385,7 +3562,7 @@ look_cpuinfo(struct hwloc_topology *topology,
   free(Lcore_to_Psock);
   free(Lsock_to_Psock);
 
-  hwloc_linux_free_cpuinfo(Lprocs, numprocs);
+  hwloc_linux_free_cpuinfo(Lprocs, numprocs, global_infos, global_infos_count);
 
   look_powerpc_device_tree(topology, data);
   return 0;
@@ -3431,6 +3608,78 @@ hwloc_linux_fallback_pu_level(struct hwloc_topology *topology)
     hwloc_setup_pu_level(topology, 1);
 }
 
+static void
+hwloc_gather_system_info(struct hwloc_topology *topology,
+			 struct hwloc_linux_backend_data_s *data)
+{
+  FILE *file;
+  char line[128]; /* enough for utsname fields */
+  char *env;
+
+  /* initialize to something sane */
+  memset(&data->utsname, 0, sizeof(data->utsname));
+
+  /* read thissystem info */
+  if (topology->is_thissystem)
+    uname(&data->utsname);
+
+  /* overwrite with optional /proc/hwloc-nofile-info */
+  file = hwloc_fopen("/proc/hwloc-nofile-info", "r", data->root_fd);
+  if (file) {
+    while (fgets(line, sizeof(line), file)) {
+      char *tmp = strchr(line, '\n');
+      if (!strncmp("OSName: ", line, 8)) {
+	if (tmp)
+	  *tmp = '\0';
+	strncpy(data->utsname.sysname, line+8, sizeof(data->utsname.sysname));
+	data->utsname.sysname[sizeof(data->utsname.sysname)-1] = '\0';
+      } else if (!strncmp("OSRelease: ", line, 11)) {
+	if (tmp)
+	  *tmp = '\0';
+	strncpy(data->utsname.release, line+11, sizeof(data->utsname.release));
+	data->utsname.release[sizeof(data->utsname.release)-1] = '\0';
+      } else if (!strncmp("OSVersion: ", line, 11)) {
+	if (tmp)
+	  *tmp = '\0';
+	strncpy(data->utsname.version, line+11, sizeof(data->utsname.version));
+	data->utsname.version[sizeof(data->utsname.version)-1] = '\0';
+      } else if (!strncmp("HostName: ", line, 10)) {
+	if (tmp)
+	  *tmp = '\0';
+	strncpy(data->utsname.nodename, line+10, sizeof(data->utsname.nodename));
+	data->utsname.nodename[sizeof(data->utsname.nodename)-1] = '\0';
+      } else if (!strncmp("Architecture: ", line, 14)) {
+	if (tmp)
+	  *tmp = '\0';
+	strncpy(data->utsname.machine, line+14, sizeof(data->utsname.machine));
+	data->utsname.machine[sizeof(data->utsname.machine)-1] = '\0';
+      } else {
+	hwloc_debug("ignored /proc/hwloc-nofile-info line %s\n", line);
+	/* ignored */
+      }
+    }
+    fclose(file);
+  }
+
+  env = getenv("HWLOC_DUMP_NOFILE_INFO");
+  if (env && *env) {
+    file = fopen(env, "w");
+    if (file) {
+      if (*data->utsname.sysname)
+	fprintf(file, "OSName: %s\n", data->utsname.sysname);
+      if (*data->utsname.release)
+	fprintf(file, "OSRelease: %s\n", data->utsname.release);
+      if (*data->utsname.version)
+	fprintf(file, "OSVersion: %s\n", data->utsname.version);
+      if (*data->utsname.nodename)
+	fprintf(file, "HostName: %s\n", data->utsname.nodename);
+      if (*data->utsname.machine)
+	fprintf(file, "Architecture: %s\n", data->utsname.machine);
+      fclose(file);
+    }
+  }
+}
+
 static int
 hwloc_look_linuxfs(struct hwloc_backend *backend)
 {
@@ -3445,6 +3694,8 @@ hwloc_look_linuxfs(struct hwloc_backend *backend)
     /* somebody discovered things */
     return 0;
 
+  hwloc_gather_system_info(topology, data);
+
   hwloc_alloc_obj_cpusets(topology->levels[0][0]);
 
   /* Gather the list of admin-disabled cpus and mems */
@@ -3533,15 +3784,18 @@ hwloc_look_linuxfs(struct hwloc_backend *backend)
 
     } else {
       struct hwloc_linux_cpuinfo_proc * Lprocs = NULL;
-      int numprocs = hwloc_linux_parse_cpuinfo(data, "/proc/cpuinfo", &Lprocs);
+      struct hwloc_obj_info_s *global_infos = NULL;
+      unsigned global_infos_count = 0;
+      int numprocs = hwloc_linux_parse_cpuinfo(data, "/proc/cpuinfo", &Lprocs, &global_infos, &global_infos_count);
       if (numprocs <= 0)
 	Lprocs = NULL;
       if (look_sysfscpu(topology, data, "/sys/bus/cpu/devices", Lprocs, numprocs) < 0)
         if (look_sysfscpu(topology, data, "/sys/devices/system/cpu", Lprocs, numprocs) < 0)
 	  /* sysfs but we failed to read cpu topology, fallback */
 	  hwloc_linux_fallback_pu_level(topology);
-      if (Lprocs)
-	hwloc_linux_free_cpuinfo(Lprocs, numprocs);
+      hwloc__move_infos(&hwloc_get_root_obj(topology)->infos, &hwloc_get_root_obj(topology)->infos_count,
+			&global_infos, &global_infos_count);
+      hwloc_linux_free_cpuinfo(Lprocs, numprocs, global_infos, global_infos_count);
     }
 
     /* Gather DMI info */
@@ -3556,9 +3810,8 @@ hwloc_look_linuxfs(struct hwloc_backend *backend)
 
   hwloc__linux_get_mic_sn(topology, data);
 
-  /* gather uname info if fsroot wasn't changed */
-  if (topology->is_thissystem)
-     hwloc_add_uname_info(topology);
+  /* data->utsname was filled with real uname or \0, we can safely pass it */
+  hwloc_add_uname_info(topology, &data->utsname);
 
   return 1;
 }
@@ -4435,7 +4688,7 @@ hwloc_look_linuxfs_pci(struct hwloc_backend *backend)
     unsigned os_index;
     char path[64];
     char value[16];
-    size_t dummy __hwloc_attribute_unused;
+    size_t read;
     FILE *file;
 
     if (sscanf(dirent->d_name, "%04x:%02x:%02x.%01x", &domain, &bus, &dev, &func) != 4)
@@ -4464,37 +4717,42 @@ hwloc_look_linuxfs_pci(struct hwloc_backend *backend)
     snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/vendor", dirent->d_name);
     file = hwloc_fopen(path, "r", root_fd);
     if (file) {
-      dummy = fread(value, sizeof(value), 1, file);
+      read = fread(value, 1, sizeof(value), file);
       fclose(file);
-      attr->vendor_id = strtoul(value, NULL, 16);
+      if (read)
+        attr->vendor_id = strtoul(value, NULL, 16);
     }
     snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/device", dirent->d_name);
     file = hwloc_fopen(path, "r", root_fd);
     if (file) {
-      dummy = fread(value, sizeof(value), 1, file);
+      read = fread(value, 1, sizeof(value), file);
       fclose(file);
-      attr->device_id = strtoul(value, NULL, 16);
+      if (read)
+        attr->device_id = strtoul(value, NULL, 16);
     }
     snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/class", dirent->d_name);
     file = hwloc_fopen(path, "r", root_fd);
     if (file) {
-      dummy = fread(value, sizeof(value), 1, file);
+      read = fread(value, 1, sizeof(value), file);
       fclose(file);
-      attr->class_id = strtoul(value, NULL, 16) >> 8;
+      if (read)
+        attr->class_id = strtoul(value, NULL, 16) >> 8;
     }
     snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/subsystem_vendor", dirent->d_name);
     file = hwloc_fopen(path, "r", root_fd);
     if (file) {
-      dummy = fread(value, sizeof(value), 1, file);
+      read = fread(value, 1, sizeof(value), file);
       fclose(file);
-      attr->subvendor_id = strtoul(value, NULL, 16);
+      if (read)
+        attr->subvendor_id = strtoul(value, NULL, 16);
     }
     snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/subsystem_device", dirent->d_name);
     file = hwloc_fopen(path, "r", root_fd);
     if (file) {
-      dummy = fread(value, sizeof(value), 1, file);
+      read = fread(value, 1, sizeof(value), file);
       fclose(file);
-      attr->subdevice_id = strtoul(value, NULL, 16);
+      if (read)
+        attr->subdevice_id = strtoul(value, NULL, 16);
     }
 
     snprintf(path, sizeof(path), "/sys/bus/pci/devices/%s/config", dirent->d_name);
@@ -4506,7 +4764,8 @@ hwloc_look_linuxfs_pci(struct hwloc_backend *backend)
 
       /* initialize the config space in case we fail to read it (missing permissions, etc). */
       memset(config_space_cache, 0xff, CONFIG_SPACE_CACHESIZE);
-      dummy = fread(config_space_cache, 1, CONFIG_SPACE_CACHESIZE, file);
+      read = fread(config_space_cache, 1, CONFIG_SPACE_CACHESIZE, file);
+      (void) read; /* we initialized config_space_cache in case we don't read enough, ignore the read length */
       fclose(file);
 
       /* is this a bridge? */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-netbsd.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-netbsd.c
index c88ba87..2d1b3a6 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-netbsd.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-netbsd.c
@@ -147,7 +147,7 @@ hwloc_look_netbsd(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "NetBSD");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-noos.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-noos.c
index 8c74ded..e944afd 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-noos.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-noos.c
@@ -22,7 +22,7 @@ hwloc_look_noos(struct hwloc_backend *backend)
   hwloc_alloc_obj_cpusets(topology->levels[0][0]);
   hwloc_setup_pu_level(topology, hwloc_fallback_nbprocessors(topology));
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-opencl.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-opencl.c
index 1696797..3a8802f 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-opencl.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-opencl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2012 Inria.  All rights reserved.
+ * Copyright © 2012-2014 Inria.  All rights reserved.
  * Copyright © 2013 Université Bordeaux 1.  All right reserved.
  * See COPYING in top-level directory.
  */
@@ -30,6 +30,9 @@ struct hwloc_opencl_backend_data_s {
     char devicevendor[64];
     char devicetype[64];
 
+    unsigned computeunits;
+    unsigned long long globalmemsize;
+
     union hwloc_opencl_device_info_u {
       struct hwloc_opencl_device_info_amd_s {
         unsigned pcidomain, pcibus, pcidev, pcifunc;
@@ -99,6 +102,8 @@ hwloc_opencl_query_devices(struct hwloc_opencl_backend_data_s *data)
 #ifdef CL_DEVICE_TOPOLOGY_AMD
     cl_device_topology_amd amdtopo;
 #endif
+    cl_ulong globalmemsize;
+    cl_uint computeunits;
 
     hwloc_debug("Looking device %p\n", device_ids[i]);
 
@@ -133,6 +138,12 @@ hwloc_opencl_query_devices(struct hwloc_opencl_backend_data_s *data)
       break;
     }
 
+    clGetDeviceInfo(device_ids[i], CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(globalmemsize), &globalmemsize, NULL);
+    info->globalmemsize = globalmemsize / 1024;
+
+    clGetDeviceInfo(device_ids[i], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(computeunits), &computeunits, NULL);
+    info->computeunits = computeunits;
+
     hwloc_debug("platform %s device %s vendor %s type %s\n", info->platformname, info->devicename, info->devicevendor, info->devicetype);
 
     /* find our indexes */
@@ -251,6 +262,12 @@ hwloc_opencl_backend_notify_new_object(struct hwloc_backend *backend, struct hwl
     snprintf(buffer, sizeof(buffer), "%u", info->platformdeviceidx);
     hwloc_obj_add_info(osdev, "OpenCLPlatformDeviceIndex", buffer);
 
+    snprintf(buffer, sizeof(buffer), "%u", info->computeunits);
+    hwloc_obj_add_info(osdev, "OpenCLComputeUnits", buffer);
+
+    snprintf(buffer, sizeof(buffer), "%llu", info->globalmemsize);
+    hwloc_obj_add_info(osdev, "OpenCLGlobalMemorySize", buffer);
+
     hwloc_insert_object_by_parent(topology, pcidev, osdev);
     return 1;
   }
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c
index 52300fc..c7ed7b2 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c
@@ -336,7 +336,7 @@ hwloc_look_osf(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "OSF");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c
index a185d86..eaf6da2 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-pci.c
@@ -249,21 +249,26 @@ hwloc_look_pci(struct hwloc_backend *backend)
       char path[64];
       char value[16];
       FILE *file;
+      size_t read;
+
       snprintf(path, sizeof(path), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/vendor",
 	       domain, pcidev->bus, pcidev->dev, pcidev->func);
       file = fopen(path, "r");
       if (file) {
-	fread(value, sizeof(value), 1, file);
+	read = fread(value, 1, sizeof(value), file);
 	fclose(file);
-	obj->attr->pcidev.vendor_id = strtoul(value, NULL, 16);
+	if (read)
+	  obj->attr->pcidev.vendor_id = strtoul(value, NULL, 16);
       }
+
       snprintf(path, sizeof(path), "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/device",
 	       domain, pcidev->bus, pcidev->dev, pcidev->func);
       file = fopen(path, "r");
       if (file) {
-	fread(value, sizeof(value), 1, file);
+	read = fread(value, 1, sizeof(value), file);
 	fclose(file);
-	obj->attr->pcidev.device_id = strtoul(value, NULL, 16);
+	if (read)
+	  obj->attr->pcidev.device_id = strtoul(value, NULL, 16);
       }
 #endif
     }
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c
index fec511d..6753a27 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c
@@ -741,7 +741,7 @@ hwloc_look_solaris(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "Solaris");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c
index 11c8c33..c374a3d 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2012 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -18,14 +18,21 @@
 #include <strings.h>
 #endif
 
+struct hwloc_synthetic_level_data_s {
+  unsigned arity;
+  hwloc_obj_type_t type;
+  unsigned depth; /* For caches/groups */
+  hwloc_obj_cache_type_t cachetype; /* For caches */
+
+  /* used while filling the topology */
+  unsigned next_os_index; /* id of the next object for that level */
+};
+
 struct hwloc_synthetic_backend_data_s {
   /* synthetic backend parameters */
   char *string;
 #define HWLOC_SYNTHETIC_MAX_DEPTH 128
-  unsigned arity[HWLOC_SYNTHETIC_MAX_DEPTH];
-  hwloc_obj_type_t type[HWLOC_SYNTHETIC_MAX_DEPTH];
-  unsigned id[HWLOC_SYNTHETIC_MAX_DEPTH];
-  unsigned depth[HWLOC_SYNTHETIC_MAX_DEPTH]; /* For cache/misc */
+  struct hwloc_synthetic_level_data_s level[HWLOC_SYNTHETIC_MAX_DEPTH];
 };
 
 /* Read from description a series of integers describing a symmetrical
@@ -50,6 +57,8 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
   for (pos = description, count = 1; *pos; pos = next_pos) {
 #define HWLOC_OBJ_TYPE_UNKNOWN ((hwloc_obj_type_t) -1)
     hwloc_obj_type_t type = HWLOC_OBJ_TYPE_UNKNOWN;
+    int typedepth = -1;
+    hwloc_obj_cache_type_t cachetype = (hwloc_obj_cache_type_t) -1;
 
     while (*pos == ' ')
       pos++;
@@ -58,24 +67,12 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
       break;
 
     if (*pos < '0' || *pos > '9') {
-      if (!hwloc_namecoloncmp(pos, "machines", 2)) {
-	type = HWLOC_OBJ_MACHINE;
-      } else if (!hwloc_namecoloncmp(pos, "nodes", 1))
-	type = HWLOC_OBJ_NODE;
-      else if (!hwloc_namecoloncmp(pos, "sockets", 1))
-	type = HWLOC_OBJ_SOCKET;
-      else if (!hwloc_namecoloncmp(pos, "cores", 2))
-	type = HWLOC_OBJ_CORE;
-      else if (!hwloc_namecoloncmp(pos, "caches", 2))
-	type = HWLOC_OBJ_CACHE;
-      else if (!hwloc_namecoloncmp(pos, "pus", 1))
-	type = HWLOC_OBJ_PU;
-      else if (!hwloc_namecoloncmp(pos, "misc", 2))
-	type = HWLOC_OBJ_MISC;
-      else if (!hwloc_namecoloncmp(pos, "group", 2))
-	type = HWLOC_OBJ_GROUP;
-      else if (verbose)
-        fprintf(stderr, "Synthetic string with unknown object type `%s'\n", pos);
+      if (hwloc_obj_type_sscanf(pos, &type, &typedepth, &cachetype, sizeof(cachetype)) < 0) {
+	if (verbose)
+	  fprintf(stderr, "Synthetic string with unknown object type at '%s'\n", pos);
+	errno = EINVAL;
+	return -1;
+      }
 
       next_pos = strchr(pos, ':');
       if (!next_pos) {
@@ -107,8 +104,10 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
       return -1;
     }
 
-    data->arity[count-1] = (unsigned)item;
-    data->type[count] = type;
+    data->level[count-1].arity = (unsigned)item;
+    data->level[count].type = type;
+    data->level[count].depth = (unsigned) typedepth;
+    data->level[count].cachetype = cachetype;
     count++;
   }
 
@@ -120,15 +119,16 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
   }
 
   for(i=count-1; i>0; i--) {
+    struct hwloc_synthetic_level_data_s *curlevel = &data->level[i];
     hwloc_obj_type_t type;
 
-    type = data->type[i];
+    type = curlevel->type;
 
     if (type == HWLOC_OBJ_TYPE_UNKNOWN) {
       if (i == count-1)
 	type = HWLOC_OBJ_PU;
       else {
-	switch (data->type[i+1]) {
+	switch (data->level[i+1].type) {
 	case HWLOC_OBJ_PU: type = HWLOC_OBJ_CORE; break;
 	case HWLOC_OBJ_CORE: type = HWLOC_OBJ_CACHE; break;
 	case HWLOC_OBJ_CACHE: type = HWLOC_OBJ_SOCKET; break;
@@ -141,16 +141,10 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
 	  assert(0);
 	}
       }
-      data->type[i] = type;
+      curlevel->type = type;
     }
     switch (type) {
       case HWLOC_OBJ_PU:
-	if (nb_pu_levels) {
-	  if (verbose)
-	    fprintf(stderr, "Synthetic string can not have several PU levels\n");
-	  errno = EINVAL;
-	  return -1;
-	}
 	nb_pu_levels++;
 	break;
       case HWLOC_OBJ_CACHE:
@@ -176,7 +170,6 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
     errno = EINVAL;
     return -1;
   }
-
   if (nb_pu_levels > 1) {
     if (verbose)
       fprintf(stderr, "Synthetic string can not have several PU levels\n");
@@ -197,9 +190,9 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
   }
 
   if (nb_machine_levels)
-    data->type[0] = HWLOC_OBJ_SYSTEM;
+    data->level[0].type = HWLOC_OBJ_SYSTEM;
   else {
-    data->type[0] = HWLOC_OBJ_MACHINE;
+    data->level[0].type = HWLOC_OBJ_MACHINE;
     nb_machine_levels++;
   }
 
@@ -208,16 +201,22 @@ hwloc_backend_synthetic_init(struct hwloc_synthetic_backend_data_s *data,
     cache_depth = 2;
 
   for (i=0; i<count; i++) {
-    hwloc_obj_type_t type = data->type[i];
-
-    if (type == HWLOC_OBJ_GROUP)
-      data->depth[i] = group_depth--;
-    else if (type == HWLOC_OBJ_CACHE)
-      data->depth[i] = cache_depth--;
+    struct hwloc_synthetic_level_data_s *curlevel = &data->level[i];
+    hwloc_obj_type_t type = curlevel->type;
+
+    if (type == HWLOC_OBJ_GROUP) {
+      if (curlevel->depth == (unsigned)-1)
+	curlevel->depth = group_depth--;
+    } else if (type == HWLOC_OBJ_CACHE) {
+      if (curlevel->depth == (unsigned)-1)
+	curlevel->depth = cache_depth--;
+      if (curlevel->cachetype == (hwloc_obj_cache_type_t) -1)
+	curlevel->cachetype = curlevel->depth == 1 ? HWLOC_OBJ_CACHE_DATA : HWLOC_OBJ_CACHE_UNIFIED;
+    }
   }
 
   data->string = strdup(description);
-  data->arity[count-1] = 0;
+  data->level[count-1].arity = 0;
 
   return 0;
 }
@@ -238,7 +237,8 @@ hwloc__look_synthetic(struct hwloc_topology *topology,
 {
   hwloc_obj_t obj;
   unsigned i;
-  hwloc_obj_type_t type = data->type[level];
+  struct hwloc_synthetic_level_data_s *curlevel = &data->level[level];
+  hwloc_obj_type_t type = curlevel->type;
 
   /* pre-hooks */
   switch (type) {
@@ -271,13 +271,13 @@ hwloc__look_synthetic(struct hwloc_topology *topology,
       break;
   }
 
-  obj = hwloc_alloc_setup_object(type, data->id[level]++);
+  obj = hwloc_alloc_setup_object(type, curlevel->next_os_index++);
   obj->cpuset = hwloc_bitmap_alloc();
 
-  if (!data->arity[level]) {
+  if (!curlevel->arity) {
     hwloc_bitmap_set(obj->cpuset, first_cpu++);
   } else {
-    for (i = 0; i < data->arity[level]; i++)
+    for (i = 0; i < curlevel->arity; i++)
       first_cpu = hwloc__look_synthetic(topology, data, level + 1, first_cpu, obj->cpuset);
   }
 
@@ -293,7 +293,7 @@ hwloc__look_synthetic(struct hwloc_topology *topology,
     case HWLOC_OBJ_MISC:
       break;
     case HWLOC_OBJ_GROUP:
-      obj->attr->group.depth = data->depth[level];
+      obj->attr->group.depth = curlevel->depth;
       break;
     case HWLOC_OBJ_SYSTEM:
     case HWLOC_OBJ_BRIDGE:
@@ -315,16 +315,15 @@ hwloc__look_synthetic(struct hwloc_topology *topology,
     case HWLOC_OBJ_SOCKET:
       break;
     case HWLOC_OBJ_CACHE:
-      obj->attr->cache.depth = data->depth[level];
+      obj->attr->cache.depth = curlevel->depth;
       obj->attr->cache.linesize = 64;
+      obj->attr->cache.type = curlevel->cachetype;
       if (obj->attr->cache.depth == 1) {
 	/* 32Kb in L1d */
 	obj->attr->cache.size = 32*1024;
-	obj->attr->cache.type = HWLOC_OBJ_CACHE_DATA;
       } else {
 	/* *4 at each level, starting from 1MB for L2, unified */
 	obj->attr->cache.size = 256*1024 << (2*obj->attr->cache.depth);
-	obj->attr->cache.type = HWLOC_OBJ_CACHE_UNIFIED;
       }
       break;
     case HWLOC_OBJ_CORE:
@@ -356,16 +355,16 @@ hwloc_look_synthetic(struct hwloc_backend *backend)
 
   topology->support.discovery->pu = 1;
 
-  /* start with id=0 for each level */
-  for (i = 0; data->arity[i] > 0; i++)
-    data->id[i] = 0;
+  /* start with os_index 0 for each level */
+  for (i = 0; data->level[i].arity > 0; i++)
+    data->level[i].next_os_index = 0;
   /* ... including the last one */
-  data->id[i] = 0;
+  data->level[i].next_os_index = 0;
 
   /* update first level type according to the synthetic type array */
-  topology->levels[0][0]->type = data->type[0];
+  topology->levels[0][0]->type = data->level[0].type;
 
-  for (i = 0; i < data->arity[0]; i++)
+  for (i = 0; i < data->level[0].arity; i++)
     first_cpu = hwloc__look_synthetic(topology, data, 1, first_cpu, cpuset);
 
   hwloc_bitmap_free(cpuset);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c
index 8d811c7..bda7571 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c
@@ -748,7 +748,7 @@ hwloc_look_windows(struct hwloc_backend *backend)
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "Windows");
   if (topology->is_thissystem)
-    hwloc_add_uname_info(topology);
+    hwloc_add_uname_info(topology, NULL);
   return 1;
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
index 9fa0f88..611aea1 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2010-2013 Inria.  All rights reserved.
+ * Copyright © 2010-2014 Inria.  All rights reserved.
  * Copyright © 2010-2013 Université Bordeaux 1
  * Copyright © 2010-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -20,7 +20,7 @@
 #include <private/debug.h>
 #include <private/misc.h>
 
-#include <private/cpuid.h>
+#include <private/cpuid-x86.h>
 
 #define has_topoext(features) ((features)[6] & (1 << 22))
 
@@ -52,7 +52,10 @@ struct procinfo {
   unsigned levels;
   unsigned numcaches;
   struct cacheinfo *cache;
+  char cpuvendor[13];
   char cpumodel[3*4*4+1];
+  unsigned cpumodelnumber;
+  unsigned cpufamilynumber;
 };
 
 enum cpuid_type {
@@ -111,11 +114,13 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
   unsigned eax, ebx, ecx = 0, edx;
   unsigned cachenum;
   struct cacheinfo *cache;
+  unsigned regs[4];
+  unsigned _model, _extendedmodel, _family, _extendedfamily;
 
   infos->present = 1;
 
   eax = 0x01;
-  hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+  hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
   infos->apicid = ebx >> 24;
   if (edx & (1 << 28))
     infos->max_log_proc = 1 << hwloc_flsl(((ebx >> 16) & 0xff) - 1);
@@ -126,16 +131,38 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
   infos->logprocid = infos->apicid % infos->max_log_proc;
   hwloc_debug("phys %u thread %u\n", infos->socketid, infos->logprocid);
 
+  memset(regs, 0, sizeof(regs));
+  regs[0] = 0;
+  hwloc_x86_cpuid(&regs[0], &regs[1], &regs[3], &regs[2]);
+  memcpy(infos->cpuvendor, regs+1, 4*3);
+  infos->cpuvendor[12] = '\0';
+
+  memset(regs, 0, sizeof(regs));
+  regs[0] = 1;
+  hwloc_x86_cpuid(&regs[0], &regs[1], &regs[2], &regs[3]);
+  _model          = (regs[0]>>4) & 0xf;
+  _extendedmodel  = (regs[0]>>16) & 0xf;
+  _family         = (regs[0]>>8) & 0xf;
+  _extendedfamily = (regs[0]>>20) & 0xff;
+  if (!strncmp(infos->cpuvendor, "Genu", 4)
+      || (!strncmp(infos->cpuvendor, "Auth", 4) && _family == 0xf)) {
+    infos->cpufamilynumber = _family + _extendedfamily;
+    infos->cpumodelnumber = _model + (_extendedmodel << 4);
+  } else {
+    infos->cpufamilynumber = _family;
+    infos->cpumodelnumber = _model;
+  }
+
   if (highest_ext_cpuid >= 0x80000004) {
-    unsigned regs[4] = { 0 };
+    memset(regs, 0, sizeof(regs));
     regs[0] = 0x80000002;
-    hwloc_cpuid(&regs[0], &regs[1], &regs[2], &regs[3]);
+    hwloc_x86_cpuid(&regs[0], &regs[1], &regs[2], &regs[3]);
     memcpy(infos->cpumodel, regs, 4*4);
     regs[0] = 0x80000003;
-    hwloc_cpuid(&regs[0], &regs[1], &regs[2], &regs[3]);
+    hwloc_x86_cpuid(&regs[0], &regs[1], &regs[2], &regs[3]);
     memcpy(infos->cpumodel + 4*4, regs, 4*4);
     regs[0] = 0x80000004;
-    hwloc_cpuid(&regs[0], &regs[1], &regs[2], &regs[3]);
+    hwloc_x86_cpuid(&regs[0], &regs[1], &regs[2], &regs[3]);
     memcpy(infos->cpumodel + 4*4*2, regs, 4*4);
     infos->cpumodel[3*4*4] = 0;
   } else
@@ -145,7 +172,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
   if (cpuid_type != intel && highest_ext_cpuid >= 0x80000008) {
     unsigned coreidsize;
     eax = 0x80000008;
-    hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+    hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
     coreidsize = (ecx >> 12) & 0xf;
     hwloc_debug("core ID size: %u\n", coreidsize);
     if (!coreidsize) {
@@ -169,7 +196,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
     unsigned apic_id, node_id, nodes_per_proc, unit_id, cores_per_unit;
 
     eax = 0x8000001e;
-    hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+    hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
     infos->apicid = apic_id = eax;
     infos->nodeid = node_id = ecx & 0xff;
     nodes_per_proc = ((ecx >> 8) & 7) + 1;
@@ -184,7 +211,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
       unsigned type;
       eax = 0x8000001d;
       ecx = cachenum;
-      hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+      hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
       type = eax & 0x1f;
       if (type == 0)
 	break;
@@ -198,7 +225,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
       unsigned type;
       eax = 0x8000001d;
       ecx = cachenum;
-      hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+      hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
 
       type = eax & 0x1f;
 
@@ -230,14 +257,14 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
     /* Intel doesn't actually provide 0x80000005 information */
     if (cpuid_type != intel && highest_ext_cpuid >= 0x80000005) {
       eax = 0x80000005;
-      hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+      hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
       fill_amd_cache(infos, 1, ecx);
     }
 
     /* Intel doesn't actually provide 0x80000006 information */
     if (cpuid_type != intel && highest_ext_cpuid >= 0x80000006) {
       eax = 0x80000006;
-      hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+      hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
       fill_amd_cache(infos, 2, ecx);
       fill_amd_cache(infos, 3, edx);
     }
@@ -249,7 +276,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
       unsigned type;
       eax = 0x04;
       ecx = cachenum;
-      hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+      hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
 
       type = eax & 0x1f;
 
@@ -267,7 +294,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
       unsigned type;
       eax = 0x04;
       ecx = cachenum;
-      hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+      hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
 
       type = eax & 0x1f;
 
@@ -306,7 +333,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
     for (level = 0; ; level++) {
       ecx = level;
       eax = 0x0b;
-      hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+      hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
       if (!eax && !ebx)
         break;
     }
@@ -316,7 +343,7 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
       for (level = 0; ; level++) {
 	ecx = level;
 	eax = 0x0b;
-	hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+	hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
 	if (!eax && !ebx)
 	  break;
 	apic_nextshift = eax & 0x1f;
@@ -349,6 +376,23 @@ static void look_proc(struct procinfo *infos, unsigned highest_cpuid, unsigned h
     infos->otherids = NULL;
 }
 
+static void
+hwloc_x86_add_cpuinfos(hwloc_obj_t obj, struct procinfo *info, int nodup)
+{
+  char number[8];
+  hwloc_obj_add_info_nodup(obj, "CPUVendor", info->cpuvendor, nodup);
+  if (info->cpumodel[0]) {
+    const char *c = info->cpumodel;
+    while (*c == ' ')
+      c++;
+    hwloc_obj_add_info_nodup(obj, "CPUModel", c, nodup);
+  }
+  snprintf(number, sizeof(number), "%u", info->cpumodelnumber);
+  hwloc_obj_add_info_nodup(obj, "CPUModelNumber", number, nodup);
+  snprintf(number, sizeof(number), "%u", info->cpufamilynumber);
+  hwloc_obj_add_info_nodup(obj, "CPUFamilyNumber", number, nodup);
+}
+
 /* Analyse information stored in infos, and build/annotate topology levels accordingly */
 static void summarize(hwloc_topology_t topology, struct procinfo *infos, unsigned nbprocs,
 		      int fulldiscovery)
@@ -392,12 +436,9 @@ static void summarize(hwloc_topology_t topology, struct procinfo *infos, unsigne
       }
       socket = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, socketid);
       socket->cpuset = socket_cpuset;
-      if (infos[i].cpumodel[0]) {
-        const char *c = infos[i].cpumodel;
-        while (*c == ' ')
-          c++;
-        hwloc_obj_add_info(socket, "CPUModel", c);
-      }
+
+      hwloc_x86_add_cpuinfos(socket, &infos[i], 0);
+
       hwloc_debug_1arg_bitmap("os socket %u has cpuset %s\n",
           socketid, socket_cpuset);
       hwloc_insert_object_by_cpuset(topology, socket);
@@ -430,34 +471,23 @@ static void summarize(hwloc_topology_t topology, struct procinfo *infos, unsigne
 	  }
 	}
       }
-      if (!hwloc_obj_get_info_by_name(socket, "CPUModel")) {
-	/* add a CPUModel info */
-	for(i=0; i<nbprocs; i++)
-	  /* if there's a single socket, it's the one we want.
-	   * if the index is ok, it's the one we want.
-	   * if the index is unknown but all sockets have the same id, that's fine
-	   */
-	  if (nbsockets == 1 || infos[i].socketid == socket->os_index || (same && socket->os_index == (unsigned) -1)) {
-	    if (infos[i].cpumodel[0]) {
-	      const char *c = infos[i].cpumodel;
-	      while (*c == ' ')
-		c++;
-	      hwloc_obj_add_info(socket, "CPUModel", c);
-	    }
-	    break;
-	  }
+      for(i=0; i<nbprocs; i++) {
+	/* if there's a single socket, it's the one we want.
+	 * if the index is ok, it's the one we want.
+	 * if the index is unknown but all sockets have the same id, that's fine
+	 */
+	if (nbsockets == 1 || infos[i].socketid == socket->os_index || (same && socket->os_index == (unsigned) -1)) {
+	  hwloc_x86_add_cpuinfos(socket, &infos[i], 1);
+	  break;
+	}
       }
     }
   }
   /* If there was no socket, annotate the Machine instead */
   if ((!nbsockets) && infos[0].cpumodel[0]) {
-    const char *c = infos[0].cpumodel;
-    while (*c == ' ')
-      c++;
-    hwloc_obj_add_info(hwloc_get_root_obj(topology), "CPUModel", c);
+    hwloc_x86_add_cpuinfos(hwloc_get_root_obj(topology), &infos[0], 1);
   }
 
-
   /* Look for Numa nodes inside sockets */
   if (fulldiscovery) {
     hwloc_bitmap_t nodes_cpuset = hwloc_bitmap_dup(complete_cpuset);
@@ -684,6 +714,41 @@ static void summarize(hwloc_topology_t topology, struct procinfo *infos, unsigne
   hwloc_bitmap_free(complete_cpuset);
 }
 
+static int
+look_procs(struct hwloc_topology *topology, unsigned nbprocs, struct procinfo *infos, int fulldiscovery,
+	   unsigned highest_cpuid, unsigned highest_ext_cpuid, unsigned *features, enum cpuid_type cpuid_type,
+	   int (*get_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags),
+	   int (*set_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags))
+{
+  hwloc_bitmap_t orig_cpuset = hwloc_bitmap_alloc();
+  hwloc_bitmap_t set;
+  unsigned i;
+
+  if (get_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {
+    hwloc_bitmap_free(orig_cpuset);
+    return -1;
+  }
+
+  set = hwloc_bitmap_alloc();
+
+  for (i = 0; i < nbprocs; i++) {
+    hwloc_bitmap_only(set, i);
+    hwloc_debug("binding to CPU%d\n", i);
+    if (set_cpubind(topology, set, HWLOC_CPUBIND_STRICT)) {
+      hwloc_debug("could not bind to CPU%d: %s\n", i, strerror(errno));
+      continue;
+    }
+    look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, features, cpuid_type);
+  }
+
+  set_cpubind(topology, orig_cpuset, 0);
+  hwloc_bitmap_free(set);
+  hwloc_bitmap_free(orig_cpuset);
+
+  summarize(topology, infos, nbprocs, fulldiscovery);
+  return fulldiscovery; /* success, but objects added only if fulldiscovery */
+}
+
 #if defined HWLOC_FREEBSD_SYS && defined HAVE_CPUSET_SETID
 #include <sys/param.h>
 #include <sys/cpuset.h>
@@ -714,11 +779,24 @@ static void hwloc_x86_os_state_restore(hwloc_x86_os_state_t *state __hwloc_attri
 #define AMD_EDX ('e' | ('n'<<8) | ('t'<<16) | ('i'<<24))
 #define AMD_ECX ('c' | ('A'<<8) | ('M'<<16) | ('D'<<24))
 
+/* fake cpubind for when nbprocs=1 and no binding support */
+static int fake_get_cpubind(hwloc_topology_t topology __hwloc_attribute_unused,
+			    hwloc_cpuset_t set __hwloc_attribute_unused,
+			    int flags __hwloc_attribute_unused)
+{
+  return 0;
+}
+static int fake_set_cpubind(hwloc_topology_t topology __hwloc_attribute_unused,
+			    hwloc_const_cpuset_t set __hwloc_attribute_unused,
+			    int flags __hwloc_attribute_unused)
+{
+  return 0;
+}
+
 static
 int hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs, int fulldiscovery)
 {
   unsigned eax, ebx, ecx = 0, edx;
-  hwloc_bitmap_t orig_cpuset;
   unsigned i;
   unsigned highest_cpuid;
   unsigned highest_ext_cpuid;
@@ -730,17 +808,29 @@ int hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs, int fulldi
   struct hwloc_binding_hooks hooks;
   struct hwloc_topology_support support;
   struct hwloc_topology_membind_support memsupport __hwloc_attribute_unused;
+  int (*get_cpubind)(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
+  int (*set_cpubind)(hwloc_topology_t topology, hwloc_const_cpuset_t set, int flags);
   int ret = -1;
 
+  /* check if binding works */
   memset(&hooks, 0, sizeof(hooks));
   support.membind = &memsupport;
   hwloc_set_native_binding_hooks(&hooks, &support);
-  if (nbprocs > 1 &&
-      !(hooks.get_thisproc_cpubind && hooks.set_thisproc_cpubind)
-   && !(hooks.get_thisthread_cpubind && hooks.set_thisthread_cpubind))
-    goto out;
+  if (hooks.get_thisproc_cpubind && hooks.set_thisproc_cpubind) {
+    get_cpubind = hooks.get_thisproc_cpubind;
+    set_cpubind = hooks.set_thisproc_cpubind;
+  } else if (hooks.get_thisthread_cpubind && hooks.set_thisthread_cpubind) {
+    get_cpubind = hooks.get_thisthread_cpubind;
+    set_cpubind = hooks.set_thisthread_cpubind;
+  } else {
+    /* we need binding support if there are multiple PUs */
+    if (nbprocs > 1)
+      goto out;
+    get_cpubind = fake_get_cpubind;
+    set_cpubind = fake_set_cpubind;
+  }
 
-  if (!hwloc_have_cpuid())
+  if (!hwloc_have_x86_cpuid())
     goto out;
 
   infos = calloc(nbprocs, sizeof(struct procinfo));
@@ -755,7 +845,7 @@ int hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs, int fulldi
   }
 
   eax = 0x00;
-  hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+  hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
   highest_cpuid = eax;
   if (ebx == INTEL_EBX && ecx == INTEL_ECX && edx == INTEL_EDX)
     cpuid_type = intel;
@@ -768,83 +858,45 @@ int hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs, int fulldi
   }
 
   eax = 0x01;
-  hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+  hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
   features[0] = edx;
   features[4] = ecx;
 
   eax = 0x80000000;
-  hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+  hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
   highest_ext_cpuid = eax;
 
   hwloc_debug("highest extended cpuid %x\n", highest_ext_cpuid);
 
   if (highest_cpuid >= 0x7) {
     eax = 0x7;
-    hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+    hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
     features[9] = ebx;
   }
 
   if (cpuid_type != intel && highest_ext_cpuid >= 0x80000001) {
     eax = 0x80000001;
-    hwloc_cpuid(&eax, &ebx, &ecx, &edx);
+    hwloc_x86_cpuid(&eax, &ebx, &ecx, &edx);
     features[1] = edx;
     features[6] = ecx;
   }
 
   hwloc_x86_os_state_save(&os_state);
 
-  orig_cpuset = hwloc_bitmap_alloc();
-
-  if (hooks.get_thisthread_cpubind && hooks.set_thisthread_cpubind) {
-    if (!hooks.get_thisthread_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {
-      hwloc_bitmap_t set = hwloc_bitmap_alloc();
-      for (i = 0; i < nbprocs; i++) {
-        hwloc_bitmap_only(set, i);
-        hwloc_debug("binding to CPU%d\n", i);
-        if (hooks.set_thisthread_cpubind(topology, set, HWLOC_CPUBIND_STRICT)) {
-          hwloc_debug("could not bind to CPU%d: %s\n", i, strerror(errno));
-          continue;
-        }
-        look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, features, cpuid_type);
-      }
-      hwloc_bitmap_free(set);
-      hooks.set_thisthread_cpubind(topology, orig_cpuset, 0);
-      hwloc_bitmap_free(orig_cpuset);
-      summarize(topology, infos, nbprocs, fulldiscovery);
-      ret = fulldiscovery; /* success, but objects added only if fulldiscovery */
-      goto out_with_os_state;
-    }
-  }
-
-  if (hooks.get_thisproc_cpubind && hooks.set_thisproc_cpubind) {
-    if (!hooks.get_thisproc_cpubind(topology, orig_cpuset, HWLOC_CPUBIND_STRICT)) {
-      hwloc_bitmap_t set = hwloc_bitmap_alloc();
-      for (i = 0; i < nbprocs; i++) {
-        hwloc_bitmap_only(set, i);
-        hwloc_debug("binding to CPU%d\n", i);
-        if (hooks.set_thisproc_cpubind(topology, set, HWLOC_CPUBIND_STRICT)) {
-          hwloc_debug("could not bind to CPU%d: %s\n", i, strerror(errno));
-          continue;
-        }
-        look_proc(&infos[i], highest_cpuid, highest_ext_cpuid, features, cpuid_type);
-      }
-      hwloc_bitmap_free(set);
-      hooks.set_thisproc_cpubind(topology, orig_cpuset, 0);
-      hwloc_bitmap_free(orig_cpuset);
-      summarize(topology, infos, nbprocs, fulldiscovery);
-      ret = fulldiscovery; /* success, but objects added only if fulldiscovery */
-      goto out_with_os_state;
-    }
-  }
+  ret = look_procs(topology, nbprocs, infos, fulldiscovery,
+		   highest_cpuid, highest_ext_cpuid, features, cpuid_type,
+		   get_cpubind, set_cpubind);
+  if (ret >= 0)
+    /* success, we're done */
+    goto out_with_os_state;
 
   if (nbprocs == 1) {
+    /* only one processor, no need to bind */
     look_proc(&infos[0], highest_cpuid, highest_ext_cpuid, features, cpuid_type);
     summarize(topology, infos, nbprocs, fulldiscovery);
     ret = fulldiscovery;
   }
 
-  hwloc_bitmap_free(orig_cpuset);
-
 out_with_os_state:
   hwloc_x86_os_state_restore(&os_state);
 
@@ -896,6 +948,17 @@ fulldiscovery:
     hwloc_setup_pu_level(topology, nbprocs);
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "x86");
+
+#ifdef HAVE_UNAME
+  hwloc_add_uname_info(topology, NULL); /* we already know is_thissystem() is true */
+#else
+  /* uname isn't available, manually setup the "Architecture" info */
+#ifdef HWLOC_X86_64_ARCH
+  hwloc_obj_add_info(topology->levels[0][0], "Architecture", "x86_64");
+#else
+  hwloc_obj_add_info(topology->levels[0][0], "Architecture", "x86");
+#endif
+#endif
   return 1;
 }
 
@@ -906,6 +969,7 @@ hwloc_x86_component_instantiate(struct hwloc_disc_component *component,
 				const void *_data3 __hwloc_attribute_unused)
 {
   struct hwloc_backend *backend;
+
   backend = hwloc_backend_alloc(component);
   if (!backend)
     return NULL;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-libxml.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-libxml.c
index 99396dc..88348c9 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-libxml.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-libxml.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -230,7 +230,7 @@ hwloc_libxml_import_diff(const char *xmlpath, const char *xmlbuffer, int xmlbufl
     if (!errno)
       /* libxml2 read the file fine, but it got an error during parsing */
     errno = EINVAL;
-    return -1;
+    goto out;
   }
 
   dtd = xmlGetIntSubset(doc);
@@ -249,7 +249,7 @@ hwloc_libxml_import_diff(const char *xmlpath, const char *xmlbuffer, int xmlbufl
     /* root node should be in "topologydiff" class */
     if (hwloc__xml_verbose())
       fprintf(stderr, "ignoring object of class `%s' not at the top the xml hierarchy\n", (const char *) root_node->name);
-    goto failed;
+    goto out_with_doc;
   }
 
   state.next_attr = hwloc__libxml_import_next_attr;
@@ -271,7 +271,7 @@ hwloc_libxml_import_diff(const char *xmlpath, const char *xmlbuffer, int xmlbufl
       free(refname);
       refname = strdup(attrvalue);
     } else
-      return -1;
+      goto out_with_doc;
   }
 
   ret = hwloc__xml_import_diff(&state, firstdiffp);
@@ -280,9 +280,12 @@ hwloc_libxml_import_diff(const char *xmlpath, const char *xmlbuffer, int xmlbufl
   else
     free(refname);
 
+  xmlFreeDoc(doc);
   return ret;
 
- failed:
+out_with_doc:
+  xmlFreeDoc(doc);
+out:
   return -1; /* failed */
 }
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-nolibxml.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-nolibxml.c
index 874f857..6dc09ec 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-nolibxml.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml-nolibxml.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -17,7 +17,9 @@
 #include <assert.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
 
 /*******************
  * Import routines *
@@ -467,7 +469,7 @@ hwloc_nolibxml_import_diff(const char *xmlpath, const char *xmlbuffer, int xmlbu
       free(refname);
       refname = strdup(attrvalue);
     } else
-      return -1;
+      goto out_with_buffer;
   }
 
   ret = hwloc__xml_import_diff(&childstate, firstdiffp);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
index 40832a5..cf1d3a1 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -559,8 +559,7 @@ hwloc__xml_import_object(hwloc_topology_t topology,
     if (state->next_attr(state, &attrname, &attrvalue) < 0)
       break;
     if (!strcmp(attrname, "type")) {
-      obj->type = hwloc_obj_type_of_string(attrvalue);
-      if (obj->type == (hwloc_obj_type_t)-1)
+      if (hwloc_obj_type_sscanf(attrvalue, &obj->type, NULL, NULL, 0) < 0)
         return -1;
     } else {
       /* type needed first */
@@ -1406,7 +1405,7 @@ hwloc_export_obj_userdata_base64(void *reserved,
   hwloc__xml_export_state_t state = reserved;
   size_t encoded_length;
   char *encoded_buffer;
-  int ret __hwloc_attribute_unused;
+  int ret;
 
   if (name && hwloc__xml_export_check_buffer(name, strlen(name)) < 0) {
     errno = EINVAL;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
index 13fa361..d5d1c84 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -79,7 +79,7 @@ void hwloc_report_os_error(const char *msg, int line)
         fprintf(stderr, "*\n");
         fprintf(stderr, "* Please report this error message to the hwloc user's mailing list,\n");
 #ifdef HWLOC_LINUX_SYS
-        fprintf(stderr, "* along with the output from the hwloc-gather-topology.sh script.\n");
+        fprintf(stderr, "* along with the output from the hwloc-gather-topology script.\n");
 #else
 	fprintf(stderr, "* along with any relevant topology information from your platform.\n");
 #endif
@@ -259,32 +259,87 @@ print_objects(struct hwloc_topology *topology __hwloc_attribute_unused, int inde
 #endif
 }
 
-void hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value)
+void hwloc__free_infos(struct hwloc_obj_info_s *infos, unsigned count)
+{
+  unsigned i;
+  for(i=0; i<count; i++) {
+    free(infos[i].name);
+    free(infos[i].value);
+  }
+  free(infos);
+}
+
+void hwloc__add_info(struct hwloc_obj_info_s **infosp, unsigned *countp, const char *name, const char *value)
 {
+  unsigned count = *countp;
+  struct hwloc_obj_info_s *infos = *infosp;
 #define OBJECT_INFO_ALLOC 8
   /* nothing allocated initially, (re-)allocate by multiple of 8 */
-  unsigned alloccount = (obj->infos_count + 1 + (OBJECT_INFO_ALLOC-1)) & ~(OBJECT_INFO_ALLOC-1);
-  if (obj->infos_count != alloccount)
-    obj->infos = realloc(obj->infos, alloccount*sizeof(*obj->infos));
-  obj->infos[obj->infos_count].name = strdup(name);
-  obj->infos[obj->infos_count].value = strdup(value);
-  obj->infos_count++;
+  unsigned alloccount = (count + 1 + (OBJECT_INFO_ALLOC-1)) & ~(OBJECT_INFO_ALLOC-1);
+  if (count != alloccount)
+    infos = realloc(infos, alloccount*sizeof(*infos));
+  infos[count].name = strdup(name);
+  infos[count].value = value ? strdup(value) : NULL;
+  *infosp = infos;
+  *countp = count+1;
+}
+
+char ** hwloc__find_info_slot(struct hwloc_obj_info_s **infosp, unsigned *countp, const char *name)
+{
+  unsigned i;
+  for(i=0; i<*countp; i++) {
+    if (!strcmp((*infosp)[i].name, name))
+      return &(*infosp)[i].value;
+  }
+  hwloc__add_info(infosp, countp, name, NULL);
+  return &(*infosp)[*countp-1].value;
+}
+
+void hwloc__move_infos(struct hwloc_obj_info_s **dst_infosp, unsigned *dst_countp,
+		       struct hwloc_obj_info_s **src_infosp, unsigned *src_countp)
+{
+  unsigned dst_count = *dst_countp;
+  struct hwloc_obj_info_s *dst_infos = *dst_infosp;
+  unsigned src_count = *src_countp;
+  struct hwloc_obj_info_s *src_infos = *src_infosp;
+  unsigned i;
+#define OBJECT_INFO_ALLOC 8
+  /* nothing allocated initially, (re-)allocate by multiple of 8 */
+  unsigned alloccount = (dst_count + src_count + (OBJECT_INFO_ALLOC-1)) & ~(OBJECT_INFO_ALLOC-1);
+  if (dst_count != alloccount)
+    dst_infos = realloc(dst_infos, alloccount*sizeof(*dst_infos));
+  for(i=0; i<src_count; i++, dst_count++) {
+    dst_infos[dst_count].name = src_infos[i].name;
+    dst_infos[dst_count].value = src_infos[i].value;
+  }
+  *dst_infosp = dst_infos;
+  *dst_countp = dst_count;
+  free(src_infos);
+  *src_infosp = NULL;
+  *src_countp = 0;
+}
+
+void hwloc_obj_add_info(hwloc_obj_t obj, const char *name, const char *value)
+{
+  hwloc__add_info(&obj->infos, &obj->infos_count, name, value);
+}
+
+void hwloc_obj_add_info_nodup(hwloc_obj_t obj, const char *name, const char *value, int nodup)
+{
+  if (nodup && hwloc_obj_get_info_by_name(obj, name))
+    return;
+  hwloc__add_info(&obj->infos, &obj->infos_count, name, value);
 }
 
 /* Free an object and all its content.  */
 void
 hwloc_free_unlinked_object(hwloc_obj_t obj)
 {
-  unsigned i;
   switch (obj->type) {
   default:
     break;
   }
-  for(i=0; i<obj->infos_count; i++) {
-    free(obj->infos[i].name);
-    free(obj->infos[i].value);
-  }
-  free(obj->infos);
+  hwloc__free_infos(obj->infos, obj->infos_count);
   hwloc_clear_object_distances(obj);
   free(obj->memory.page_types);
   free(obj->attr);
@@ -334,7 +389,7 @@ hwloc__duplicate_object(struct hwloc_obj *newobj,
   /* don't duplicate distances, they'll be recreated at the end of the topology build */
 
   for(i=0; i<src->infos_count; i++)
-    hwloc_obj_add_info(newobj, src->infos[i].name, src->infos[i].value);
+    hwloc__add_info(&newobj->infos, &newobj->infos_count, src->infos[i].name, src->infos[i].value);
 }
 
 void
@@ -697,28 +752,35 @@ hwloc_obj_cmp(hwloc_obj_t obj1, hwloc_obj_t obj2)
   }
 }
 
-/* format must contain a single %s where to print obj infos */
+/* Compare object cpusets based on complete_cpuset if defined (always correctly ordered),
+ * or fallback to the main cpusets (only correctly ordered during early insert before disallowed/offline bits are cleared).
+ *
+ * This is the sane way to compare object among a horizontal level.
+ */
+static int
+hwloc__object_cpusets_compare_first(hwloc_obj_t obj1, hwloc_obj_t obj2)
+{
+  if (obj1->complete_cpuset && obj2->complete_cpuset)
+    return hwloc_bitmap_compare_first(obj1->complete_cpuset, obj2->complete_cpuset);
+  else
+    return hwloc_bitmap_compare_first(obj1->cpuset, obj2->cpuset);
+}
+
+/* format the obj info to print in error messages */
 static void
-hwloc___insert_object_by_cpuset_report_error(hwloc_report_error_t report_error, const char *fmt, hwloc_obj_t obj, int line)
+hwloc__report_error_format_obj(char *buf, size_t buflen, hwloc_obj_t obj)
 {
 	char typestr[64];
-	char objstr[512];
-	char msg[640];
 	char *cpusetstr;
-
 	hwloc_obj_type_snprintf(typestr, sizeof(typestr), obj, 0);
 	hwloc_bitmap_asprintf(&cpusetstr, obj->cpuset);
 	if (obj->os_index != (unsigned) -1)
-	  snprintf(objstr, sizeof(objstr), "%s P#%u cpuset %s",
+	  snprintf(buf, buflen, "%s (P#%u cpuset %s)",
 		   typestr, obj->os_index, cpusetstr);
 	else
-	  snprintf(objstr, sizeof(objstr), "%s cpuset %s",
+	  snprintf(buf, buflen, "%s (cpuset %s)",
 		   typestr, cpusetstr);
 	free(cpusetstr);
-
-	snprintf(msg, sizeof(msg), fmt,
-		 objstr);
-	report_error(msg, line);
 }
 
 /*
@@ -768,12 +830,22 @@ hwloc___insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t cur
       case HWLOC_OBJ_EQUAL:
         merge_index(obj, child, os_level, signed);
 	if (obj->os_level != child->os_level) {
-          fprintf(stderr, "Different OS level\n");
+	  static int reported = 0;
+	  if (!reported && !hwloc_hide_errors()) {
+	    fprintf(stderr, "Cannot merge similar %s objects with different OS levels %u and %u\n",
+		    hwloc_obj_type_string(obj->type), child->os_level, obj->os_level);
+	    reported = 1;
+	  }
           return NULL;
         }
         merge_index(obj, child, os_index, unsigned);
 	if (obj->os_index != child->os_index) {
-          fprintf(stderr, "Different OS indexes\n");
+	  static int reported = 0;
+	  if (!reported && !hwloc_hide_errors()) {
+	    fprintf(stderr, "Cannot merge similar %s objects with different OS indexes %u and %u\n",
+		    hwloc_obj_type_string(obj->type), child->os_index, obj->os_index);
+	    reported = 1;
+	  }
           return NULL;
         }
 	if (obj->distances_count) {
@@ -840,8 +912,17 @@ hwloc___insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t cur
 	return child;
       case HWLOC_OBJ_INCLUDED:
 	if (container) {
-          if (report_error)
-	    hwloc___insert_object_by_cpuset_report_error(report_error, "object (%s) included in several different objects!", obj, __LINE__);
+          if (report_error) {
+	    char containerstr[512];
+	    char childstr[512];
+	    char objstr[512];
+	    char msg[2048];
+	    hwloc__report_error_format_obj(containerstr, sizeof(containerstr), container);
+	    hwloc__report_error_format_obj(childstr, sizeof(childstr), child);
+	    hwloc__report_error_format_obj(objstr, sizeof(objstr), obj);
+	    snprintf(msg, sizeof(msg), "%s included in both %s and %s!", objstr, containerstr, childstr);
+	    report_error(msg, __LINE__);
+	  }
 	  /* We can't handle that.  */
 	  return NULL;
 	}
@@ -849,8 +930,15 @@ hwloc___insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t cur
 	container = child;
 	break;
       case HWLOC_OBJ_INTERSECTS:
-        if (report_error)
-          hwloc___insert_object_by_cpuset_report_error(report_error, "object (%s) intersection without inclusion!", obj, __LINE__);
+        if (report_error) {
+	  char childstr[512];
+	  char objstr[512];
+	  char msg[1024];
+	  hwloc__report_error_format_obj(objstr, sizeof(objstr), obj);
+	  hwloc__report_error_format_obj(childstr, sizeof(childstr), child);
+	  snprintf(msg, sizeof(msg), "%s intersects with %s without inclusion!", objstr, childstr);
+	  report_error(msg, __LINE__);
+	}
 	/* We can't handle that.  */
 	return NULL;
       case HWLOC_OBJ_CONTAINS:
@@ -891,7 +979,7 @@ hwloc___insert_object_by_cpuset(struct hwloc_topology *topology, hwloc_obj_t cur
 
       case HWLOC_OBJ_DIFFERENT:
 	/* Leave CHILD in CUR.  */
-	if (!put && (!child->cpuset || hwloc_bitmap_compare_first(obj->cpuset, child->cpuset) < 0)) {
+	if (!put && (!child->cpuset || hwloc__object_cpusets_compare_first(obj, child) < 0)) {
 	  /* Sort children by cpuset: put OBJ before CHILD in CUR's children.  */
 	  *cur_children = obj;
 	  cur_children = &obj->next_sibling;
@@ -964,24 +1052,22 @@ hwloc_insert_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t paren
   /* Append to the end of the list */
   for (current = &parent->first_child; *current; current = &(*current)->next_sibling) {
     hwloc_bitmap_t curcpuset = (*current)->cpuset;
-    if (obj->cpuset && (!curcpuset || hwloc_bitmap_compare_first(obj->cpuset, curcpuset) < 0)) {
+    if (obj->cpuset && (!curcpuset || hwloc__object_cpusets_compare_first(obj, *current) < 0)) {
       static int reported = 0;
       if (!reported && !hwloc_hide_errors()) {
-	char *a, *b;
+	char *a = "NULL", *b;
+	if (curcpuset)
+	  hwloc_bitmap_asprintf(&a, curcpuset);
 	hwloc_bitmap_asprintf(&b, obj->cpuset);
         fprintf(stderr, "****************************************************************************\n");
         fprintf(stderr, "* hwloc has encountered an out-of-order topology discovery.\n");
-	if (curcpuset) {
-	  hwloc_bitmap_asprintf(&a, curcpuset);
-	  fprintf(stderr, "* An object with cpuset %s was inserted after object with %s\n", b, a);
-	  free(a);
-	} else {
-	  fprintf(stderr, "* An object with cpuset %s was inserted after object with NULL\n", b);
-	}
+        fprintf(stderr, "* An object with (complete) cpuset %s was inserted after object with %s\n", b, a);
         fprintf(stderr, "* Please check that your input topology (XML file, etc.) is valid.\n");
         fprintf(stderr, "****************************************************************************\n");
+	if (curcpuset)
+	  free(a);
 	free(b);
-        reported = 1;
+	reported = 1;
       }
     }
   }
@@ -1583,7 +1669,7 @@ remove_ignored(hwloc_topology_t topology, hwloc_obj_t *pparent)
       prev = &parent->first_child;
       while (*prev
 	     && (!child->cpuset || !(*prev)->cpuset
-		 || hwloc_bitmap_compare_first(child->cpuset, (*prev)->cpuset) > 0))
+		 || hwloc__object_cpusets_compare_first(child, *prev) > 0))
 	prev = &((*prev)->next_sibling);
       /* enqueue */
       child->next_sibling = *prev;
@@ -2913,7 +2999,6 @@ hwloc_topology_get_depth(struct hwloc_topology *topology)
 static void
 hwloc__check_children(struct hwloc_obj *parent)
 {
-  hwloc_bitmap_t remaining_parent_set;
   unsigned j;
 
   if (!parent->arity) {
@@ -2938,30 +3023,39 @@ hwloc__check_children(struct hwloc_obj *parent)
   assert(parent->last_child == parent->children[parent->arity-1]);
   assert(parent->last_child->next_sibling == NULL);
 
+  /* check that parent->cpuset == exclusive OR of children
+   * (can be wrong for complete_cpuset since disallowed/offline/unknown PUs can be removed)
+   */
   if (parent->cpuset) {
-    remaining_parent_set = hwloc_bitmap_dup(parent->cpuset);
+    hwloc_bitmap_t remaining_parent_set = hwloc_bitmap_dup(parent->cpuset);
     for(j=0; j<parent->arity; j++) {
       if (!parent->children[j]->cpuset)
 	continue;
-      /* check that child cpuset is included in the parent */
+      /* check that child cpuset is included in the reminder of the parent */
       assert(hwloc_bitmap_isincluded(parent->children[j]->cpuset, remaining_parent_set));
-#if !defined(NDEBUG)
-      /* check that children are correctly ordered (see below), empty ones may be anywhere */
-      if (!hwloc_bitmap_iszero(parent->children[j]->cpuset)) {
-        int firstchild = hwloc_bitmap_first(parent->children[j]->cpuset);
-        int firstparent = hwloc_bitmap_first(remaining_parent_set);
-        assert(firstchild == firstparent);
-      }
-#endif
-      /* clear previously used parent cpuset bits so that we actually checked above
-       * that children cpusets do not intersect and are ordered properly
-       */
       hwloc_bitmap_andnot(remaining_parent_set, remaining_parent_set, parent->children[j]->cpuset);
     }
     assert(hwloc_bitmap_iszero(remaining_parent_set));
     hwloc_bitmap_free(remaining_parent_set);
   }
 
+  /* check that children complete_cpuset are properly ordered, empty ones may be anywhere
+   * (can be wrong for main cpuset since removed PUs can break the ordering).
+   */
+  if (parent->complete_cpuset) {
+    int firstchild;
+    int prev_firstchild = -1; /* -1 works fine with first comparisons below */
+    for(j=0; j<parent->arity; j++) {
+      if (!parent->children[j]->complete_cpuset
+	  || hwloc_bitmap_iszero(parent->children[j]->complete_cpuset))
+	continue;
+
+      firstchild = hwloc_bitmap_first(parent->children[j]->complete_cpuset);
+      assert(prev_firstchild < firstchild);
+      prev_firstchild = firstchild;
+    }
+  }
+
   /* checks for all children */
   for(j=1; j<parent->arity; j++) {
     assert(parent->children[j]->parent == parent);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c b/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c
index 40f1263..91b0c22 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2012 inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -213,6 +213,74 @@ hwloc_obj_type_of_string (const char * string)
   return (hwloc_obj_type_t) -1;
 }
 
+int
+hwloc_obj_type_sscanf(const char *string, hwloc_obj_type_t *typep, int *depthattrp, void *typeattrp, size_t typeattrsize)
+{
+  hwloc_obj_type_t type = (hwloc_obj_type_t) -1;
+  int depthattr = -1;
+  hwloc_obj_cache_type_t cachetypeattr = (hwloc_obj_cache_type_t) -1; /* unspecified */
+  char *end;
+
+  /* types without depthattr */
+  if (!hwloc_strncasecmp(string, "system", 2)) {
+    type = HWLOC_OBJ_SYSTEM;
+  } else if (!hwloc_strncasecmp(string, "machine", 2)) {
+    type = HWLOC_OBJ_MACHINE;
+  } else if (!hwloc_strncasecmp(string, "node", 1)
+	     || !hwloc_strncasecmp(string, "numa", 1)) { /* matches node and numanode */
+    type = HWLOC_OBJ_NODE;
+  } else if (!hwloc_strncasecmp(string, "socket", 2)) {
+    type = HWLOC_OBJ_SOCKET;
+  } else if (!hwloc_strncasecmp(string, "core", 2)) {
+    type = HWLOC_OBJ_CORE;
+  } else if (!hwloc_strncasecmp(string, "pu", 2)) {
+    type = HWLOC_OBJ_PU;
+  } else if (!hwloc_strncasecmp(string, "misc", 2)) {
+    type = HWLOC_OBJ_MISC;
+  } else if (!hwloc_strncasecmp(string, "bridge", 2)) {
+    type = HWLOC_OBJ_BRIDGE;
+  } else if (!hwloc_strncasecmp(string, "pci", 2)) {
+    type = HWLOC_OBJ_PCI_DEVICE;
+  } else if (!hwloc_strncasecmp(string, "os", 2)) {
+    type = HWLOC_OBJ_OS_DEVICE;
+
+  /* types with depthattr */
+  } else if (!hwloc_strncasecmp(string, "cache", 2)) {
+    type = HWLOC_OBJ_CACHE;
+
+  } else if ((string[0] == 'l' || string[0] == 'L') && string[1] >= '0' && string[1] <= '9') {
+    type = HWLOC_OBJ_CACHE;
+    depthattr = strtol(string+1, &end, 10);
+    if (*end == 'd') {
+      cachetypeattr = HWLOC_OBJ_CACHE_DATA;
+    } else if (*end == 'i') {
+      cachetypeattr = HWLOC_OBJ_CACHE_INSTRUCTION;
+    } else if (*end == 'u') {
+      cachetypeattr = HWLOC_OBJ_CACHE_UNIFIED;
+    }
+
+  } else if (!hwloc_strncasecmp(string, "group", 2)) {
+    int length;
+    type = HWLOC_OBJ_GROUP;
+    length = strcspn(string, "0123456789");
+    if (length <= 5 && !hwloc_strncasecmp(string, "group", length)
+	&& string[length] >= '0' && string[length] <= '9') {
+      depthattr = strtol(string+length, &end, 10);
+    }
+  } else
+    return -1;
+
+  *typep = type;
+  if (depthattrp)
+    *depthattrp = depthattr;
+  if (typeattrp) {
+    if (type == HWLOC_OBJ_CACHE && sizeof(hwloc_obj_cache_type_t) <= typeattrsize)
+      memcpy(typeattrp, &cachetypeattr, sizeof(hwloc_obj_cache_type_t));
+  }
+
+  return 0;
+}
+
 static const char *
 hwloc_pci_class_string(unsigned short class_id)
 {
@@ -458,10 +526,10 @@ hwloc_obj_attr_snprintf(char * __hwloc_restrict string, size_t size, hwloc_obj_t
     if (obj->memory.local_memory)
       res = hwloc_snprintf(tmp, tmplen, "%slocal=%lu%s%stotal=%lu%s",
 			   prefix,
-			   (unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose),
+			   (unsigned long) hwloc_memory_size_printf_value(obj->memory.local_memory, verbose),
 			   hwloc_memory_size_printf_unit(obj->memory.total_memory, verbose),
 			   separator,
-			   (unsigned long) hwloc_memory_size_printf_value(obj->memory.local_memory, verbose),
+			   (unsigned long) hwloc_memory_size_printf_value(obj->memory.total_memory, verbose),
 			   hwloc_memory_size_printf_unit(obj->memory.local_memory, verbose));
     else if (obj->memory.total_memory)
       res = hwloc_snprintf(tmp, tmplen, "%stotal=%lu%s",
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c
index 9717631..3875c1a 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c
@@ -1,8 +1,9 @@
 /*
- * Copyright © 2012-2013 Inria.  All rights reserved.
+ * Copyright © 2012-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
+#include <private/autogen/config.h> /* for HWLOC_WIN_SYS */
 #include <hwloc.h>
 
 #include <stdlib.h>
@@ -14,6 +15,10 @@
 #include <errno.h>
 #include <assert.h>
 
+#ifdef HWLOC_WIN_SYS
+#define mkstemp mktemp
+#endif
+
 /* mostly useful with valgrind, to check if backend cleanup properly */
 
 int main(void)
@@ -34,7 +39,7 @@ int main(void)
     printf("XML buffer export failed (%s), ignoring\n", strerror(errno));
   else
     xmlbufok = 1;
-  mktemp(xmlfile);
+  mkstemp(xmlfile);
   if (hwloc_topology_export_xml(topology1, xmlfile) < 0)
     printf("XML file export failed (%s), ignoring\n", strerror(errno));
   else
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c
index 26655d2..157c279 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2011 inria.  All rights reserved.
+ * Copyright © 2011-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -18,7 +18,7 @@ int main(void)
 
   printf("Loading the local topology...\n");
   hwloc_topology_init(&local);
-  hwloc_topology_set_synthetic(local, "n:2 s:2 ca:1 core:2 ca:2 pu:2");
+  hwloc_topology_set_synthetic(local, "node:2 socket:2 cache:1 core:2 cache:2 pu:2");
   hwloc_topology_load(local);
 
   printf("Try to create an empty custom topology...\n");
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c
index 633465e..a6ad9f7 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c
@@ -8,7 +8,6 @@
 #include <string.h>
 #include <errno.h>
 
-#include <private/autogen/config.h> /* for HWLOC_WIN_SYS */
 #include <hwloc.h>
 
 hwloc_topology_t topology;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c
index 8b35f77..af86624 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -30,7 +30,7 @@ main (void)
   if (err)
     return EXIT_FAILURE;
 
-  hwloc_topology_set_synthetic (topology, "node:3 socket:3 core:3 proc:3");
+  hwloc_topology_set_synthetic (topology, "node:3 socket:3 core:3 pu:3");
 
   err = hwloc_topology_load (topology);
   if (err)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c
index 5f92e0c..2fd24d9 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c
@@ -81,7 +81,6 @@ static void import_cb(hwloc_topology_t topo __hwloc_attribute_unused, hwloc_obj_
 
   } else if (!strncmp("Encoded", name, 7)) {
     unsigned i = atoi(name+7);
-    assert(i >= 0);
     assert(i <= RANDOMSTRINGTESTS-1);
     assert(RANDOMSTRINGLENGTH-i == (unsigned) length);
     err = memcmp(buffer, randomstring+(i+1)/2, length);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.output
similarity index 59%
rename from src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output
rename to src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.output
index a632b8c..a8800ba 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.output
@@ -1,73 +1,60 @@
-Machine (P#0 Backend=Linux)
+Machine (P#0 Backend=Linux LinuxCgroup=/prout)
   Socket L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
     L3Cache L#0 (size=4096KB linesize=64 ways=16)
       L2Cache L#0 (size=1024KB linesize=64 ways=8)
         L1dCache L#0 (size=16KB linesize=64 ways=8)
-          Core L#0 (P#0)
-            PU L#0 (P#0)
-        L1dCache L#1 (size=16KB linesize=64 ways=8)
-          Core L#1 (P#2)
-            PU L#1 (P#8)
+          Core L#0 (P#2)
+            PU L#0 (P#8)
       L2Cache L#1 (size=1024KB linesize=64 ways=8)
-        L1dCache L#2 (size=16KB linesize=64 ways=8)
-          Core L#2 (P#1)
-            PU L#2 (P#4)
-        L1dCache L#3 (size=16KB linesize=64 ways=8)
-          Core L#3 (P#3)
-            PU L#3 (P#12)
+        L1dCache L#1 (size=16KB linesize=64 ways=8)
+          Core L#1 (P#1)
+            PU L#1 (P#4)
   Socket L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
     L3Cache L#1 (size=4096KB linesize=64 ways=16)
       L2Cache L#2 (size=1024KB linesize=64 ways=8)
-        L1dCache L#4 (size=16KB linesize=64 ways=8)
-          Core L#4 (P#0)
-            PU L#4 (P#1)
-        L1dCache L#5 (size=16KB linesize=64 ways=8)
-          Core L#5 (P#2)
-            PU L#5 (P#9)
+        L1dCache L#2 (size=16KB linesize=64 ways=8)
+          Core L#2 (P#0)
+            PU L#2 (P#1)
+        L1dCache L#3 (size=16KB linesize=64 ways=8)
+          Core L#3 (P#2)
+            PU L#3 (P#9)
       L2Cache L#3 (size=1024KB linesize=64 ways=8)
-        L1dCache L#6 (size=16KB linesize=64 ways=8)
-          Core L#6 (P#1)
-            PU L#6 (P#5)
-        L1dCache L#7 (size=16KB linesize=64 ways=8)
-          Core L#7 (P#3)
-            PU L#7 (P#13)
+        L1dCache L#4 (size=16KB linesize=64 ways=8)
+          Core L#4 (P#1)
+            PU L#4 (P#5)
   Socket L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
     L3Cache L#2 (size=4096KB linesize=64 ways=16)
       L2Cache L#4 (size=1024KB linesize=64 ways=8)
+        L1dCache L#5 (size=16KB linesize=64 ways=8)
+          Core L#5 (P#0)
+            PU L#5 (P#2)
+        L1dCache L#6 (size=16KB linesize=64 ways=8)
+          Core L#6 (P#2)
+            PU L#6 (P#10)
+      L2Cache L#5 (size=1024KB linesize=64 ways=8)
+        L1dCache L#7 (size=16KB linesize=64 ways=8)
+          Core L#7 (P#1)
+            PU L#7 (P#6)
+  Socket L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#3 (size=4096KB linesize=64 ways=16)
+      L2Cache L#6 (size=1024KB linesize=64 ways=8)
         L1dCache L#8 (size=16KB linesize=64 ways=8)
           Core L#8 (P#0)
-            PU L#8 (P#2)
+            PU L#8 (P#3)
         L1dCache L#9 (size=16KB linesize=64 ways=8)
           Core L#9 (P#2)
-            PU L#9 (P#10)
-      L2Cache L#5 (size=1024KB linesize=64 ways=8)
+            PU L#9 (P#11)
+      L2Cache L#7 (size=1024KB linesize=64 ways=8)
         L1dCache L#10 (size=16KB linesize=64 ways=8)
           Core L#10 (P#1)
-            PU L#10 (P#6)
-        L1dCache L#11 (size=16KB linesize=64 ways=8)
-          Core L#11 (P#3)
-            PU L#11 (P#14)
-  Socket L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
-    L3Cache L#3 (size=4096KB linesize=64 ways=16)
-      L2Cache L#6 (size=1024KB linesize=64 ways=8)
-        L1dCache L#12 (size=16KB linesize=64 ways=8)
-          Core L#12 (P#0)
-            PU L#12 (P#3)
-        L1dCache L#13 (size=16KB linesize=64 ways=8)
-          Core L#13 (P#2)
-            PU L#13 (P#11)
-      L2Cache L#7 (size=1024KB linesize=64 ways=8)
-        L1dCache L#14 (size=16KB linesize=64 ways=8)
-          Core L#14 (P#1)
-            PU L#14 (P#7)
-        L1dCache L#15 (size=16KB linesize=64 ways=8)
-          Core L#15 (P#3)
-            PU L#15 (P#15)
+            PU L#10 (P#7)
 depth 0:	1 Machine (type #1)
  depth 1:	4 Socket (type #3)
   depth 2:	4 L3Cache (type #4)
    depth 3:	8 L2Cache (type #4)
-    depth 4:	16 L1dCache (type #4)
-     depth 5:	16 Core (type #5)
-      depth 6:	16 PU (type #6)
+    depth 4:	11 L1dCache (type #4)
+     depth 5:	11 Core (type #5)
+      depth 6:	11 PU (type #6)
+5 processors not represented in topology: 0x0000f001
+5 processors online but not allowed: 0x0000f001
 Topology not from this system
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2
new file mode 100644
index 0000000..c75cf41
Binary files /dev/null and b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2 differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2
deleted file mode 100644
index bfd7f0d..0000000
Binary files a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2 and /dev/null differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output
index f434882..83e8020 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output
@@ -1,14 +1,14 @@
-Machine (P#0 total=48346688KB Backend=Linux)
+Machine (P#0 total=48346688KB Backend=Linux Architecture=ia64)
   Group0 L#0 (total=24182720KB)
     NUMANode L#0 (P#0 local=6045632KB total=6045632KB)
-      Socket L#0 (P#0 CPUModel="Madison up to 9M cache")
+      Socket L#0 (P#0 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#0 (size=9216KB linesize=128 ways=18)
           L2Cache L#0 (size=256KB linesize=128 ways=8)
             L1dCache L#0 (size=16KB linesize=64 ways=4)
               L1iCache L#0 (size=16KB linesize=64 ways=4)
                 Core L#0 (P#0)
                   PU L#0 (P#0)
-      Socket L#1 (P#0 CPUModel="Madison up to 9M cache")
+      Socket L#1 (P#0 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#1 (size=9216KB linesize=128 ways=18)
           L2Cache L#1 (size=256KB linesize=128 ways=8)
             L1dCache L#1 (size=16KB linesize=64 ways=4)
@@ -16,14 +16,14 @@ Machine (P#0 total=48346688KB Backend=Linux)
                 Core L#1 (P#0)
                   PU L#1 (P#1)
     NUMANode L#1 (P#1 local=6045696KB total=6045696KB)
-      Socket L#2 (P#512 CPUModel="Madison up to 9M cache")
+      Socket L#2 (P#512 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#2 (size=9216KB linesize=128 ways=18)
           L2Cache L#2 (size=256KB linesize=128 ways=8)
             L1dCache L#2 (size=16KB linesize=64 ways=4)
               L1iCache L#2 (size=16KB linesize=64 ways=4)
                 Core L#2 (P#0)
                   PU L#2 (P#2)
-      Socket L#3 (P#512 CPUModel="Madison up to 9M cache")
+      Socket L#3 (P#512 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#3 (size=9216KB linesize=128 ways=18)
           L2Cache L#3 (size=256KB linesize=128 ways=8)
             L1dCache L#3 (size=16KB linesize=64 ways=4)
@@ -31,14 +31,14 @@ Machine (P#0 total=48346688KB Backend=Linux)
                 Core L#3 (P#0)
                   PU L#3 (P#3)
     NUMANode L#2 (P#2 local=6045696KB total=6045696KB)
-      Socket L#4 (P#1024 CPUModel="Madison up to 9M cache")
+      Socket L#4 (P#1024 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#4 (size=9216KB linesize=128 ways=18)
           L2Cache L#4 (size=256KB linesize=128 ways=8)
             L1dCache L#4 (size=16KB linesize=64 ways=4)
               L1iCache L#4 (size=16KB linesize=64 ways=4)
                 Core L#4 (P#0)
                   PU L#4 (P#4)
-      Socket L#5 (P#1024 CPUModel="Madison up to 9M cache")
+      Socket L#5 (P#1024 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#5 (size=9216KB linesize=128 ways=18)
           L2Cache L#5 (size=256KB linesize=128 ways=8)
             L1dCache L#5 (size=16KB linesize=64 ways=4)
@@ -46,14 +46,14 @@ Machine (P#0 total=48346688KB Backend=Linux)
                 Core L#5 (P#0)
                   PU L#5 (P#5)
     NUMANode L#3 (P#3 local=6045696KB total=6045696KB)
-      Socket L#6 (P#1536 CPUModel="Madison up to 9M cache")
+      Socket L#6 (P#1536 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#6 (size=9216KB linesize=128 ways=18)
           L2Cache L#6 (size=256KB linesize=128 ways=8)
             L1dCache L#6 (size=16KB linesize=64 ways=4)
               L1iCache L#6 (size=16KB linesize=64 ways=4)
                 Core L#6 (P#0)
                   PU L#6 (P#6)
-      Socket L#7 (P#1536 CPUModel="Madison up to 9M cache")
+      Socket L#7 (P#1536 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#7 (size=9216KB linesize=128 ways=18)
           L2Cache L#7 (size=256KB linesize=128 ways=8)
             L1dCache L#7 (size=16KB linesize=64 ways=4)
@@ -62,14 +62,14 @@ Machine (P#0 total=48346688KB Backend=Linux)
                   PU L#7 (P#7)
   Group0 L#1 (total=24163968KB)
     NUMANode L#4 (P#4 local=6045696KB total=6045696KB)
-      Socket L#8 (P#2048 CPUModel="Madison up to 9M cache")
+      Socket L#8 (P#2048 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#8 (size=9216KB linesize=128 ways=18)
           L2Cache L#8 (size=256KB linesize=128 ways=8)
             L1dCache L#8 (size=16KB linesize=64 ways=4)
               L1iCache L#8 (size=16KB linesize=64 ways=4)
                 Core L#8 (P#0)
                   PU L#8 (P#8)
-      Socket L#9 (P#2048 CPUModel="Madison up to 9M cache")
+      Socket L#9 (P#2048 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#9 (size=9216KB linesize=128 ways=18)
           L2Cache L#9 (size=256KB linesize=128 ways=8)
             L1dCache L#9 (size=16KB linesize=64 ways=4)
@@ -77,14 +77,14 @@ Machine (P#0 total=48346688KB Backend=Linux)
                 Core L#9 (P#0)
                   PU L#9 (P#9)
     NUMANode L#5 (P#5 local=6045632KB total=6045632KB)
-      Socket L#10 (P#2560 CPUModel="Madison up to 9M cache")
+      Socket L#10 (P#2560 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#10 (size=9216KB linesize=128 ways=18)
           L2Cache L#10 (size=256KB linesize=128 ways=8)
             L1dCache L#10 (size=16KB linesize=64 ways=4)
               L1iCache L#10 (size=16KB linesize=64 ways=4)
                 Core L#10 (P#0)
                   PU L#10 (P#10)
-      Socket L#11 (P#2560 CPUModel="Madison up to 9M cache")
+      Socket L#11 (P#2560 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#11 (size=9216KB linesize=128 ways=18)
           L2Cache L#11 (size=256KB linesize=128 ways=8)
             L1dCache L#11 (size=16KB linesize=64 ways=4)
@@ -92,14 +92,14 @@ Machine (P#0 total=48346688KB Backend=Linux)
                 Core L#11 (P#0)
                   PU L#11 (P#11)
     NUMANode L#6 (P#6 local=6045696KB total=6045696KB)
-      Socket L#12 (P#3072 CPUModel="Madison up to 9M cache")
+      Socket L#12 (P#3072 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#12 (size=9216KB linesize=128 ways=18)
           L2Cache L#12 (size=256KB linesize=128 ways=8)
             L1dCache L#12 (size=16KB linesize=64 ways=4)
               L1iCache L#12 (size=16KB linesize=64 ways=4)
                 Core L#12 (P#0)
                   PU L#12 (P#12)
-      Socket L#13 (P#3072 CPUModel="Madison up to 9M cache")
+      Socket L#13 (P#3072 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#13 (size=9216KB linesize=128 ways=18)
           L2Cache L#13 (size=256KB linesize=128 ways=8)
             L1dCache L#13 (size=16KB linesize=64 ways=4)
@@ -107,14 +107,14 @@ Machine (P#0 total=48346688KB Backend=Linux)
                 Core L#13 (P#0)
                   PU L#13 (P#13)
     NUMANode L#7 (P#7 local=6026944KB total=6026944KB)
-      Socket L#14 (P#3584 CPUModel="Madison up to 9M cache")
+      Socket L#14 (P#3584 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#14 (size=9216KB linesize=128 ways=18)
           L2Cache L#14 (size=256KB linesize=128 ways=8)
             L1dCache L#14 (size=16KB linesize=64 ways=4)
               L1iCache L#14 (size=16KB linesize=64 ways=4)
                 Core L#14 (P#0)
                   PU L#14 (P#14)
-      Socket L#15 (P#3584 CPUModel="Madison up to 9M cache")
+      Socket L#15 (P#3584 CPUVendor=GenuineIntel CPUFamilyNumber=31 CPUModelNumber=2 CPUModel="Madison up to 9M cache")
         L3Cache L#15 (size=9216KB linesize=128 ways=18)
           L2Cache L#15 (size=256KB linesize=128 ways=8)
             L1dCache L#15 (size=16KB linesize=64 ways=4)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2
index fa21b82..49382a6 100644
Binary files a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2 and b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2 differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output
index 4dc09f9..cea14d0 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output
@@ -1,4 +1,4 @@
-Machine (P#0 local=8299024KB total=8299024KB Backend=Linux)
+Machine (P#0 local=8299024KB total=8299024KB CPUModel=EV68CB Backend=Linux)
   PU L#0 (P#0)
 depth 0:	1 Machine (type #1)
  depth 1:	1 PU (type #6)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output
index 52645e0..c0ae841 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output
@@ -1,7 +1,7 @@
-Machine (P#0 total=516423680KB Backend=Linux)
+Machine (P#0 total=516423680KB PlatformName=pSeries PlatformModel="CHRP IBM,9179-MHB" Backend=Linux Architecture=ppc)
   Group0 L#0 (total=124780544KB)
     NUMANode L#0 (P#0 local=58458112KB total=58458112KB)
-      Socket L#0 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#0 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#0 (size=4096KB linesize=128)
           L2Cache L#0 (size=256KB linesize=128 ways=8)
             L1dCache L#0 (size=32KB linesize=128 ways=8)
@@ -11,7 +11,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#1 (P#1)
                   PU L#2 (P#2)
                   PU L#3 (P#3)
-      Socket L#1 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#1 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#1 (size=4096KB linesize=128)
           L2Cache L#1 (size=256KB linesize=128 ways=8)
             L1dCache L#1 (size=32KB linesize=128 ways=8)
@@ -21,7 +21,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#5 (P#5)
                   PU L#6 (P#6)
                   PU L#7 (P#7)
-      Socket L#2 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#2 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#2 (size=4096KB linesize=128)
           L2Cache L#2 (size=256KB linesize=128 ways=8)
             L1dCache L#2 (size=32KB linesize=128 ways=8)
@@ -31,7 +31,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#9 (P#9)
                   PU L#10 (P#10)
                   PU L#11 (P#11)
-      Socket L#3 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#3 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#3 (size=4096KB linesize=128)
           L2Cache L#3 (size=256KB linesize=128 ways=8)
             L1dCache L#3 (size=32KB linesize=128 ways=8)
@@ -41,7 +41,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#13 (P#13)
                   PU L#14 (P#14)
                   PU L#15 (P#15)
-      Socket L#4 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#4 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#4 (size=4096KB linesize=128)
           L2Cache L#4 (size=256KB linesize=128 ways=8)
             L1dCache L#4 (size=32KB linesize=128 ways=8)
@@ -51,7 +51,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#17 (P#17)
                   PU L#18 (P#18)
                   PU L#19 (P#19)
-      Socket L#5 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#5 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#5 (size=4096KB linesize=128)
           L2Cache L#5 (size=256KB linesize=128 ways=8)
             L1dCache L#5 (size=32KB linesize=128 ways=8)
@@ -61,7 +61,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#21 (P#21)
                   PU L#22 (P#22)
                   PU L#23 (P#23)
-      Socket L#6 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#6 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#6 (size=4096KB linesize=128)
           L2Cache L#6 (size=256KB linesize=128 ways=8)
             L1dCache L#6 (size=32KB linesize=128 ways=8)
@@ -71,7 +71,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#25 (P#25)
                   PU L#26 (P#26)
                   PU L#27 (P#27)
-      Socket L#7 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#7 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#7 (size=4096KB linesize=128)
           L2Cache L#7 (size=256KB linesize=128 ways=8)
             L1dCache L#7 (size=32KB linesize=128 ways=8)
@@ -82,7 +82,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#30 (P#30)
                   PU L#31 (P#31)
     NUMANode L#1 (P#1 local=66322432KB total=66322432KB)
-      Socket L#8 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#8 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#8 (size=4096KB linesize=128)
           L2Cache L#8 (size=256KB linesize=128 ways=8)
             L1dCache L#8 (size=32KB linesize=128 ways=8)
@@ -92,7 +92,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#33 (P#33)
                   PU L#34 (P#34)
                   PU L#35 (P#35)
-      Socket L#9 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#9 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#9 (size=4096KB linesize=128)
           L2Cache L#9 (size=256KB linesize=128 ways=8)
             L1dCache L#9 (size=32KB linesize=128 ways=8)
@@ -102,7 +102,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#37 (P#37)
                   PU L#38 (P#38)
                   PU L#39 (P#39)
-      Socket L#10 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#10 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#10 (size=4096KB linesize=128)
           L2Cache L#10 (size=256KB linesize=128 ways=8)
             L1dCache L#10 (size=32KB linesize=128 ways=8)
@@ -112,7 +112,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#41 (P#41)
                   PU L#42 (P#42)
                   PU L#43 (P#43)
-      Socket L#11 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#11 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#11 (size=4096KB linesize=128)
           L2Cache L#11 (size=256KB linesize=128 ways=8)
             L1dCache L#11 (size=32KB linesize=128 ways=8)
@@ -122,7 +122,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#45 (P#45)
                   PU L#46 (P#46)
                   PU L#47 (P#47)
-      Socket L#12 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#12 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#12 (size=4096KB linesize=128)
           L2Cache L#12 (size=256KB linesize=128 ways=8)
             L1dCache L#12 (size=32KB linesize=128 ways=8)
@@ -132,7 +132,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#49 (P#49)
                   PU L#50 (P#50)
                   PU L#51 (P#51)
-      Socket L#13 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#13 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#13 (size=4096KB linesize=128)
           L2Cache L#13 (size=256KB linesize=128 ways=8)
             L1dCache L#13 (size=32KB linesize=128 ways=8)
@@ -142,7 +142,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#53 (P#53)
                   PU L#54 (P#54)
                   PU L#55 (P#55)
-      Socket L#14 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#14 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#14 (size=4096KB linesize=128)
           L2Cache L#14 (size=256KB linesize=128 ways=8)
             L1dCache L#14 (size=32KB linesize=128 ways=8)
@@ -152,7 +152,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#57 (P#57)
                   PU L#58 (P#58)
                   PU L#59 (P#59)
-      Socket L#15 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#15 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#15 (size=4096KB linesize=128)
           L2Cache L#15 (size=256KB linesize=128 ways=8)
             L1dCache L#15 (size=32KB linesize=128 ways=8)
@@ -164,7 +164,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#63 (P#63)
   Group0 L#1 (total=133955584KB)
     NUMANode L#2 (P#4 local=66846720KB total=66846720KB)
-      Socket L#16 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#16 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#16 (size=4096KB linesize=128)
           L2Cache L#16 (size=256KB linesize=128 ways=8)
             L1dCache L#16 (size=32KB linesize=128 ways=8)
@@ -174,7 +174,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#65 (P#65)
                   PU L#66 (P#66)
                   PU L#67 (P#67)
-      Socket L#17 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#17 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#17 (size=4096KB linesize=128)
           L2Cache L#17 (size=256KB linesize=128 ways=8)
             L1dCache L#17 (size=32KB linesize=128 ways=8)
@@ -184,7 +184,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#69 (P#69)
                   PU L#70 (P#70)
                   PU L#71 (P#71)
-      Socket L#18 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#18 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#18 (size=4096KB linesize=128)
           L2Cache L#18 (size=256KB linesize=128 ways=8)
             L1dCache L#18 (size=32KB linesize=128 ways=8)
@@ -194,7 +194,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#73 (P#73)
                   PU L#74 (P#74)
                   PU L#75 (P#75)
-      Socket L#19 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#19 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#19 (size=4096KB linesize=128)
           L2Cache L#19 (size=256KB linesize=128 ways=8)
             L1dCache L#19 (size=32KB linesize=128 ways=8)
@@ -204,7 +204,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#77 (P#77)
                   PU L#78 (P#78)
                   PU L#79 (P#79)
-      Socket L#20 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#20 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#20 (size=4096KB linesize=128)
           L2Cache L#20 (size=256KB linesize=128 ways=8)
             L1dCache L#20 (size=32KB linesize=128 ways=8)
@@ -214,7 +214,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#81 (P#81)
                   PU L#82 (P#82)
                   PU L#83 (P#83)
-      Socket L#21 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#21 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#21 (size=4096KB linesize=128)
           L2Cache L#21 (size=256KB linesize=128 ways=8)
             L1dCache L#21 (size=32KB linesize=128 ways=8)
@@ -224,7 +224,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#85 (P#85)
                   PU L#86 (P#86)
                   PU L#87 (P#87)
-      Socket L#22 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#22 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#22 (size=4096KB linesize=128)
           L2Cache L#22 (size=256KB linesize=128 ways=8)
             L1dCache L#22 (size=32KB linesize=128 ways=8)
@@ -234,7 +234,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#89 (P#89)
                   PU L#90 (P#90)
                   PU L#91 (P#91)
-      Socket L#23 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#23 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#23 (size=4096KB linesize=128)
           L2Cache L#23 (size=256KB linesize=128 ways=8)
             L1dCache L#23 (size=32KB linesize=128 ways=8)
@@ -245,7 +245,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#94 (P#94)
                   PU L#95 (P#95)
     NUMANode L#3 (P#5 local=67108864KB total=67108864KB)
-      Socket L#24 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#24 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#24 (size=4096KB linesize=128)
           L2Cache L#24 (size=256KB linesize=128 ways=8)
             L1dCache L#24 (size=32KB linesize=128 ways=8)
@@ -255,7 +255,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#97 (P#97)
                   PU L#98 (P#98)
                   PU L#99 (P#99)
-      Socket L#25 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#25 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#25 (size=4096KB linesize=128)
           L2Cache L#25 (size=256KB linesize=128 ways=8)
             L1dCache L#25 (size=32KB linesize=128 ways=8)
@@ -265,7 +265,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#101 (P#101)
                   PU L#102 (P#102)
                   PU L#103 (P#103)
-      Socket L#26 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#26 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#26 (size=4096KB linesize=128)
           L2Cache L#26 (size=256KB linesize=128 ways=8)
             L1dCache L#26 (size=32KB linesize=128 ways=8)
@@ -275,7 +275,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#105 (P#105)
                   PU L#106 (P#106)
                   PU L#107 (P#107)
-      Socket L#27 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#27 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#27 (size=4096KB linesize=128)
           L2Cache L#27 (size=256KB linesize=128 ways=8)
             L1dCache L#27 (size=32KB linesize=128 ways=8)
@@ -285,7 +285,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#109 (P#109)
                   PU L#110 (P#110)
                   PU L#111 (P#111)
-      Socket L#28 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#28 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#28 (size=4096KB linesize=128)
           L2Cache L#28 (size=256KB linesize=128 ways=8)
             L1dCache L#28 (size=32KB linesize=128 ways=8)
@@ -295,7 +295,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#113 (P#113)
                   PU L#114 (P#114)
                   PU L#115 (P#115)
-      Socket L#29 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#29 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#29 (size=4096KB linesize=128)
           L2Cache L#29 (size=256KB linesize=128 ways=8)
             L1dCache L#29 (size=32KB linesize=128 ways=8)
@@ -305,7 +305,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#117 (P#117)
                   PU L#118 (P#118)
                   PU L#119 (P#119)
-      Socket L#30 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#30 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#30 (size=4096KB linesize=128)
           L2Cache L#30 (size=256KB linesize=128 ways=8)
             L1dCache L#30 (size=32KB linesize=128 ways=8)
@@ -315,7 +315,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#121 (P#121)
                   PU L#122 (P#122)
                   PU L#123 (P#123)
-      Socket L#31 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#31 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#31 (size=4096KB linesize=128)
           L2Cache L#31 (size=256KB linesize=128 ways=8)
             L1dCache L#31 (size=32KB linesize=128 ways=8)
@@ -327,7 +327,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#127 (P#127)
   Group0 L#2 (total=133955584KB)
     NUMANode L#4 (P#8 local=66846720KB total=66846720KB)
-      Socket L#32 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#32 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#32 (size=4096KB linesize=128)
           L2Cache L#32 (size=256KB linesize=128 ways=8)
             L1dCache L#32 (size=32KB linesize=128 ways=8)
@@ -337,7 +337,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#129 (P#129)
                   PU L#130 (P#130)
                   PU L#131 (P#131)
-      Socket L#33 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#33 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#33 (size=4096KB linesize=128)
           L2Cache L#33 (size=256KB linesize=128 ways=8)
             L1dCache L#33 (size=32KB linesize=128 ways=8)
@@ -347,7 +347,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#133 (P#133)
                   PU L#134 (P#134)
                   PU L#135 (P#135)
-      Socket L#34 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#34 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#34 (size=4096KB linesize=128)
           L2Cache L#34 (size=256KB linesize=128 ways=8)
             L1dCache L#34 (size=32KB linesize=128 ways=8)
@@ -357,7 +357,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#137 (P#137)
                   PU L#138 (P#138)
                   PU L#139 (P#139)
-      Socket L#35 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#35 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#35 (size=4096KB linesize=128)
           L2Cache L#35 (size=256KB linesize=128 ways=8)
             L1dCache L#35 (size=32KB linesize=128 ways=8)
@@ -367,7 +367,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#141 (P#141)
                   PU L#142 (P#142)
                   PU L#143 (P#143)
-      Socket L#36 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#36 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#36 (size=4096KB linesize=128)
           L2Cache L#36 (size=256KB linesize=128 ways=8)
             L1dCache L#36 (size=32KB linesize=128 ways=8)
@@ -377,7 +377,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#145 (P#145)
                   PU L#146 (P#146)
                   PU L#147 (P#147)
-      Socket L#37 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#37 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#37 (size=4096KB linesize=128)
           L2Cache L#37 (size=256KB linesize=128 ways=8)
             L1dCache L#37 (size=32KB linesize=128 ways=8)
@@ -387,7 +387,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#149 (P#149)
                   PU L#150 (P#150)
                   PU L#151 (P#151)
-      Socket L#38 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#38 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#38 (size=4096KB linesize=128)
           L2Cache L#38 (size=256KB linesize=128 ways=8)
             L1dCache L#38 (size=32KB linesize=128 ways=8)
@@ -397,7 +397,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#153 (P#153)
                   PU L#154 (P#154)
                   PU L#155 (P#155)
-      Socket L#39 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#39 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#39 (size=4096KB linesize=128)
           L2Cache L#39 (size=256KB linesize=128 ways=8)
             L1dCache L#39 (size=32KB linesize=128 ways=8)
@@ -408,7 +408,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#158 (P#158)
                   PU L#159 (P#159)
     NUMANode L#5 (P#9 local=67108864KB total=67108864KB)
-      Socket L#40 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#40 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#40 (size=4096KB linesize=128)
           L2Cache L#40 (size=256KB linesize=128 ways=8)
             L1dCache L#40 (size=32KB linesize=128 ways=8)
@@ -418,7 +418,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#161 (P#161)
                   PU L#162 (P#162)
                   PU L#163 (P#163)
-      Socket L#41 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#41 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#41 (size=4096KB linesize=128)
           L2Cache L#41 (size=256KB linesize=128 ways=8)
             L1dCache L#41 (size=32KB linesize=128 ways=8)
@@ -428,7 +428,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#165 (P#165)
                   PU L#166 (P#166)
                   PU L#167 (P#167)
-      Socket L#42 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#42 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#42 (size=4096KB linesize=128)
           L2Cache L#42 (size=256KB linesize=128 ways=8)
             L1dCache L#42 (size=32KB linesize=128 ways=8)
@@ -438,7 +438,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#169 (P#169)
                   PU L#170 (P#170)
                   PU L#171 (P#171)
-      Socket L#43 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#43 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#43 (size=4096KB linesize=128)
           L2Cache L#43 (size=256KB linesize=128 ways=8)
             L1dCache L#43 (size=32KB linesize=128 ways=8)
@@ -448,7 +448,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#173 (P#173)
                   PU L#174 (P#174)
                   PU L#175 (P#175)
-      Socket L#44 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#44 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#44 (size=4096KB linesize=128)
           L2Cache L#44 (size=256KB linesize=128 ways=8)
             L1dCache L#44 (size=32KB linesize=128 ways=8)
@@ -458,7 +458,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#177 (P#177)
                   PU L#178 (P#178)
                   PU L#179 (P#179)
-      Socket L#45 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#45 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#45 (size=4096KB linesize=128)
           L2Cache L#45 (size=256KB linesize=128 ways=8)
             L1dCache L#45 (size=32KB linesize=128 ways=8)
@@ -468,7 +468,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#181 (P#181)
                   PU L#182 (P#182)
                   PU L#183 (P#183)
-      Socket L#46 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#46 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#46 (size=4096KB linesize=128)
           L2Cache L#46 (size=256KB linesize=128 ways=8)
             L1dCache L#46 (size=32KB linesize=128 ways=8)
@@ -478,7 +478,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#185 (P#185)
                   PU L#186 (P#186)
                   PU L#187 (P#187)
-      Socket L#47 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#47 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#47 (size=4096KB linesize=128)
           L2Cache L#47 (size=256KB linesize=128 ways=8)
             L1dCache L#47 (size=32KB linesize=128 ways=8)
@@ -490,7 +490,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#191 (P#191)
   Group0 L#3 (total=123731968KB)
     NUMANode L#6 (P#12 local=66846720KB total=66846720KB)
-      Socket L#48 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#48 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#48 (size=4096KB linesize=128)
           L2Cache L#48 (size=256KB linesize=128 ways=8)
             L1dCache L#48 (size=32KB linesize=128 ways=8)
@@ -500,7 +500,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#193 (P#193)
                   PU L#194 (P#194)
                   PU L#195 (P#195)
-      Socket L#49 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#49 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#49 (size=4096KB linesize=128)
           L2Cache L#49 (size=256KB linesize=128 ways=8)
             L1dCache L#49 (size=32KB linesize=128 ways=8)
@@ -510,7 +510,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#197 (P#197)
                   PU L#198 (P#198)
                   PU L#199 (P#199)
-      Socket L#50 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#50 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#50 (size=4096KB linesize=128)
           L2Cache L#50 (size=256KB linesize=128 ways=8)
             L1dCache L#50 (size=32KB linesize=128 ways=8)
@@ -520,7 +520,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#201 (P#201)
                   PU L#202 (P#202)
                   PU L#203 (P#203)
-      Socket L#51 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#51 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#51 (size=4096KB linesize=128)
           L2Cache L#51 (size=256KB linesize=128 ways=8)
             L1dCache L#51 (size=32KB linesize=128 ways=8)
@@ -530,7 +530,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#205 (P#205)
                   PU L#206 (P#206)
                   PU L#207 (P#207)
-      Socket L#52 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#52 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#52 (size=4096KB linesize=128)
           L2Cache L#52 (size=256KB linesize=128 ways=8)
             L1dCache L#52 (size=32KB linesize=128 ways=8)
@@ -540,7 +540,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#209 (P#209)
                   PU L#210 (P#210)
                   PU L#211 (P#211)
-      Socket L#53 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#53 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#53 (size=4096KB linesize=128)
           L2Cache L#53 (size=256KB linesize=128 ways=8)
             L1dCache L#53 (size=32KB linesize=128 ways=8)
@@ -550,7 +550,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#213 (P#213)
                   PU L#214 (P#214)
                   PU L#215 (P#215)
-      Socket L#54 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#54 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#54 (size=4096KB linesize=128)
           L2Cache L#54 (size=256KB linesize=128 ways=8)
             L1dCache L#54 (size=32KB linesize=128 ways=8)
@@ -560,7 +560,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#217 (P#217)
                   PU L#218 (P#218)
                   PU L#219 (P#219)
-      Socket L#55 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#55 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#55 (size=4096KB linesize=128)
           L2Cache L#55 (size=256KB linesize=128 ways=8)
             L1dCache L#55 (size=32KB linesize=128 ways=8)
@@ -571,7 +571,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#222 (P#222)
                   PU L#223 (P#223)
     NUMANode L#7 (P#13 local=56885248KB total=56885248KB)
-      Socket L#56 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#56 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#56 (size=4096KB linesize=128)
           L2Cache L#56 (size=256KB linesize=128 ways=8)
             L1dCache L#56 (size=32KB linesize=128 ways=8)
@@ -581,7 +581,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#225 (P#225)
                   PU L#226 (P#226)
                   PU L#227 (P#227)
-      Socket L#57 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#57 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#57 (size=4096KB linesize=128)
           L2Cache L#57 (size=256KB linesize=128 ways=8)
             L1dCache L#57 (size=32KB linesize=128 ways=8)
@@ -591,7 +591,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#229 (P#229)
                   PU L#230 (P#230)
                   PU L#231 (P#231)
-      Socket L#58 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#58 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#58 (size=4096KB linesize=128)
           L2Cache L#58 (size=256KB linesize=128 ways=8)
             L1dCache L#58 (size=32KB linesize=128 ways=8)
@@ -601,7 +601,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#233 (P#233)
                   PU L#234 (P#234)
                   PU L#235 (P#235)
-      Socket L#59 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#59 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#59 (size=4096KB linesize=128)
           L2Cache L#59 (size=256KB linesize=128 ways=8)
             L1dCache L#59 (size=32KB linesize=128 ways=8)
@@ -611,7 +611,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#237 (P#237)
                   PU L#238 (P#238)
                   PU L#239 (P#239)
-      Socket L#60 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#60 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#60 (size=4096KB linesize=128)
           L2Cache L#60 (size=256KB linesize=128 ways=8)
             L1dCache L#60 (size=32KB linesize=128 ways=8)
@@ -621,7 +621,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#241 (P#241)
                   PU L#242 (P#242)
                   PU L#243 (P#243)
-      Socket L#61 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#61 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#61 (size=4096KB linesize=128)
           L2Cache L#61 (size=256KB linesize=128 ways=8)
             L1dCache L#61 (size=32KB linesize=128 ways=8)
@@ -631,7 +631,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#245 (P#245)
                   PU L#246 (P#246)
                   PU L#247 (P#247)
-      Socket L#62 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#62 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#62 (size=4096KB linesize=128)
           L2Cache L#62 (size=256KB linesize=128 ways=8)
             L1dCache L#62 (size=32KB linesize=128 ways=8)
@@ -641,7 +641,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#249 (P#249)
                   PU L#250 (P#250)
                   PU L#251 (P#251)
-      Socket L#63 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#63 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#63 (size=4096KB linesize=128)
           L2Cache L#63 (size=256KB linesize=128 ways=8)
             L1dCache L#63 (size=32KB linesize=128 ways=8)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output
index fc2cc46..9e4f1c9 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output
@@ -1,4 +1,4 @@
-Machine (P#0 local=514318208KB total=514318208KB Backend=Linux)
+Machine (P#0 local=514318208KB total=514318208KB PlatformName=pSeries PlatformModel="CHRP IBM,9179-MHB" Backend=Linux Architecture=ppc)
   L3Cache L#0 (size=4096KB linesize=128)
     L2Cache L#0 (size=256KB linesize=128 ways=8)
       L1dCache L#0 (size=32KB linesize=128 ways=8)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output
index 52645e0..c0ae841 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output
@@ -1,7 +1,7 @@
-Machine (P#0 total=516423680KB Backend=Linux)
+Machine (P#0 total=516423680KB PlatformName=pSeries PlatformModel="CHRP IBM,9179-MHB" Backend=Linux Architecture=ppc)
   Group0 L#0 (total=124780544KB)
     NUMANode L#0 (P#0 local=58458112KB total=58458112KB)
-      Socket L#0 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#0 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#0 (size=4096KB linesize=128)
           L2Cache L#0 (size=256KB linesize=128 ways=8)
             L1dCache L#0 (size=32KB linesize=128 ways=8)
@@ -11,7 +11,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#1 (P#1)
                   PU L#2 (P#2)
                   PU L#3 (P#3)
-      Socket L#1 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#1 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#1 (size=4096KB linesize=128)
           L2Cache L#1 (size=256KB linesize=128 ways=8)
             L1dCache L#1 (size=32KB linesize=128 ways=8)
@@ -21,7 +21,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#5 (P#5)
                   PU L#6 (P#6)
                   PU L#7 (P#7)
-      Socket L#2 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#2 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#2 (size=4096KB linesize=128)
           L2Cache L#2 (size=256KB linesize=128 ways=8)
             L1dCache L#2 (size=32KB linesize=128 ways=8)
@@ -31,7 +31,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#9 (P#9)
                   PU L#10 (P#10)
                   PU L#11 (P#11)
-      Socket L#3 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#3 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#3 (size=4096KB linesize=128)
           L2Cache L#3 (size=256KB linesize=128 ways=8)
             L1dCache L#3 (size=32KB linesize=128 ways=8)
@@ -41,7 +41,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#13 (P#13)
                   PU L#14 (P#14)
                   PU L#15 (P#15)
-      Socket L#4 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#4 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#4 (size=4096KB linesize=128)
           L2Cache L#4 (size=256KB linesize=128 ways=8)
             L1dCache L#4 (size=32KB linesize=128 ways=8)
@@ -51,7 +51,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#17 (P#17)
                   PU L#18 (P#18)
                   PU L#19 (P#19)
-      Socket L#5 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#5 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#5 (size=4096KB linesize=128)
           L2Cache L#5 (size=256KB linesize=128 ways=8)
             L1dCache L#5 (size=32KB linesize=128 ways=8)
@@ -61,7 +61,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#21 (P#21)
                   PU L#22 (P#22)
                   PU L#23 (P#23)
-      Socket L#6 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#6 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#6 (size=4096KB linesize=128)
           L2Cache L#6 (size=256KB linesize=128 ways=8)
             L1dCache L#6 (size=32KB linesize=128 ways=8)
@@ -71,7 +71,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#25 (P#25)
                   PU L#26 (P#26)
                   PU L#27 (P#27)
-      Socket L#7 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#7 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#7 (size=4096KB linesize=128)
           L2Cache L#7 (size=256KB linesize=128 ways=8)
             L1dCache L#7 (size=32KB linesize=128 ways=8)
@@ -82,7 +82,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#30 (P#30)
                   PU L#31 (P#31)
     NUMANode L#1 (P#1 local=66322432KB total=66322432KB)
-      Socket L#8 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#8 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#8 (size=4096KB linesize=128)
           L2Cache L#8 (size=256KB linesize=128 ways=8)
             L1dCache L#8 (size=32KB linesize=128 ways=8)
@@ -92,7 +92,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#33 (P#33)
                   PU L#34 (P#34)
                   PU L#35 (P#35)
-      Socket L#9 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#9 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#9 (size=4096KB linesize=128)
           L2Cache L#9 (size=256KB linesize=128 ways=8)
             L1dCache L#9 (size=32KB linesize=128 ways=8)
@@ -102,7 +102,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#37 (P#37)
                   PU L#38 (P#38)
                   PU L#39 (P#39)
-      Socket L#10 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#10 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#10 (size=4096KB linesize=128)
           L2Cache L#10 (size=256KB linesize=128 ways=8)
             L1dCache L#10 (size=32KB linesize=128 ways=8)
@@ -112,7 +112,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#41 (P#41)
                   PU L#42 (P#42)
                   PU L#43 (P#43)
-      Socket L#11 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#11 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#11 (size=4096KB linesize=128)
           L2Cache L#11 (size=256KB linesize=128 ways=8)
             L1dCache L#11 (size=32KB linesize=128 ways=8)
@@ -122,7 +122,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#45 (P#45)
                   PU L#46 (P#46)
                   PU L#47 (P#47)
-      Socket L#12 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#12 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#12 (size=4096KB linesize=128)
           L2Cache L#12 (size=256KB linesize=128 ways=8)
             L1dCache L#12 (size=32KB linesize=128 ways=8)
@@ -132,7 +132,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#49 (P#49)
                   PU L#50 (P#50)
                   PU L#51 (P#51)
-      Socket L#13 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#13 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#13 (size=4096KB linesize=128)
           L2Cache L#13 (size=256KB linesize=128 ways=8)
             L1dCache L#13 (size=32KB linesize=128 ways=8)
@@ -142,7 +142,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#53 (P#53)
                   PU L#54 (P#54)
                   PU L#55 (P#55)
-      Socket L#14 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#14 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#14 (size=4096KB linesize=128)
           L2Cache L#14 (size=256KB linesize=128 ways=8)
             L1dCache L#14 (size=32KB linesize=128 ways=8)
@@ -152,7 +152,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#57 (P#57)
                   PU L#58 (P#58)
                   PU L#59 (P#59)
-      Socket L#15 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#15 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#15 (size=4096KB linesize=128)
           L2Cache L#15 (size=256KB linesize=128 ways=8)
             L1dCache L#15 (size=32KB linesize=128 ways=8)
@@ -164,7 +164,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#63 (P#63)
   Group0 L#1 (total=133955584KB)
     NUMANode L#2 (P#4 local=66846720KB total=66846720KB)
-      Socket L#16 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#16 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#16 (size=4096KB linesize=128)
           L2Cache L#16 (size=256KB linesize=128 ways=8)
             L1dCache L#16 (size=32KB linesize=128 ways=8)
@@ -174,7 +174,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#65 (P#65)
                   PU L#66 (P#66)
                   PU L#67 (P#67)
-      Socket L#17 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#17 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#17 (size=4096KB linesize=128)
           L2Cache L#17 (size=256KB linesize=128 ways=8)
             L1dCache L#17 (size=32KB linesize=128 ways=8)
@@ -184,7 +184,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#69 (P#69)
                   PU L#70 (P#70)
                   PU L#71 (P#71)
-      Socket L#18 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#18 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#18 (size=4096KB linesize=128)
           L2Cache L#18 (size=256KB linesize=128 ways=8)
             L1dCache L#18 (size=32KB linesize=128 ways=8)
@@ -194,7 +194,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#73 (P#73)
                   PU L#74 (P#74)
                   PU L#75 (P#75)
-      Socket L#19 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#19 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#19 (size=4096KB linesize=128)
           L2Cache L#19 (size=256KB linesize=128 ways=8)
             L1dCache L#19 (size=32KB linesize=128 ways=8)
@@ -204,7 +204,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#77 (P#77)
                   PU L#78 (P#78)
                   PU L#79 (P#79)
-      Socket L#20 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#20 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#20 (size=4096KB linesize=128)
           L2Cache L#20 (size=256KB linesize=128 ways=8)
             L1dCache L#20 (size=32KB linesize=128 ways=8)
@@ -214,7 +214,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#81 (P#81)
                   PU L#82 (P#82)
                   PU L#83 (P#83)
-      Socket L#21 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#21 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#21 (size=4096KB linesize=128)
           L2Cache L#21 (size=256KB linesize=128 ways=8)
             L1dCache L#21 (size=32KB linesize=128 ways=8)
@@ -224,7 +224,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#85 (P#85)
                   PU L#86 (P#86)
                   PU L#87 (P#87)
-      Socket L#22 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#22 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#22 (size=4096KB linesize=128)
           L2Cache L#22 (size=256KB linesize=128 ways=8)
             L1dCache L#22 (size=32KB linesize=128 ways=8)
@@ -234,7 +234,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#89 (P#89)
                   PU L#90 (P#90)
                   PU L#91 (P#91)
-      Socket L#23 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#23 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#23 (size=4096KB linesize=128)
           L2Cache L#23 (size=256KB linesize=128 ways=8)
             L1dCache L#23 (size=32KB linesize=128 ways=8)
@@ -245,7 +245,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#94 (P#94)
                   PU L#95 (P#95)
     NUMANode L#3 (P#5 local=67108864KB total=67108864KB)
-      Socket L#24 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#24 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#24 (size=4096KB linesize=128)
           L2Cache L#24 (size=256KB linesize=128 ways=8)
             L1dCache L#24 (size=32KB linesize=128 ways=8)
@@ -255,7 +255,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#97 (P#97)
                   PU L#98 (P#98)
                   PU L#99 (P#99)
-      Socket L#25 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#25 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#25 (size=4096KB linesize=128)
           L2Cache L#25 (size=256KB linesize=128 ways=8)
             L1dCache L#25 (size=32KB linesize=128 ways=8)
@@ -265,7 +265,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#101 (P#101)
                   PU L#102 (P#102)
                   PU L#103 (P#103)
-      Socket L#26 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#26 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#26 (size=4096KB linesize=128)
           L2Cache L#26 (size=256KB linesize=128 ways=8)
             L1dCache L#26 (size=32KB linesize=128 ways=8)
@@ -275,7 +275,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#105 (P#105)
                   PU L#106 (P#106)
                   PU L#107 (P#107)
-      Socket L#27 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#27 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#27 (size=4096KB linesize=128)
           L2Cache L#27 (size=256KB linesize=128 ways=8)
             L1dCache L#27 (size=32KB linesize=128 ways=8)
@@ -285,7 +285,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#109 (P#109)
                   PU L#110 (P#110)
                   PU L#111 (P#111)
-      Socket L#28 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#28 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#28 (size=4096KB linesize=128)
           L2Cache L#28 (size=256KB linesize=128 ways=8)
             L1dCache L#28 (size=32KB linesize=128 ways=8)
@@ -295,7 +295,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#113 (P#113)
                   PU L#114 (P#114)
                   PU L#115 (P#115)
-      Socket L#29 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#29 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#29 (size=4096KB linesize=128)
           L2Cache L#29 (size=256KB linesize=128 ways=8)
             L1dCache L#29 (size=32KB linesize=128 ways=8)
@@ -305,7 +305,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#117 (P#117)
                   PU L#118 (P#118)
                   PU L#119 (P#119)
-      Socket L#30 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#30 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#30 (size=4096KB linesize=128)
           L2Cache L#30 (size=256KB linesize=128 ways=8)
             L1dCache L#30 (size=32KB linesize=128 ways=8)
@@ -315,7 +315,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#121 (P#121)
                   PU L#122 (P#122)
                   PU L#123 (P#123)
-      Socket L#31 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#31 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#31 (size=4096KB linesize=128)
           L2Cache L#31 (size=256KB linesize=128 ways=8)
             L1dCache L#31 (size=32KB linesize=128 ways=8)
@@ -327,7 +327,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#127 (P#127)
   Group0 L#2 (total=133955584KB)
     NUMANode L#4 (P#8 local=66846720KB total=66846720KB)
-      Socket L#32 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#32 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#32 (size=4096KB linesize=128)
           L2Cache L#32 (size=256KB linesize=128 ways=8)
             L1dCache L#32 (size=32KB linesize=128 ways=8)
@@ -337,7 +337,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#129 (P#129)
                   PU L#130 (P#130)
                   PU L#131 (P#131)
-      Socket L#33 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#33 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#33 (size=4096KB linesize=128)
           L2Cache L#33 (size=256KB linesize=128 ways=8)
             L1dCache L#33 (size=32KB linesize=128 ways=8)
@@ -347,7 +347,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#133 (P#133)
                   PU L#134 (P#134)
                   PU L#135 (P#135)
-      Socket L#34 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#34 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#34 (size=4096KB linesize=128)
           L2Cache L#34 (size=256KB linesize=128 ways=8)
             L1dCache L#34 (size=32KB linesize=128 ways=8)
@@ -357,7 +357,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#137 (P#137)
                   PU L#138 (P#138)
                   PU L#139 (P#139)
-      Socket L#35 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#35 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#35 (size=4096KB linesize=128)
           L2Cache L#35 (size=256KB linesize=128 ways=8)
             L1dCache L#35 (size=32KB linesize=128 ways=8)
@@ -367,7 +367,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#141 (P#141)
                   PU L#142 (P#142)
                   PU L#143 (P#143)
-      Socket L#36 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#36 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#36 (size=4096KB linesize=128)
           L2Cache L#36 (size=256KB linesize=128 ways=8)
             L1dCache L#36 (size=32KB linesize=128 ways=8)
@@ -377,7 +377,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#145 (P#145)
                   PU L#146 (P#146)
                   PU L#147 (P#147)
-      Socket L#37 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#37 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#37 (size=4096KB linesize=128)
           L2Cache L#37 (size=256KB linesize=128 ways=8)
             L1dCache L#37 (size=32KB linesize=128 ways=8)
@@ -387,7 +387,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#149 (P#149)
                   PU L#150 (P#150)
                   PU L#151 (P#151)
-      Socket L#38 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#38 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#38 (size=4096KB linesize=128)
           L2Cache L#38 (size=256KB linesize=128 ways=8)
             L1dCache L#38 (size=32KB linesize=128 ways=8)
@@ -397,7 +397,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#153 (P#153)
                   PU L#154 (P#154)
                   PU L#155 (P#155)
-      Socket L#39 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#39 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#39 (size=4096KB linesize=128)
           L2Cache L#39 (size=256KB linesize=128 ways=8)
             L1dCache L#39 (size=32KB linesize=128 ways=8)
@@ -408,7 +408,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#158 (P#158)
                   PU L#159 (P#159)
     NUMANode L#5 (P#9 local=67108864KB total=67108864KB)
-      Socket L#40 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#40 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#40 (size=4096KB linesize=128)
           L2Cache L#40 (size=256KB linesize=128 ways=8)
             L1dCache L#40 (size=32KB linesize=128 ways=8)
@@ -418,7 +418,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#161 (P#161)
                   PU L#162 (P#162)
                   PU L#163 (P#163)
-      Socket L#41 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#41 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#41 (size=4096KB linesize=128)
           L2Cache L#41 (size=256KB linesize=128 ways=8)
             L1dCache L#41 (size=32KB linesize=128 ways=8)
@@ -428,7 +428,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#165 (P#165)
                   PU L#166 (P#166)
                   PU L#167 (P#167)
-      Socket L#42 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#42 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#42 (size=4096KB linesize=128)
           L2Cache L#42 (size=256KB linesize=128 ways=8)
             L1dCache L#42 (size=32KB linesize=128 ways=8)
@@ -438,7 +438,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#169 (P#169)
                   PU L#170 (P#170)
                   PU L#171 (P#171)
-      Socket L#43 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#43 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#43 (size=4096KB linesize=128)
           L2Cache L#43 (size=256KB linesize=128 ways=8)
             L1dCache L#43 (size=32KB linesize=128 ways=8)
@@ -448,7 +448,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#173 (P#173)
                   PU L#174 (P#174)
                   PU L#175 (P#175)
-      Socket L#44 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#44 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#44 (size=4096KB linesize=128)
           L2Cache L#44 (size=256KB linesize=128 ways=8)
             L1dCache L#44 (size=32KB linesize=128 ways=8)
@@ -458,7 +458,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#177 (P#177)
                   PU L#178 (P#178)
                   PU L#179 (P#179)
-      Socket L#45 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#45 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#45 (size=4096KB linesize=128)
           L2Cache L#45 (size=256KB linesize=128 ways=8)
             L1dCache L#45 (size=32KB linesize=128 ways=8)
@@ -468,7 +468,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#181 (P#181)
                   PU L#182 (P#182)
                   PU L#183 (P#183)
-      Socket L#46 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#46 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#46 (size=4096KB linesize=128)
           L2Cache L#46 (size=256KB linesize=128 ways=8)
             L1dCache L#46 (size=32KB linesize=128 ways=8)
@@ -478,7 +478,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#185 (P#185)
                   PU L#186 (P#186)
                   PU L#187 (P#187)
-      Socket L#47 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#47 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#47 (size=4096KB linesize=128)
           L2Cache L#47 (size=256KB linesize=128 ways=8)
             L1dCache L#47 (size=32KB linesize=128 ways=8)
@@ -490,7 +490,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#191 (P#191)
   Group0 L#3 (total=123731968KB)
     NUMANode L#6 (P#12 local=66846720KB total=66846720KB)
-      Socket L#48 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#48 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#48 (size=4096KB linesize=128)
           L2Cache L#48 (size=256KB linesize=128 ways=8)
             L1dCache L#48 (size=32KB linesize=128 ways=8)
@@ -500,7 +500,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#193 (P#193)
                   PU L#194 (P#194)
                   PU L#195 (P#195)
-      Socket L#49 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#49 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#49 (size=4096KB linesize=128)
           L2Cache L#49 (size=256KB linesize=128 ways=8)
             L1dCache L#49 (size=32KB linesize=128 ways=8)
@@ -510,7 +510,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#197 (P#197)
                   PU L#198 (P#198)
                   PU L#199 (P#199)
-      Socket L#50 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#50 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#50 (size=4096KB linesize=128)
           L2Cache L#50 (size=256KB linesize=128 ways=8)
             L1dCache L#50 (size=32KB linesize=128 ways=8)
@@ -520,7 +520,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#201 (P#201)
                   PU L#202 (P#202)
                   PU L#203 (P#203)
-      Socket L#51 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#51 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#51 (size=4096KB linesize=128)
           L2Cache L#51 (size=256KB linesize=128 ways=8)
             L1dCache L#51 (size=32KB linesize=128 ways=8)
@@ -530,7 +530,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#205 (P#205)
                   PU L#206 (P#206)
                   PU L#207 (P#207)
-      Socket L#52 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#52 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#52 (size=4096KB linesize=128)
           L2Cache L#52 (size=256KB linesize=128 ways=8)
             L1dCache L#52 (size=32KB linesize=128 ways=8)
@@ -540,7 +540,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#209 (P#209)
                   PU L#210 (P#210)
                   PU L#211 (P#211)
-      Socket L#53 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#53 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#53 (size=4096KB linesize=128)
           L2Cache L#53 (size=256KB linesize=128 ways=8)
             L1dCache L#53 (size=32KB linesize=128 ways=8)
@@ -550,7 +550,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#213 (P#213)
                   PU L#214 (P#214)
                   PU L#215 (P#215)
-      Socket L#54 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#54 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#54 (size=4096KB linesize=128)
           L2Cache L#54 (size=256KB linesize=128 ways=8)
             L1dCache L#54 (size=32KB linesize=128 ways=8)
@@ -560,7 +560,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#217 (P#217)
                   PU L#218 (P#218)
                   PU L#219 (P#219)
-      Socket L#55 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#55 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#55 (size=4096KB linesize=128)
           L2Cache L#55 (size=256KB linesize=128 ways=8)
             L1dCache L#55 (size=32KB linesize=128 ways=8)
@@ -571,7 +571,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#222 (P#222)
                   PU L#223 (P#223)
     NUMANode L#7 (P#13 local=56885248KB total=56885248KB)
-      Socket L#56 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#56 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#56 (size=4096KB linesize=128)
           L2Cache L#56 (size=256KB linesize=128 ways=8)
             L1dCache L#56 (size=32KB linesize=128 ways=8)
@@ -581,7 +581,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#225 (P#225)
                   PU L#226 (P#226)
                   PU L#227 (P#227)
-      Socket L#57 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#57 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#57 (size=4096KB linesize=128)
           L2Cache L#57 (size=256KB linesize=128 ways=8)
             L1dCache L#57 (size=32KB linesize=128 ways=8)
@@ -591,7 +591,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#229 (P#229)
                   PU L#230 (P#230)
                   PU L#231 (P#231)
-      Socket L#58 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#58 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#58 (size=4096KB linesize=128)
           L2Cache L#58 (size=256KB linesize=128 ways=8)
             L1dCache L#58 (size=32KB linesize=128 ways=8)
@@ -601,7 +601,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#233 (P#233)
                   PU L#234 (P#234)
                   PU L#235 (P#235)
-      Socket L#59 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#59 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#59 (size=4096KB linesize=128)
           L2Cache L#59 (size=256KB linesize=128 ways=8)
             L1dCache L#59 (size=32KB linesize=128 ways=8)
@@ -611,7 +611,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#237 (P#237)
                   PU L#238 (P#238)
                   PU L#239 (P#239)
-      Socket L#60 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#60 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#60 (size=4096KB linesize=128)
           L2Cache L#60 (size=256KB linesize=128 ways=8)
             L1dCache L#60 (size=32KB linesize=128 ways=8)
@@ -621,7 +621,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#241 (P#241)
                   PU L#242 (P#242)
                   PU L#243 (P#243)
-      Socket L#61 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#61 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#61 (size=4096KB linesize=128)
           L2Cache L#61 (size=256KB linesize=128 ways=8)
             L1dCache L#61 (size=32KB linesize=128 ways=8)
@@ -631,7 +631,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#245 (P#245)
                   PU L#246 (P#246)
                   PU L#247 (P#247)
-      Socket L#62 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#62 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#62 (size=4096KB linesize=128)
           L2Cache L#62 (size=256KB linesize=128 ways=8)
             L1dCache L#62 (size=32KB linesize=128 ways=8)
@@ -641,7 +641,7 @@ Machine (P#0 total=516423680KB Backend=Linux)
                   PU L#249 (P#249)
                   PU L#250 (P#250)
                   PU L#251 (P#251)
-      Socket L#63 (CPUModel="POWER7 (architected), altivec supported")
+      Socket L#63 (CPUModel="POWER7 (architected), altivec supported" CPURevision="2.1 (pvr 003f 0201)")
         L3Cache L#63 (size=4096KB linesize=128)
           L2Cache L#63 (size=256KB linesize=128 ways=8)
             L1dCache L#63 (size=32KB linesize=128 ways=8)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2
index 7a8af68..9ceae14 100644
Binary files a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2 and b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2 differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output
index 1e3d52b..6e861f5 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output
@@ -1,4 +1,4 @@
-Machine (P#0 local=280840KB total=280840KB Backend=Linux)
+Machine (P#0 local=280840KB total=280840KB CPUModel="ARMv7 Processor rev 1 (v7l)" CPUImplementer=0x41 CPUArchitecture=7 CPUVariant=0x2 CPUPart=0xc09 CPURevision=1 HardwareName="ST-Ericsson MOP500 platform" HardwareRevision=0000 HardwareSerial=0000000000000000 Backend=Linux Architecture=arm)
   Socket L#0 (P#3)
     Core L#0 (P#0)
       PU L#0 (P#0)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2
index 4fd0762..ffae66e 100644
Binary files a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2 and b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2 differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output
index e677b2c..a20f5d1 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output
@@ -1,4 +1,4 @@
-Machine (P#0 Backend=Linux)
+Machine (P#0 PlatformName=PS3 PlatformModel=SonyPS3 Backend=Linux Architecture=ppc)
   Core L#0
     PU L#0 (P#0)
     PU L#1 (P#1)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2
index 3b12a3e..a37b648 100644
Binary files a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2 and b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2 differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.output
new file mode 100644
index 0000000..86a2319
--- /dev/null
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.output
@@ -0,0 +1,49 @@
+Machine (P#0 total=2096684KB DMIProductName=AltixXE320 DMIProductVersion=AltixXE DMIBoardVendor=SM DMIBoardName=X7DWT-INF DMIBoardVersion=1.01 DMIBoardAssetTag= DMIChassisVendor=SGI.COM DMIChassisType=1 DMIChassisVersion=013-5556-002 DMIChassisAssetTag=" " DMIBIOSVendor="Phoenix Technologies LTD" DMIBIOSVersion=.0b
 DMIBIOSDate=03/24/2008 DMISysVendor=SGI.COM Backend=Linux LinuxCgroup=/)
+  NUMANode L#0 (P#0 local=2096684KB total=2096684KB)
+    Socket L#0 (P#0 CPUModel="Intel(R) Xeon(R) CPU           E5472  @ 3.00GHz")
+      L2Cache L#0 (size=6144KB linesize=64 ways=24)
+        L1dCache L#0 (size=32KB linesize=64 ways=8)
+          L1iCache L#0 (size=32KB linesize=64 ways=8)
+            Core L#0 (P#0)
+              PU L#0 (P#0)
+        L1dCache L#1 (size=32KB linesize=64 ways=8)
+          L1iCache L#1 (size=32KB linesize=64 ways=8)
+            Core L#1 (P#1)
+              PU L#1 (P#2)
+      L2Cache L#1 (size=6144KB linesize=64 ways=24)
+        L1dCache L#2 (size=32KB linesize=64 ways=8)
+          L1iCache L#2 (size=32KB linesize=64 ways=8)
+            Core L#2 (P#2)
+              PU L#2 (P#4)
+        L1dCache L#3 (size=32KB linesize=64 ways=8)
+          L1iCache L#3 (size=32KB linesize=64 ways=8)
+            Core L#3 (P#3)
+              PU L#3 (P#6)
+    Socket L#1 (P#1 CPUModel="Intel(R) Xeon(R) CPU           E5472  @ 3.00GHz")
+      L2Cache L#2 (size=6144KB linesize=64 ways=24)
+        L1dCache L#4 (size=32KB linesize=64 ways=8)
+          L1iCache L#4 (size=32KB linesize=64 ways=8)
+            Core L#4 (P#0)
+              PU L#4 (P#1)
+        L1dCache L#5 (size=32KB linesize=64 ways=8)
+          L1iCache L#5 (size=32KB linesize=64 ways=8)
+            Core L#5 (P#1)
+              PU L#5 (P#3)
+      L2Cache L#3 (size=6144KB linesize=64 ways=24)
+        L1dCache L#6 (size=32KB linesize=64 ways=8)
+          L1iCache L#6 (size=32KB linesize=64 ways=8)
+            Core L#6 (P#2)
+              PU L#6 (P#5)
+        L1dCache L#7 (size=32KB linesize=64 ways=8)
+          L1iCache L#7 (size=32KB linesize=64 ways=8)
+            Core L#7 (P#3)
+              PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	1 NUMANode (type #2)
+  depth 2:	2 Socket (type #3)
+   depth 3:	4 L2Cache (type #4)
+    depth 4:	8 L1dCache (type #4)
+     depth 5:	8 L1iCache (type #4)
+      depth 6:	8 Core (type #5)
+       depth 7:	8 PU (type #6)
+Topology not from this system
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2
new file mode 100644
index 0000000..f32afc5
Binary files /dev/null and b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2 differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output
index 7abf221..e5d0270 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output
@@ -1,5 +1,5 @@
-Machine (P#0 local=1016272KB total=1016272KB Backend=Linux)
-  Socket L#0 (P#1 CPUModel="Genuine Intel(R) CPU           @ 0000 @ 2.93GHz")
+Machine (P#0 local=1016272KB total=1016272KB Backend=Linux Architecture=x86_64)
+  Socket L#0 (P#1 CPUVendor=GenuineIntel CPUFamilyNumber=6 CPUModelNumber=26 CPUModel="Genuine Intel(R) CPU           @ 0000 @ 2.93GHz")
     L3Cache L#0 (size=8192KB linesize=64 ways=16)
       L2Cache L#0 (size=256KB linesize=64 ways=8)
         L1dCache L#0 (size=32KB linesize=64 ways=8)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2 b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2
index 47a7b6f..419f024 100644
Binary files a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2 and b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2 differ
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am
index 97a019a..f23cd98 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright © 2009-2013 Inria.  All rights reserved.
+# Copyright © 2009-2014 Inria.  All rights reserved.
 # Copyright © 2009-2011 Université Bordeaux 1
 # Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 # See COPYING in top-level directory.
@@ -26,6 +26,7 @@ sysfs_outputs = \
 		8amd64-4n2c.output  \
 		8em64t-4c2t.output \
 		8em64t-2s2ca2c.output \
+		8em64t-2s2ca2c-buggynuma.output \
 		8em64t-2s4c-heterogeneous.output \
 		8ia64-2n2s2c.output \
 		8ia64-2s2c2t.output \
@@ -35,7 +36,7 @@ sysfs_outputs = \
 		16amd64-8n2c-cpusets.output \
 		16amd64-8n2c-cpusets.xml.output \
 		16amd64-8n2c-cpusets_noadmin.output \
-		16em64t-4s2cu2c.output \
+		16em64t-4s2ca2c-cpusetreorder.output \
 		16em64t-4s2c2t.output \
 		16em64t-4s2c2t-offlines.output \
 		16em64t-4s2c2t-offlines.xml.output \
@@ -82,6 +83,7 @@ sysfs_tarballs = \
 		8amd64-4n2c.tar.bz2  \
 		8em64t-4c2t.tar.bz2 \
 		8em64t-2s2ca2c.tar.bz2 \
+		8em64t-2s2ca2c-buggynuma.tar.bz2 \
 		8em64t-2s4c-heterogeneous.tar.bz2 \
 		8ia64-2n2s2c.tar.bz2 \
 		8ia64-2s2c2t.tar.bz2 \
@@ -91,7 +93,7 @@ sysfs_tarballs = \
 		16amd64-8n2c-cpusets.tar.bz2 \
 		16amd64-8n2c-cpusets.xml.source \
 		16amd64-8n2c-cpusets_noadmin.source \
-		16em64t-4s2cu2c.tar.bz2 \
+		16em64t-4s2ca2c-cpusetreorder.tar.bz2 \
 		16em64t-4s2c2t.tar.bz2 \
 		16em64t-4s2c2t-offlines.tar.bz2 \
 		16em64t-4s2c2t-offlines.xml.source \
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
index 572d928..7735646 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
@@ -2,7 +2,7 @@
 #-*-sh-*-
 
 #
-# Copyright © 2012-2013 Inria.  All rights reserved.
+# Copyright © 2012-2014 Inria.  All rights reserved.
 # Copyright © 2010 Cisco Systems, Inc.  All rights reserved.
 # Copyright © 2011 Université Bordeaux 1
 # See COPYING in top-level directory.
@@ -68,6 +68,8 @@ if ! ( cd "$tmpdir" && tar xfj save.tar.bz2 ) ; then
 fi
 export HWLOC_FSROOT="$tmpdir/save"
 
+rm -f "$tmpdir/save/proc/hwloc-nofile-info"
+
 echo "Saving tarball topology to XML..."
 if ! "$lstopo" --no-io "$tmpdir/save2.xml" ; then
     error "Failed"
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in
index bffa794..c3a6356 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in
@@ -3,7 +3,7 @@
 
 #
 # Copyright © 2009 CNRS
-# Copyright © 2009-2013 Inria.  All rights reserved.
+# Copyright © 2009-2014 Inria.  All rights reserved.
 # Copyright © 2009-2012 Université Bordeaux 1
 # See COPYING in top-level directory.
 #
@@ -22,6 +22,12 @@ export LANG LC_ALL
 
 gatherio=0
 
+if [ ! -x "$lstopo" ]
+then
+    error "Could not find lstopo executable in the install or build dir."
+    exit 1
+fi
+
 error()
 {
     echo $@ 2>&1
@@ -158,17 +164,18 @@ cat /proc/mounts | while read -r dummy1 mntpath mnttype mntopts dummy2 ; do
   [ x$mnttype = xcgroup ] && echo $mntopts | grep -w cpuset >/dev/null && savemntpnt "$mntpath"
 done
 
+# export /proc/hwloc-nofile-info during lstopo (needs HWLOC_DUMP_NOFILE_INFO with HWLOC_THISSYSTEM=1)
+export HWLOC_DUMP_NOFILE_INFO="$destdir/$basename/proc/hwloc-nofile-info"
+"$lstopo" - >/dev/null
+# disable HWLOC_DUMP_NOFILE_INFO for next lstopo invocation
+export HWLOC_DUMP_NOFILE_INFO=
+
 # Create the archive and keep the tree in /tmp for testing
 ( cd "$destdir/" && tar cfj "$basename.tar.bz2" "$basename" )
 mv "$destdir/$basename.tar.bz2" "$dirname/$basename.tar.bz2"
 echo "Hierarchy gathered in $dirname/$basename.tar.bz2 and kept in $destdir/$basename/"
 
 # Generate the output as well
-if [ ! -x "$lstopo" ]
-then
-    error "Could not find lstopo executable in the install or build dir."
-    exit 1
-fi
 # we need "Topology not from this system" in the output so as to make test-topology.sh happy
 export HWLOC_THISSYSTEM=0
 "$lstopo" - -v > "$dirname/$basename.output"
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cuda/cuda_runtime_api.h b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cuda/cuda_runtime_api.h
index fcf8bb9..1c4b53c 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cuda/cuda_runtime_api.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cuda/cuda_runtime_api.h
@@ -1,17 +1,30 @@
 /*
- * Copyright © 2013 Inria.  All rights reserved.
+ * Copyright © 2013-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
 #ifndef HWLOC_PORT_CUDA_CUDA_RUNTIME_API_H
 #define HWLOC_PORT_CUDA_CUDA_RUNTIME_API_H
 
+/* we need to replace any CUDA-related #define that configure may have put in private/autogen/config.h */
+#ifndef HWLOC_CONFIGURE_H
+#error cuda_runtime_api.h must be included after private/autogen/config.h
+#endif
+#undef HWLOC_HAVE_CUDA_L2CACHESIZE
+#define HWLOC_HAVE_CUDA_L2CACHESIZE 1
+
 typedef unsigned cudaError_t;
 
 struct cudaDeviceProp {
   char * name;
   int pciBusID;
   int pciDeviceID;
+  size_t totalGlobalMem;
+  size_t sharedMemPerBlock;
+  int major;
+  int minor;
+  int l2CacheSize;
+  int multiProcessorCount;
 };
 
 cudaError_t cudaGetDeviceProperties(struct cudaDeviceProp *, int);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/opencl/CL/cl_ext.h b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/opencl/CL/cl_ext.h
index 8a347cb..953f23e 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/opencl/CL/cl_ext.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/opencl/CL/cl_ext.h
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2013 Inria.  All rights reserved.
+ * Copyright © 2013-2014 Inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -7,6 +7,7 @@
 #define HWLOC_PORT_OPENCL_CL_CL_EXT_H
 
 typedef char cl_char;
+typedef unsigned long cl_ulong;
 typedef unsigned int cl_uint;
 typedef unsigned int cl_int;
 typedef unsigned int cl_device_type;
@@ -33,6 +34,8 @@ cl_int clGetPlatformInfo(cl_platform_id, cl_platform_info, size_t, void *, size_
 
 #define CL_PLATFORM_NAME                            0x0902
 #define CL_DEVICE_TYPE                              0x1000
+#define CL_DEVICE_MAX_COMPUTE_UNITS                 0x1002
+#define CL_DEVICE_GLOBAL_MEM_SIZE                   0x101F
 #define CL_DEVICE_NAME                              0x102B
 #define CL_DEVICE_VENDOR                            0x102C
 #define CL_DEVICE_PLATFORM                          0x1031
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/solaris/sys/procset.h b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/solaris/sys/procset.h
index ab42eb2..3f2c811 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/solaris/sys/procset.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/solaris/sys/procset.h
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009 Université Bordeaux 1
  * See COPYING in top-level directory.
  */
@@ -7,10 +7,17 @@
 #ifndef HWLOC_PORT_SOLARIS_SYS_PROCSET_H
 #define HWLOC_PORT_SOLARIS_SYS_PROCSET_H
 
-typedef enum idtype {
-  P_PID,
-  P_LWPID,
-  P_MYID
-} idtype_t;
+#ifndef __ENUM_IDTYPE_T
+/* Linux doesn't have idtype_t unless __ENUM_IDTYPE_T is set */
+typedef int idtype_t;
+#ifndef P_PID
+/* If there's no idtype_t, P_PID could exist as a #define */
+#define P_PID 1
+#endif
+#endif
+
+/* Linux never has P_LWPID and P_MYID */
+#define P_LWPID 2
+#define P_MYID 3
 
 #endif /* HWLOC_PORT_SOLARIS_SYS_PROCSET_H */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c
index 32ed71d..85f4c85 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c
@@ -43,7 +43,7 @@
 
 #include "private/autogen/config.h"
 #include "private/components.h"
-#include "private/cpuid.h"
+#include "private/cpuid-x86.h"
 #include "private/debug.h"
 #include "private/misc.h"
 #include "private/private.h"
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in
index 1d85f6f..1a48641 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in
@@ -48,7 +48,7 @@ Report the current bindings.
 When combined with \fB\-\-membind\fR, report the memory binding
 instead of CPU binding.
 .TP
-\fB\-\-get-last-cpu-location\fR
+\fB\-e\fR \fB\-\-get-last-cpu-location\fR
 Report the last processors where the process ran.
 Note that the result may already be outdated when reported since
 the operating system may move the process to other processors
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c
index ed773b1..741eaef 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c
@@ -33,7 +33,7 @@ void usage(const char *name, FILE *where)
   fprintf(where, "  --single       Bind on a single CPU to prevent migration\n");
   fprintf(where, "  --strict       Require strict binding\n");
   fprintf(where, "  --get          Retrieve current process binding\n");
-  fprintf(where, "  --get-last-cpu-location\n"
+  fprintf(where, "  -e --get-last-cpu-location\n"
 		 "                 Retrieve the last processors where the current process ran\n");
   fprintf(where, "  --pid <pid>    Operate on process <pid>\n");
   fprintf(where, "  --taskset      Use taskset-specific format when displaying cpuset strings\n");
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
   int membind_flags = 0;
   int opt;
   int ret;
-  int pid_number = 0;
+  int pid_number = -1;
   hwloc_pid_t pid;
   char *callname;
 
@@ -144,7 +144,7 @@ int main(int argc, char *argv[])
         taskset = 1;
         goto next;
       }
-      else if (!strncmp (argv[0], "--get-last-cpu-location", 10)) {
+      else if (!strcmp (argv[0], "-e") || !strncmp (argv[0], "--get-last-cpu-location", 10)) {
 	get_last_cpu_location = 1;
 	goto next;
       }
@@ -233,7 +233,12 @@ int main(int argc, char *argv[])
     argv += opt+1;
   }
 
-  pid = hwloc_pid_from_number(pid_number, !(get_binding || get_last_cpu_location));
+  if (pid_number > 0) {
+    pid = hwloc_pid_from_number(pid_number, !(get_binding || get_last_cpu_location));
+    /* no need to set_pid()
+     * the doc just says we're operating on pid, not that we're retrieving the topo/cpuset as seen from inside pid
+     */
+  }
 
   if (get_binding || get_last_cpu_location) {
     char *s;
@@ -241,19 +246,19 @@ int main(int argc, char *argv[])
     int err;
     if (working_on_cpubind) {
       if (get_last_cpu_location) {
-	if (pid_number)
+	if (pid_number > 0)
 	  err = hwloc_get_proc_last_cpu_location(topology, pid, cpubind_set, 0);
 	else
 	  err = hwloc_get_last_cpu_location(topology, cpubind_set, 0);
       } else {
-	if (pid_number)
+	if (pid_number > 0)
 	  err = hwloc_get_proc_cpubind(topology, pid, cpubind_set, 0);
 	else
 	  err = hwloc_get_cpubind(topology, cpubind_set, 0);
       }
       if (err) {
 	const char *errmsg = strerror(errno);
-	if (pid_number)
+	if (pid_number > 0)
 	  fprintf(stderr, "hwloc_get_proc_%s %d failed (errno %d %s)\n", get_last_cpu_location ? "last_cpu_location" : "cpubind", pid_number, errno, errmsg);
 	else
 	  fprintf(stderr, "hwloc_get_%s failed (errno %d %s)\n", get_last_cpu_location ? "last_cpu_location" : "cpubind", errno, errmsg);
@@ -265,13 +270,13 @@ int main(int argc, char *argv[])
 	hwloc_bitmap_asprintf(&s, cpubind_set);
     } else {
       hwloc_membind_policy_t policy;
-      if (pid_number)
+      if (pid_number > 0)
 	err = hwloc_get_proc_membind(topology, pid, membind_set, &policy, 0);
       else
 	err = hwloc_get_membind(topology, membind_set, &policy, 0);
       if (err) {
 	const char *errmsg = strerror(errno);
-        if (pid_number)
+        if (pid_number > 0)
           fprintf(stderr, "hwloc_get_proc_membind %d failed (errno %d %s)\n", pid_number, errno, errmsg);
         else
 	  fprintf(stderr, "hwloc_get_membind failed (errno %d %s)\n", errno, errmsg);
@@ -314,7 +319,7 @@ int main(int argc, char *argv[])
     }
     if (single)
       hwloc_bitmap_singlify(membind_set);
-    if (pid_number)
+    if (pid_number > 0)
       ret = hwloc_set_proc_membind(topology, pid, membind_set, membind_policy, membind_flags);
     else
       ret = hwloc_set_membind(topology, membind_set, membind_policy, membind_flags);
@@ -323,7 +328,7 @@ int main(int argc, char *argv[])
       const char *errmsg = strerror(bind_errno);
       char *s;
       hwloc_bitmap_asprintf(&s, membind_set);
-      if (pid_number)
+      if (pid_number > 0)
         fprintf(stderr, "hwloc_set_proc_membind %s %d failed (errno %d %s)\n", s, pid_number, bind_errno, errmsg);
       else
         fprintf(stderr, "hwloc_set_membind %s failed (errno %d %s)\n", s, bind_errno, errmsg);
@@ -348,7 +353,7 @@ int main(int argc, char *argv[])
     }
     if (single)
       hwloc_bitmap_singlify(cpubind_set);
-    if (pid_number)
+    if (pid_number > 0)
       ret = hwloc_set_proc_cpubind(topology, pid, cpubind_set, cpubind_flags);
     else
       ret = hwloc_set_cpubind(topology, cpubind_set, cpubind_flags);
@@ -357,7 +362,7 @@ int main(int argc, char *argv[])
       const char *errmsg = strerror(bind_errno);
       char *s;
       hwloc_bitmap_asprintf(&s, cpubind_set);
-      if (pid_number)
+      if (pid_number > 0)
         fprintf(stderr, "hwloc_set_proc_cpubind %s %d failed (errno %d %s)\n", s, pid_number, bind_errno, errmsg);
       else
         fprintf(stderr, "hwloc_set_cpubind %s failed (errno %d %s)\n", s, bind_errno, errmsg);
@@ -372,7 +377,7 @@ int main(int argc, char *argv[])
 
   hwloc_topology_destroy(topology);
 
-  if (pid_number)
+  if (pid_number > 0)
     return EXIT_SUCCESS;
 
   if (0 == argc) {
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c
index 0d91a27..bcd4b9b 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -161,9 +161,9 @@ hwloc_calc_output(hwloc_topology_t topology, const char *sep, hwloc_bitmap_t set
 
 static int hwloc_calc_type_depth(const char *string, hwloc_obj_type_t *typep, int *depthp)
 {
-  hwloc_obj_type_t type = hwloc_obj_type_of_string(string);
+  hwloc_obj_type_t type = (hwloc_obj_type_t) -1; /* in case we match a depth */
   int depth = -1;
-  if (type == (hwloc_obj_type_t) -1) {
+  if (hwloc_obj_type_sscanf(string, &type, NULL, NULL, 0) < 0) {
     char *endptr;
     depth = strtoul(string, &endptr, 0);
     if (*endptr)
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h
index 5a1dfc5..a1e7d36 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -85,79 +85,6 @@ hwloc_calc_get_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const
   }
 }
 
-/* extended version of hwloc_obj_type_of_string()
- *
- * matches L2, L3Cache and Group4, and return the corresponding depth attribute if depthattrp isn't NULL.
- * only looks at the beginning of the string to allow truncated type names.
- */
-static __hwloc_inline int
-hwloc_obj_type_sscanf(const char *string, hwloc_obj_type_t *typep, int *depthattrp, hwloc_obj_cache_type_t *cachetypeattrp)
-{
-  hwloc_obj_type_t type = (hwloc_obj_type_t) -1;
-  int depthattr = -1;
-  hwloc_obj_cache_type_t cachetypeattr = (hwloc_obj_cache_type_t) -1; /* unspecified */
-  char *end;
-
-  /* types without depthattr */
-  if (!hwloc_strncasecmp(string, "system", 2)) {
-    type = HWLOC_OBJ_SYSTEM;
-  } else if (!hwloc_strncasecmp(string, "machine", 2)) {
-    type = HWLOC_OBJ_MACHINE;
-  } else if (!hwloc_strncasecmp(string, "node", 1)) {
-    type = HWLOC_OBJ_NODE;
-  } else if (!hwloc_strncasecmp(string, "socket", 2)) {
-    type = HWLOC_OBJ_SOCKET;
-  } else if (!hwloc_strncasecmp(string, "core", 2)) {
-    type = HWLOC_OBJ_CORE;
-  } else if (!hwloc_strncasecmp(string, "pu", 2)) {
-    type = HWLOC_OBJ_PU;
-  } else if (!hwloc_strncasecmp(string, "misc", 2)) {
-    type = HWLOC_OBJ_MISC;
-  } else if (!hwloc_strncasecmp(string, "pci", 2)) {
-    type = HWLOC_OBJ_PCI_DEVICE;
-  } else if (!hwloc_strncasecmp(string, "os", 2)) {
-    type = HWLOC_OBJ_OS_DEVICE;
-
-  /* types with depthattr */
-  } else if (!hwloc_strncasecmp(string, "cache", 2)) {
-    type = HWLOC_OBJ_CACHE;
-  } else if ((string[0] == 'l' || string[0] == 'L') && string[1] >= '0' && string[1] <= '9') {
-    type = HWLOC_OBJ_CACHE;
-    depthattr = strtol(string+1, &end, 10);
-    if (*end == 'd') {
-      cachetypeattr = HWLOC_OBJ_CACHE_DATA;
-      end++;
-    } else if (*end == 'i') {
-      cachetypeattr = HWLOC_OBJ_CACHE_INSTRUCTION;
-      end++;
-    } else if (*end == 'u') {
-      cachetypeattr = HWLOC_OBJ_CACHE_UNIFIED;
-      end++;
-    }
-    if (*end && hwloc_strncasecmp(end, "cache", 2))
-      return -1;
-
-  } else if (!hwloc_strncasecmp(string, "group", 1)) {
-    int length;
-    type = HWLOC_OBJ_GROUP;
-    length = strcspn(string, "0123456789");
-    if (string[length] != '\0') {
-      depthattr = strtol(string+length, &end, 10);
-      if (*end)
-	return -1;
-    }
-  } else
-    return -1;
-
-  *typep = type;
-  if (depthattrp)
-    *depthattrp = depthattr;
-  if (cachetypeattrp)
-    *cachetypeattrp = cachetypeattr;
-
-  return 0;
-}
-
 static __hwloc_inline int
 hwloc_calc_depth_of_type(hwloc_topology_t topology, hwloc_obj_type_t type,
 			 int depthattr, hwloc_obj_cache_type_t cachetype /* -1 if not specified */,
@@ -242,7 +169,7 @@ hwloc_calc_parse_depth_prefix(hwloc_topology_t topology, unsigned topodepth,
   typestring[typelen] = '\0';
 
   /* try to match a type name */
-  err = hwloc_obj_type_sscanf(typestring, &type, &depthattr, &cachetypeattr);
+  err = hwloc_obj_type_sscanf(typestring, &type, &depthattr, &cachetypeattr, sizeof(cachetypeattr));
   if (!err) {
     *typep = type;
     return hwloc_calc_depth_of_type(topology, type, depthattr, cachetypeattr, verbose);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in
index be79db2..a11265c 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in
@@ -1,5 +1,5 @@
 .\" -*- nroff -*-
-.\" Copyright © 2010-2013 Inria.  All rights reserved.
+.\" Copyright © 2010-2014 Inria.  All rights reserved.
 .\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 .\" See COPYING in top-level directory.
 .TH HWLOC-DISTRIB "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
@@ -62,12 +62,17 @@ above.
 Distribute down to objects of the given type instead of down to the bottom of
 the topology hierarchy, i.e. ignoring the structure given by objects below.
 This may be useful if some latitude is desired for the binding, e.g. just bind
-on sockets and not to precise cores or caches.
+several processes to each socket without specifying a single core for each
+of them.
 .TP
 \fB\-\-at\fR <type>
 Distribute among objects of the given type.  This is equivalent to specifying
 both \fB\-\-from\fR and \fB\-\-to\fR at the same time.
 .TP
+\fB\-\-reverse\fR
+Distribute by starting with the last objects first,
+and singlify CPU sets by keeping the last bit (instead of the first bit).
+.TP
 \fB\-\-restrict\fR <cpuset>
 Restrict the topology to the given cpuset.
 .TP
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c
index b04c15b..50e22b2 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -23,6 +23,7 @@ void usage(const char *callname __hwloc_attribute_unused, FILE *where)
   fprintf(where, "  --from <type>    Distribute starting from objects of the given type\n");
   fprintf(where, "  --to <type>      Distribute down to objects of the given type\n");
   fprintf(where, "  --at <type>      Distribute among objects of the given type\n");
+  fprintf(where, "  --reverse        Distribute by starting from last objects\n");
   fprintf(where, "Input topology options:\n");
   fprintf(where, "  --restrict <set> Restrict the topology to processors listed in <set>\n");
   fprintf(where, "  --whole-system   Do not consider administration limitations\n");
@@ -48,6 +49,7 @@ int main(int argc, char *argv[])
   hwloc_obj_type_t from_type = (hwloc_obj_type_t) -1, to_type = (hwloc_obj_type_t) -1;
   hwloc_topology_t topology;
   unsigned long flags = 0;
+  unsigned long dflags = 0;
   int opt;
   int err;
 
@@ -103,11 +105,10 @@ int main(int argc, char *argv[])
 	  usage(callname, stdout);
 	  exit(EXIT_FAILURE);
 	}
-	type = hwloc_obj_type_of_string(argv[1]);
-	if (type != (hwloc_obj_type_t) -1)
-	  hwloc_topology_ignore_type(topology, type);
-	else
+	if (hwloc_obj_type_sscanf(argv[1], &type, NULL, NULL, 0) < 0)
 	  fprintf(stderr, "Unsupported type `%s' passed to --ignore, ignoring.\n", argv[1]);
+	else
+	  hwloc_topology_ignore_type(topology, type);
 	argc--;
 	argv++;
 	goto next;
@@ -117,8 +118,7 @@ int main(int argc, char *argv[])
 	  usage(callname, stdout);
 	  exit(EXIT_FAILURE);
 	}
-	from_type = hwloc_obj_type_of_string(argv[1]);
-	if (from_type == (hwloc_obj_type_t) -1)
+	if (hwloc_obj_type_sscanf(argv[1], &from_type, NULL, NULL, 0) < 0)
 	  fprintf(stderr, "Unsupported type `%s' passed to --from, ignoring.\n", argv[1]);
 	argc--;
 	argv++;
@@ -129,8 +129,7 @@ int main(int argc, char *argv[])
 	  usage(callname, stdout);
 	  exit(EXIT_FAILURE);
 	}
-	to_type = hwloc_obj_type_of_string(argv[1]);
-	if (to_type == (hwloc_obj_type_t) -1)
+	if (hwloc_obj_type_sscanf(argv[1], &to_type, NULL, NULL, 0) < 0)
 	  fprintf(stderr, "Unsupported type `%s' passed to --to, ignoring.\n", argv[1]);
 	argc--;
 	argv++;
@@ -141,11 +140,17 @@ int main(int argc, char *argv[])
 	  usage(callname, stdout);
 	  exit(EXIT_FAILURE);
 	}
-	from_type = to_type = hwloc_obj_type_of_string(argv[1]);
+	if (hwloc_obj_type_sscanf(argv[1], &to_type, NULL, NULL, 0) < 0)
+	  fprintf(stderr, "Unsupported type `%s' passed to --at, ignoring.\n", argv[1]);
+	from_type = to_type;
 	argc--;
 	argv++;
 	goto next;
       }
+      else if (!strcmp (argv[0], "--reverse")) {
+	dflags |= HWLOC_DISTRIB_FLAG_REVERSE;
+	goto next;
+      }
       else if (!strcmp (argv[0], "--restrict")) {
 	if (argc < 2) {
 	  usage (callname, stdout);
@@ -250,12 +255,18 @@ int main(int argc, char *argv[])
       for (i = 0; i < chunks; i++)
         roots[i] = hwloc_get_obj_by_depth(topology, from_depth, i);
 
-      hwloc_distributev(topology, roots, chunks, cpuset, n, to_depth);
+      hwloc_distrib(topology, roots, chunks, cpuset, n, to_depth, dflags);
 
       for (i = 0; (long) i < n; i++) {
 	char *str = NULL;
-	if (singlify)
-	  hwloc_bitmap_singlify(cpuset[i]);
+	if (singlify) {
+	  if (dflags & HWLOC_DISTRIB_FLAG_REVERSE) {
+	    unsigned last = hwloc_bitmap_last(cpuset[i]);
+	    hwloc_bitmap_only(cpuset[i], last);
+	  } else {
+	    hwloc_bitmap_singlify(cpuset[i]);
+	  }
+	}
 	if (taskset)
 	  hwloc_bitmap_taskset_asprintf(&str, cpuset[i]);
 	else
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.c
index 96e225a..6c6eb26 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-info.c
@@ -226,6 +226,7 @@ hwloc_calc_process_arg_info_cb(void *_data __hwloc_attribute_unused,
 	  goto next;
 	if (parent->type == HWLOC_OBJ_CACHE
 	    && show_ancestor_attrcachetype != (hwloc_obj_cache_type_t) -1
+	    && parent->attr->cache.type != HWLOC_OBJ_CACHE_UNIFIED
 	    && show_ancestor_attrcachetype != parent->attr->cache.type)
 	  goto next;
 	hwloc_obj_type_snprintf(parents, sizeof(parents), parent, 1);
@@ -303,7 +304,7 @@ main (int argc, char *argv[])
 	  usage (callname, stderr);
 	  exit(EXIT_FAILURE);
 	}
-	err = hwloc_obj_type_sscanf(argv[1], &show_ancestor_type, &show_ancestor_attrdepth, &show_ancestor_attrcachetype);
+	err = hwloc_obj_type_sscanf(argv[1], &show_ancestor_type, &show_ancestor_attrdepth, &show_ancestor_attrcachetype, sizeof(show_ancestor_attrcachetype));
         if (err < 0) {
           fprintf(stderr, "unrecognized --ancestor type %s\n", argv[1]);
           usage(callname, stderr);
@@ -373,7 +374,7 @@ main (int argc, char *argv[])
       return err;
   }
 
-  if (pid_number != -1 && pid_number != 0) {
+  if (pid_number > 0) {
     pid = hwloc_pid_from_number(pid_number, 0);
     if (hwloc_topology_set_pid(topology, pid)) {
       perror("Setting target pid");
@@ -390,7 +391,7 @@ main (int argc, char *argv[])
   if (restrictstring) {
     hwloc_bitmap_t restrictset = hwloc_bitmap_alloc();
     if (!strcmp (restrictstring, "binding")) {
-      if (pid_number != -1 && pid_number != 0)
+      if (pid_number > 0)
 	hwloc_get_proc_cpubind(topology, pid, restrictset, HWLOC_CPUBIND_PROCESS);
       else
 	hwloc_get_cpubind(topology, restrictset, HWLOC_CPUBIND_PROCESS);
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in
index 7fe73e2..124cf5f 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in
@@ -39,6 +39,12 @@ If \fB\-a\fR is given as well, list all threads within each process.
 Otherwise, show all threads inside each process where at least one
 thread is bound.
 .TP
+\fB\-e\fR \fB\-\-get\-last\-cpu\-location\fR
+Report  the last processors where the process/thread ran.
+Note that the result may already be outdated when reported
+since the operating system may move the tasks to other processors
+at any time according to the binding.
+.TP
 \fB\-\-whole\-system\fR
 Do not consider administration limitations.
 .TP
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c
index 04c42a7..6c3fe50 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c
@@ -33,6 +33,8 @@ void usage(const char *name, FILE *where)
   fprintf (where, "  -p --physical    Use physical object indexes\n");
   fprintf (where, "  -c --cpuset      Show cpuset instead of objects\n");
   fprintf (where, "  -t --threads     Show threads\n");
+  fprintf (where, "  -e --get-last-cpu-location\n");
+  fprintf (where, "                   Retrieve the last processors where the tasks ran\n");
   fprintf (where, "  --pid-cmd <cmd>  Append the output of <cmd> <pid> to each PID line\n");
   fprintf (where, "  --whole-system   Do not consider administration limitations\n");
 }
@@ -56,6 +58,9 @@ static void print_task(hwloc_topology_t topology,
       char type[64];
       unsigned idx;
       hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining);
+      /* don't show a cache if there's something equivalent and nicer */
+      while (obj->type == HWLOC_OBJ_CACHE && obj->arity == 1)
+	obj = obj->first_child;
       hwloc_obj_type_snprintf(type, sizeof(type), obj, 1);
       idx = logical ? obj->logical_index : obj->os_index;
       if (idx == (unsigned) -1)
@@ -82,6 +87,7 @@ int main(int argc, char *argv[])
   struct dirent *dirent;
   int show_all = 0;
   int show_threads = 0;
+  int get_last_cpu_location = 0;
   char *callname;
   char *pidcmd = NULL;
   int err;
@@ -106,6 +112,8 @@ int main(int argc, char *argv[])
       logical = 0;
     } else if (!strcmp(argv[0], "-c") || !strcmp(argv[0], "--cpuset")) {
       show_cpuset = 1;
+    } else if (!strcmp(argv[0], "-e") || !strncmp(argv[0], "--get-last-cpu-location", 10)) {
+      get_last_cpu_location = 1;
     } else if (!strcmp(argv[0], "-t") || !strcmp(argv[0], "--threads")) {
 #ifdef HWLOC_LINUX_SYS
       show_threads = 1;
@@ -142,8 +150,13 @@ int main(int argc, char *argv[])
 
   support = hwloc_topology_get_support(topology);
 
-  if (!support->cpubind->get_thisproc_cpubind)
-    goto out_with_topology;
+  if (get_last_cpu_location) {
+    if (!support->cpubind->get_proc_last_cpu_location)
+      goto out_with_topology;
+  } else {
+    if (!support->cpubind->get_proc_cpubind)
+      goto out_with_topology;
+  }
 
   topocpuset = hwloc_topology_get_topology_cpuset(topology);
 
@@ -233,8 +246,13 @@ int main(int argc, char *argv[])
 	      if (*end)
 		/* Not a number */
 		continue;
-	      if (hwloc_linux_get_tid_cpubind(topology, tid, cpuset))
-		continue;
+	      if (get_last_cpu_location) {
+		if (hwloc_linux_get_tid_last_cpu_location(topology, tid, cpuset))
+		  continue;
+	      } else {
+		if (hwloc_linux_get_tid_cpubind(topology, tid, cpuset))
+		  continue;
+	      }
 	      hwloc_bitmap_and(cpuset, cpuset, topocpuset);
 	      tids[i] = tid;
 	      tidcpusets[i] = hwloc_bitmap_dup(cpuset);
@@ -256,8 +274,13 @@ int main(int argc, char *argv[])
 #endif /* HWLOC_LINUX_SYS */
     }
 
-    if (hwloc_get_proc_cpubind(topology, pid, cpuset, 0))
-      continue;
+    if (get_last_cpu_location) {
+      if (hwloc_get_proc_last_cpu_location(topology, pid, cpuset, 0))
+	continue;
+    } else {
+      if (hwloc_get_proc_cpubind(topology, pid, cpuset, 0))
+	continue;
+    }
 
     hwloc_bitmap_and(cpuset, cpuset, topocpuset);
     if (hwloc_bitmap_iszero(cpuset))
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c
index a4a68ad..d1fc950 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2012 Inria.  All rights reserved.
- * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2014 Inria.  All rights reserved.
+ * Copyright © 2009-2010, 2014 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -181,6 +181,8 @@ x11_start(void *output __hwloc_attribute_unused, int width, int height)
 
   root = RootWindow(dpy, scr);
   disp->top = top = XCreateSimpleWindow(dpy, root, 0, 0, screen_width, screen_height, 0, WhitePixel(dpy, scr), WhitePixel(dpy, scr));
+  XStoreName(dpy, top, "lstopo");
+  XSetIconName(dpy, top, "lstopo");
   XSelectInput(dpy,top, StructureNotifyMask);
   XMapWindow(dpy, top);
 
@@ -246,7 +248,7 @@ move_x11(struct display *disp, int logical, int legend, hwloc_topology_t topolog
 }
 
 void
-output_x11(hwloc_topology_t topology, const char *filename __hwloc_attribute_unused, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+output_x11(hwloc_topology_t topology, const char *filename __hwloc_attribute_unused, int overwrite __hwloc_attribute_unused, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
   struct display *disp = output_draw_start(&x11_draw_methods, logical, legend, topology, NULL);
   int finish = 0;
@@ -386,9 +388,9 @@ static struct draw_methods png_draw_methods = {
 };
 
 void
-output_png(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+output_png(hwloc_topology_t topology, const char *filename, int overwrite, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
-  FILE *output = open_file(filename, "w");
+  FILE *output = open_output(filename, overwrite);
   cairo_surface_t *cs;
 
   if (!output) {
@@ -425,9 +427,9 @@ static struct draw_methods pdf_draw_methods = {
 };
 
 void
-output_pdf(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+output_pdf(hwloc_topology_t topology, const char *filename, int overwrite, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
-  FILE *output = open_file(filename, "w");
+  FILE *output = open_output(filename, overwrite);
   cairo_surface_t *cs;
 
   if (!output) {
@@ -464,9 +466,9 @@ static struct draw_methods ps_draw_methods = {
 };
 
 void
-output_ps(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+output_ps(hwloc_topology_t topology, const char *filename, int overwrite, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
-  FILE *output = open_file(filename, "w");
+  FILE *output = open_output(filename, overwrite);
   cairo_surface_t *cs;
 
   if (!output) {
@@ -503,12 +505,12 @@ static struct draw_methods svg_draw_methods = {
 };
 
 void
-output_svg(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+output_svg(hwloc_topology_t topology, const char *filename, int overwrite, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
   FILE *output;
   cairo_surface_t *cs;
 
-  output = open_file(filename, "w");
+  output = open_output(filename, overwrite);
   if (!output) {
     fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
     return;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
index 9021efc..6822612 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2013 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -618,11 +618,85 @@ os_device_draw(hwloc_topology_t topology __hwloc_attribute_unused, struct draw_m
   unsigned totwidth = gridsize;
   struct style style;
   int n;
+  unsigned nmorelines = 0, i;
+  char morelines[3][64];
 
   if (fontsize) {
+    if (HWLOC_OBJ_OSDEV_COPROC == level->attr->osdev.type) {
+      const char *coproctype = hwloc_obj_get_info_by_name(level, "CoProcType");
+
+      if (!strcmp(coproctype, "CUDA")) {
+	const char *value, *value2, *value3;
+
+	value = hwloc_obj_get_info_by_name(level, "CUDAGlobalMemorySize");
+	if (value) {
+	  unsigned long long mb = strtoull(value, NULL, 10) / 1024;
+	  snprintf(morelines[nmorelines], sizeof(morelines[0]),
+		   mb >= 10240 ? "%llu GB" : "%llu MB",
+		   mb >= 10240 ? mb/1024 : mb);
+	  nmorelines++;
+	}
+
+	value = hwloc_obj_get_info_by_name(level, "CUDAL2CacheSize");
+	if (value) {
+	  unsigned long long kb = strtoull(value, NULL, 10);
+	  snprintf(morelines[nmorelines], sizeof(morelines[0]),
+		   kb >= 10240 ? "L2 (%llu MB)" : "L2 (%llu kB)",
+		   kb >= 10240 ? kb/1024 : kb);
+	  nmorelines++;
+	}
+
+	value = hwloc_obj_get_info_by_name(level, "CUDAMultiProcessors");
+	value2 = hwloc_obj_get_info_by_name(level, "CUDACoresPerMP");
+	value3 = hwloc_obj_get_info_by_name(level, "CUDASharedMemorySizePerMP");
+	if (value && value2 && value3) {
+	  snprintf(morelines[nmorelines], sizeof(morelines[0]), "%s MP x (%s cores + %s kB)", value, value2, value3);
+	  nmorelines++;
+	}
+
+      } else if (!strcmp(coproctype, "MIC")) {
+	const char *value;
+	value = hwloc_obj_get_info_by_name(level, "MICActiveCores");
+	if (value) {
+	  snprintf(morelines[nmorelines], sizeof(morelines[0]), "%s cores", value);
+	  nmorelines++;
+	}
+	value = hwloc_obj_get_info_by_name(level, "MICMemorySize");
+	if (value) {
+	  unsigned long long mb = strtoull(value, NULL, 10) / 1024;
+	  snprintf(morelines[nmorelines], sizeof(morelines[0]),
+		   mb >= 10240 ? "%llu GB" : "%llu MB",
+		   mb >= 10240 ? mb/1024 : mb);
+	  nmorelines++;
+	}
+
+      } else if (!strcmp(coproctype, "OpenCL")) {
+	const char *value;
+	value = hwloc_obj_get_info_by_name(level, "OpenCLComputeUnits");
+	if (value) {
+	  unsigned long long cu = strtoull(value, NULL, 10);
+	  snprintf(morelines[nmorelines], sizeof(morelines[0]), "%llu compute units", cu);
+	  nmorelines++;
+	}
+	value = hwloc_obj_get_info_by_name(level, "OpenCLGlobalMemorySize");
+	if (value) {
+	  unsigned long long mb = strtoull(value, NULL, 10) / 1024;
+	  snprintf(morelines[nmorelines], sizeof(morelines[0]),
+		   mb >= 10240 ? "%llu GB" : "%llu MB",
+		   mb >= 10240 ? mb/1024 : mb);
+	  nmorelines++;
+	}
+      }
+    }
+
     n = strlen(level->name);
+    for(i=0; i<nmorelines; i++) {
+      int nn = strlen(morelines[i]);
+      if (nn > n)
+	n = nn;
+    }
     textwidth = (n * fontsize * 3) / 4;
-    totheight = gridsize + fontsize + gridsize;
+    totheight = gridsize + (fontsize + gridsize)*(nmorelines+1);
     totwidth = gridsize + textwidth + gridsize;
   }
 
@@ -632,8 +706,11 @@ os_device_draw(hwloc_topology_t topology __hwloc_attribute_unused, struct draw_m
   lstopo_set_object_color(methods, topology, level, 0, &style);
   methods->box(output, style.bg.r, style.bg.g, style.bg.b, depth, x, *retwidth, y, *retheight);
 
-  if (fontsize)
+  if (fontsize) {
     methods->text(output, style.t.r, style.t.g, style.t.b, fontsize, depth-1, x + gridsize, y + gridsize, level->name);
+    for(i=0; i<nmorelines; i++)
+      methods->text(output, style.t.r, style.t.g, style.t.b, fontsize, depth-1, x + gridsize, y + (i+2)*gridsize + (i+1)*fontsize, morelines[i]);
+  }
 }
 
 static void
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c
index 801e3f8..636dca7 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -116,9 +116,9 @@ static struct draw_methods fig_draw_methods = {
 };
 
 void
-output_fig (hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+output_fig (hwloc_topology_t topology, const char *filename, int overwrite, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
-  FILE *output = open_file(filename, "w");
+  FILE *output = open_output(filename, overwrite);
   if (!output) {
     fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
     return;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c
index 64369f7..5d6c27f 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -143,19 +143,15 @@ output_only (hwloc_topology_t topology, hwloc_obj_t l, FILE *output, int logical
     output_only (topology, l->children[x], output, logical, verbose_mode);
 }
 
-void output_console(hwloc_topology_t topology, const char *filename, int logical, int legend __hwloc_attribute_unused, int verbose_mode)
+void output_console(hwloc_topology_t topology, const char *filename, int overwrite, int logical, int legend __hwloc_attribute_unused, int verbose_mode)
 {
   unsigned topodepth;
   FILE *output;
 
-  if (!filename || !strcmp(filename, "-"))
-    output = stdout;
-  else {
-    output = open_file(filename, "w"); 
-    if (!output) {
-      fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
-      return;
-    }
+  output = open_output(filename, overwrite);
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
   }
 
   topodepth = hwloc_topology_get_depth(topology);
@@ -251,7 +247,7 @@ void output_console(hwloc_topology_t topology, const char *filename, int logical
     fclose(output);
 }
 
-void output_synthetic(hwloc_topology_t topology, const char *filename, int logical __hwloc_attribute_unused, int legend __hwloc_attribute_unused, int verbose_mode __hwloc_attribute_unused)
+void output_synthetic(hwloc_topology_t topology, const char *filename, int overwrite, int logical __hwloc_attribute_unused, int legend __hwloc_attribute_unused, int verbose_mode __hwloc_attribute_unused)
 {
   FILE *output;
   hwloc_obj_t obj = hwloc_get_root_obj(topology);
@@ -263,20 +259,18 @@ void output_synthetic(hwloc_topology_t topology, const char *filename, int logic
     return;
   }
 
-  if (!filename || !strcmp(filename, "-"))
-    output = stdout;
-  else {
-    output = open_file(filename, "w");
-    if (!output) {
-      fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
-      return;
-    }
+  output = open_output(filename, overwrite);
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
   }
 
   arity = obj->arity;
   while (arity) {
+    char types[64];
     obj = obj->first_child;
-    fprintf(output, "%s:%u ", hwloc_obj_type_string(obj->type), arity);
+    hwloc_obj_type_snprintf(types, sizeof(types), obj, 1);
+    fprintf(output, "%s:%u ", types, arity);
     arity = obj->arity;
   }
   fprintf(output, "\n");
@@ -661,7 +655,7 @@ text_text(void *output, int r, int g, int b, int size __hwloc_attribute_unused,
   x /= (gridsize/2);
   y /= gridsize;
 
-#if defined(HAVE_PUTWC) && !defined(__MINGW32__)
+#if defined(HAVE_PUTWC) && !defined(__MINGW32__) && !defined(_MSC_VER)
   {
     size_t len = strlen(text) + 1;
     wchar_t *wbuf = malloc(len * sizeof(wchar_t)), *wtext;
@@ -684,7 +678,7 @@ static struct draw_methods text_draw_methods = {
   text_text,
 };
 
-void output_text(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+void output_text(hwloc_topology_t topology, const char *filename, int overwrite, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
   FILE *output;
   struct display *disp;
@@ -696,14 +690,10 @@ void output_text(hwloc_topology_t topology, const char *filename, int logical, i
   char *tmp;
 #endif
 
-  if (!filename || !strcmp(filename, "-"))
-    output = stdout;
-  else {
-    output = open_file(filename, "w"); 
-    if (!output) {
-      fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
-      return;
-    }
+  output = open_output(filename, overwrite);
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
   }
 
   /* Try to use utf-8 characters */
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c
index 60baeca..b3b27ca 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2010, 2012 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -291,7 +291,7 @@ struct draw_methods windows_draw_methods = {
 };
 
 void
-output_windows (hwloc_topology_t topology, const char *filename __hwloc_attribute_unused, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+output_windows (hwloc_topology_t topology, const char *filename __hwloc_attribute_unused, int overwrite __hwloc_attribute_unused, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
 {
   HWND toplevel;
   MSG msg;
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c
index 288f310..c8a336a 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -10,13 +10,22 @@
 
 #include <hwloc.h>
 #include <string.h>
+#include <sys/stat.h>
 
 #include "lstopo.h"
 
-void output_xml(hwloc_topology_t topology, const char *filename, int logical __hwloc_attribute_unused, int legend __hwloc_attribute_unused, int verbose_mode __hwloc_attribute_unused)
+void output_xml(hwloc_topology_t topology, const char *filename, int overwrite, int logical __hwloc_attribute_unused, int legend __hwloc_attribute_unused, int verbose_mode __hwloc_attribute_unused)
 {
+  struct stat st;
+
   if (!filename || !strcasecmp(filename, "-.xml"))
     filename = "-";
+  /* hwloc_topology_export_xml() writes to stdout if "-" is given */
+
+  if (strcmp(filename, "-") && !stat(filename, &st) && !overwrite) {
+    fprintf(stderr, "Failed to export XML to %s (%s)\n", filename, strerror(EEXIST));
+    return;
+  }
 
   if (hwloc_topology_export_xml(topology, filename) < 0) {
     fprintf(stderr, "Failed to export XML to %s (%s)\n", filename, strerror(errno));
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in
index 6fe1035..3e4ebe9 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in
@@ -1,5 +1,5 @@
 .\" -*- nroff -*-
-.\" Copyright © 2009-2013 Inria.  All rights reserved.
+.\" Copyright © 2009-2014 Inria.  All rights reserved.
 .\" Copyright © 2009-2010 Université of Bordeaux
 .\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 .\" See COPYING in top-level directory.
@@ -63,6 +63,9 @@ about specific objects.
 \fB\-s\fR \fB\-\-silent\fR
 Reduce the amount of details to show.
 .TP
+\fB\s\fR \fB\-\-force\fR
+If the destination file already exists, overwrite it.
+.TP
 \fB\-l\fR \fB\-\-logical\fR
 Display hwloc logical indexes instead of physical/OS indexes (default for console output).
 These indexes are prefixed with "L#".
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c
index 8dd3501..5651265 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -19,6 +19,7 @@
 #include <dirent.h>
 #endif
 #include <fcntl.h>
+#include <sys/stat.h>
 #include <assert.h>
 
 #ifdef LSTOPO_HAVE_GRAPHICS
@@ -48,22 +49,29 @@ unsigned int fontsize = 10;
 unsigned int gridsize = 10;
 enum lstopo_orient_e force_orient[HWLOC_OBJ_TYPE_MAX];
 
+static int overwrite = 0;
 static int logical = -1;
 static unsigned int legend = 1;
 static unsigned int top = 0;
 
-FILE *open_file(const char *filename, const char *mode)
+FILE *open_output(const char *filename, int overwrite)
 {
   const char *extn;
+  struct stat st;
 
-  if (!filename)
+  if (!filename || !strcmp(filename, "-"))
     return stdout;
 
   extn = strrchr(filename, '.');
   if (filename[0] == '-' && extn == filename + 1)
     return stdout;
 
-  return fopen(filename, mode);
+  if (!stat(filename, &st) && !overwrite) {
+    errno = EEXIST;
+    return NULL;
+  }
+
+  return fopen(filename, "w");
 }
 
 static hwloc_obj_t insert_task(hwloc_topology_t topology, hwloc_cpuset_t cpuset, const char * name)
@@ -109,7 +117,7 @@ static void add_process_objects(hwloc_topology_t topology)
 
   support = hwloc_topology_get_support(topology);
 
-  if (!support->cpubind->get_thisproc_cpubind)
+  if (!support->cpubind->get_proc_cpubind)
     return;
 
   dir  = opendir("/proc");
@@ -251,6 +259,7 @@ void usage(const char *name, FILE *where)
   fprintf (where, "Output options:\n");
   fprintf (where, "  --output-format <format>\n");
   fprintf (where, "  --of <format>         Force the output to use the given format\n");
+  fprintf (where, "  -f --force            Overwrite the output file if it exists\n");
   fprintf (where, "Textual output options:\n");
   fprintf (where, "  --only <type>         Only show objects of the given type in the textual output\n");
   fprintf (where, "  -v --verbose          Include additional details\n");
@@ -388,7 +397,9 @@ main (int argc, char *argv[])
       } else if (!strcmp (argv[0], "-h") || !strcmp (argv[0], "--help")) {
 	usage(callname, stdout);
         exit(EXIT_SUCCESS);
-      } else if (!strcmp (argv[0], "-l") || !strcmp (argv[0], "--logical"))
+      } else if (!strcmp (argv[0], "-f") || !strcmp (argv[0], "--force"))
+	overwrite = 1;
+      else if (!strcmp (argv[0], "-l") || !strcmp (argv[0], "--logical"))
 	logical = 1;
       else if (!strcmp (argv[0], "-p") || !strcmp (argv[0], "--physical"))
 	logical = 0;
@@ -405,8 +416,7 @@ main (int argc, char *argv[])
 	  usage (callname, stderr);
 	  exit(EXIT_FAILURE);
 	}
-        lstopo_show_only = hwloc_obj_type_of_string(argv[1]);
-	if (lstopo_show_only == (hwloc_obj_type_t) -1)
+        if (hwloc_obj_type_sscanf(argv[1], &lstopo_show_only, NULL, NULL, 0) < 0)
 	  fprintf(stderr, "Unsupported type `%s' passed to --only, ignoring.\n", argv[1]);
 	opt = 1;
       }
@@ -416,8 +426,7 @@ main (int argc, char *argv[])
 	  usage (callname, stderr);
 	  exit(EXIT_FAILURE);
 	}
-	type = hwloc_obj_type_of_string(argv[1]);
-	if (type == (hwloc_obj_type_t) -1)
+	if (hwloc_obj_type_sscanf(argv[1], &type, NULL, NULL, 0) < 0)
 	  fprintf(stderr, "Unsupported type `%s' passed to --ignore, ignoring.\n", argv[1]);
 	else if (type == HWLOC_OBJ_PU)
 	  lstopo_ignore_pus = 1;
@@ -467,11 +476,10 @@ main (int argc, char *argv[])
 	  hwloc_obj_type_t type;
 	  if (end)
 	    *end = '\0';
-	  type = hwloc_obj_type_of_string(tmp);
-	  if (type != (hwloc_obj_type_t) -1)
-	    force_orient[type] = orient;
-	  else
+	  if (hwloc_obj_type_sscanf(tmp, &type, NULL, NULL, 0) < 0)
 	    fprintf(stderr, "Unsupported type `%s' passed to %s, ignoring.\n", tmp, argv[0]);
+	  else
+	    force_orient[type] = orient;
 	  if (!end)
 	    break;
 	  tmp = end+1;
@@ -562,7 +570,7 @@ main (int argc, char *argv[])
       return err;
   }
 
-  if (lstopo_pid_number != -1 && lstopo_pid_number != 0) {
+  if (lstopo_pid_number > 0) {
     lstopo_pid = hwloc_pid_from_number(lstopo_pid_number, 0);
     if (hwloc_topology_set_pid(topology, lstopo_pid)) {
       perror("Setting target pid");
@@ -582,7 +590,7 @@ main (int argc, char *argv[])
   if (restrictstring) {
     hwloc_bitmap_t restrictset = hwloc_bitmap_alloc();
     if (!strcmp (restrictstring, "binding")) {
-      if (lstopo_pid_number != -1 && lstopo_pid_number != 0)
+      if (lstopo_pid_number > 0)
 	hwloc_get_proc_cpubind(topology, lstopo_pid, restrictset, HWLOC_CPUBIND_PROCESS);
       else
 	hwloc_get_cpubind(topology, restrictset, HWLOC_CPUBIND_PROCESS);
@@ -636,14 +644,14 @@ main (int argc, char *argv[])
       if (getenv("DISPLAY")) {
         if (logical == -1)
           logical = 0;
-        output_x11(topology, NULL, logical, legend, verbose_mode);
+        output_x11(topology, NULL, overwrite, logical, legend, verbose_mode);
       } else
 #endif /* CAIRO_HAS_XLIB_SURFACE */
 #ifdef HWLOC_WIN_SYS
       {
         if (logical == -1)
           logical = 0;
-        output_windows(topology, NULL, logical, legend, verbose_mode);
+        output_windows(topology, NULL, overwrite, logical, legend, verbose_mode);
       }
 #endif
 #endif /* !LSTOPO_HAVE_GRAPHICS */
@@ -651,47 +659,47 @@ main (int argc, char *argv[])
       {
         if (logical == -1)
           logical = 1;
-        output_console(topology, NULL, logical, legend, verbose_mode);
+        output_console(topology, NULL, overwrite, logical, legend, verbose_mode);
       }
 #endif
       break;
 
     case LSTOPO_OUTPUT_CONSOLE:
-      output_console(topology, filename, logical, legend, verbose_mode);
+      output_console(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
     case LSTOPO_OUTPUT_SYNTHETIC:
-      output_synthetic(topology, filename, logical, legend, verbose_mode);
+      output_synthetic(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
     case LSTOPO_OUTPUT_TEXT:
-      output_text(topology, filename, logical, legend, verbose_mode);
+      output_text(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
     case LSTOPO_OUTPUT_FIG:
-      output_fig(topology, filename, logical, legend, verbose_mode);
+      output_fig(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
 #ifdef LSTOPO_HAVE_GRAPHICS
 # if CAIRO_HAS_PNG_FUNCTIONS
     case LSTOPO_OUTPUT_PNG:
-      output_png(topology, filename, logical, legend, verbose_mode);
+      output_png(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
 # endif /* CAIRO_HAS_PNG_FUNCTIONS */
 # if CAIRO_HAS_PDF_SURFACE
     case LSTOPO_OUTPUT_PDF:
-      output_pdf(topology, filename, logical, legend, verbose_mode);
+      output_pdf(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
 # endif /* CAIRO_HAS_PDF_SURFACE */
 # if CAIRO_HAS_PS_SURFACE
     case LSTOPO_OUTPUT_PS:
-      output_ps(topology, filename, logical, legend, verbose_mode);
+      output_ps(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
 #endif /* CAIRO_HAS_PS_SURFACE */
 #if CAIRO_HAS_SVG_SURFACE
     case LSTOPO_OUTPUT_SVG:
-      output_svg(topology, filename, logical, legend, verbose_mode);
+      output_svg(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
 #endif /* CAIRO_HAS_SVG_SURFACE */
 #endif /* LSTOPO_HAVE_GRAPHICS */
     case LSTOPO_OUTPUT_XML:
-      output_xml(topology, filename, logical, legend, verbose_mode);
+      output_xml(topology, filename, overwrite, logical, legend, verbose_mode);
       break;
     default:
       fprintf(stderr, "file format not supported\n");
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h
index cf0f52a..9747447 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2013 Inria.  All rights reserved.
+ * Copyright © 2009-2014 Inria.  All rights reserved.
  * Copyright © 2009-2010, 2012 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -20,9 +20,9 @@ extern hwloc_pid_t lstopo_pid;
 extern char ** lstopo_append_legends;
 extern unsigned lstopo_append_legends_nr;
 
-typedef void output_method (struct hwloc_topology *topology, const char *output, int logical, int legend, int verbose_mode);
+typedef void output_method (struct hwloc_topology *topology, const char *output, int overwrite, int logical, int legend, int verbose_mode);
 
-FILE *open_file(const char *filename, const char *mode) __hwloc_attribute_malloc;
+FILE *open_output(const char *filename, int overwrite) __hwloc_attribute_malloc;
 
 extern output_method output_console, output_synthetic, output_text, output_x11, output_fig, output_png, output_pdf, output_ps, output_svg, output_windows, output_xml;
 
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output
index 35fb98d..b74d5a3 100644
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output
@@ -50,3 +50,18 @@
 0x00000038
 0x0003fe00
 0x07fc0000
+
+0x00000001
+0x00000008
+0x00000200
+0x00040000
+
+0x07000000
+0x00e00000
+0x0003fe00
+0x000001ff
+
+0x04000000
+0x00800000
+0x00020000
+0x00000100
diff --git a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
index f820757..c2d7276 100755
--- a/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
+++ b/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
@@ -3,7 +3,7 @@
 
 #
 # Copyright © 2009 CNRS
-# Copyright © 2009-2013 Inria.  All rights reserved.
+# Copyright © 2009-2014 Inria.  All rights reserved.
 # Copyright © 2009 Université Bordeaux 1
 # See COPYING in top-level directory.
 #
@@ -40,6 +40,12 @@ set -e
   $distrib --if synthetic --input "2 2 2" 16
   echo
   $distrib --if synthetic --input "3 3 3" 4
+  echo
+  $distrib --if synthetic --input "3 3 3" 4 --single
+  echo
+  $distrib --if synthetic --input "3 3 3" 4 --reverse
+  echo
+  $distrib --if synthetic --input "3 3 3" 4 --reverse --single
 ) > "$file"
 diff @HWLOC_DIFF_U@ $HWLOC_top_srcdir/utils/test-hwloc-distrib.output "$file"
 rm -rf "$tmp"

-----------------------------------------------------------------------

Summary of changes:
 src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am    |   31 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/NEWS           |   76 ++-
 src/pm/hydra/tools/topo/hwloc/hwloc/README         |    9 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/VERSION        |    4 +-
 .../tools/topo/hwloc/hwloc/config/distscript.csh   |   68 +--
 .../hydra/tools/topo/hwloc/hwloc/config/hwloc.m4   |   37 +-
 .../topo/hwloc/hwloc/config/hwloc_internal.m4      |   12 +-
 .../contrib/ci.inria.fr/hwloc-windows-build.sh     |   53 ++
 .../hwloc/hwloc/contrib/dist/make_dist_tarball     |    2 +-
 .../tools/topo/hwloc/hwloc/contrib/git/README.txt  |   10 +
 .../hwloc/contrib/git/github-send-commit-mails.pl  |   42 ++
 .../nightly/build-server/hwloc-nightly-tarball.sh  |   80 +++
 .../hwloc/contrib/nightly/make_snapshot_tarball    |    6 +-
 .../hwloc/hwloc/contrib/update-my-copyright.pl     |   22 +-
 .../tools/topo/hwloc/hwloc/contrib/windows/README  |   33 +
 .../hwloc/contrib/windows/hwloc-annotate.vcxproj   |   90 +++
 .../contrib/windows/hwloc-annotate.vcxproj.filters |   72 ++
 .../hwloc/contrib/windows/hwloc-assembler.vcxproj  |   89 +++
 .../windows/hwloc-assembler.vcxproj.filters        |   69 ++
 .../hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj |   91 +++
 .../contrib/windows/hwloc-bind.vcxproj.filters     |   75 +++
 .../hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj |   91 +++
 .../contrib/windows/hwloc-calc.vcxproj.filters     |   75 +++
 .../hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj |   89 +++
 .../contrib/windows/hwloc-diff.vcxproj.filters     |   69 ++
 .../hwloc/contrib/windows/hwloc-distances.vcxproj  |   90 +++
 .../windows/hwloc-distances.vcxproj.filters        |   72 ++
 .../hwloc/contrib/windows/hwloc-distrib.vcxproj    |   90 +++
 .../contrib/windows/hwloc-distrib.vcxproj.filters  |   72 ++
 .../hwloc/hwloc/contrib/windows/hwloc-info.vcxproj |   91 +++
 .../contrib/windows/hwloc-info.vcxproj.filters     |   75 +++
 .../hwloc/contrib/windows/hwloc-patch.vcxproj      |   89 +++
 .../contrib/windows/hwloc-patch.vcxproj.filters    |   69 ++
 .../topo/hwloc/hwloc/contrib/windows/hwloc.sln     |  113 ++++
 .../hwloc/hwloc/contrib/windows/hwloc_config.h     |   61 ++
 .../hwloc/hwloc/contrib/windows/libhwloc.vcxproj   |  234 +++++++
 .../hwloc/contrib/windows/libhwloc.vcxproj.filters |  123 ++++
 .../contrib/windows/lstopo-no-graphics.vcxproj     |   96 +++
 .../windows/lstopo-no-graphics.vcxproj.filters     |   90 +++
 .../hwloc/hwloc/contrib/windows/lstopo-win.vcxproj |   98 +++
 .../contrib/windows/lstopo-win.vcxproj.filters     |   93 +++
 .../hwloc/hwloc/contrib/windows/lstopo.vcxproj     |   97 +++
 .../hwloc/contrib/windows/lstopo.vcxproj.filters   |   93 +++
 .../hwloc/hwloc/contrib/windows/private_config.h   |  695 ++++++++++++++++++++
 .../hwloc/contrib/windows/static-components.h      |   17 +
 .../hydra/tools/topo/hwloc/hwloc/doc/Makefile.am   |  142 ++---
 .../hydra/tools/topo/hwloc/hwloc/doc/doxygen.cfg   |    4 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy |   59 ++-
 .../tools/topo/hwloc/hwloc/include/Makefile.am     |    4 +-
 .../hydra/tools/topo/hwloc/hwloc/include/hwloc.h   |   55 ++-
 .../topo/hwloc/hwloc/include/hwloc/deprecated.h    |   41 ++-
 .../tools/topo/hwloc/hwloc/include/hwloc/diff.h    |   37 +-
 .../tools/topo/hwloc/hwloc/include/hwloc/helper.h  |   77 ++-
 .../tools/topo/hwloc/hwloc/include/hwloc/linux.h   |   13 +
 .../tools/topo/hwloc/hwloc/include/hwloc/plugins.h |   69 ++-
 .../tools/topo/hwloc/hwloc/include/hwloc/rename.h  |   38 +-
 .../hwloc/hwloc/include/private/autogen/README.txt |    3 +-
 .../topo/hwloc/hwloc/include/private/cpuid-x86.h   |   89 +++
 .../tools/topo/hwloc/hwloc/include/private/cpuid.h |   79 ---
 .../topo/hwloc/hwloc/include/private/private.h     |   16 +-
 .../hydra/tools/topo/hwloc/hwloc/src/Makefile.am   |    6 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c     |    5 +-
 .../hydra/tools/topo/hwloc/hwloc/src/components.c  |    4 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/src/diff.c     |   14 +-
 .../hydra/tools/topo/hwloc/hwloc/src/distances.c   |    4 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c     |   33 +-
 .../tools/topo/hwloc/hwloc/src/topology-aix.c      |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-bgq.c      |    9 +-
 .../tools/topo/hwloc/hwloc/src/topology-cuda.c     |   47 ++-
 .../tools/topo/hwloc/hwloc/src/topology-darwin.c   |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-freebsd.c  |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-hpux.c     |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-linux.c    |  419 ++++++++++---
 .../tools/topo/hwloc/hwloc/src/topology-netbsd.c   |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-noos.c     |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-opencl.c   |   19 +-
 .../tools/topo/hwloc/hwloc/src/topology-osf.c      |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-pci.c      |   13 +-
 .../tools/topo/hwloc/hwloc/src/topology-solaris.c  |    2 +-
 .../topo/hwloc/hwloc/src/topology-synthetic.c      |  115 ++--
 .../tools/topo/hwloc/hwloc/src/topology-windows.c  |    2 +-
 .../tools/topo/hwloc/hwloc/src/topology-x86.c      |  264 +++++---
 .../topo/hwloc/hwloc/src/topology-xml-libxml.c     |   13 +-
 .../topo/hwloc/hwloc/src/topology-xml-nolibxml.c   |    6 +-
 .../tools/topo/hwloc/hwloc/src/topology-xml.c      |    5 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c |  202 +++++--
 .../hydra/tools/topo/hwloc/hwloc/src/traversal.c   |   74 ++-
 .../tools/topo/hwloc/hwloc/tests/hwloc_backends.c  |    9 +-
 .../tools/topo/hwloc/hwloc/tests/hwloc_custom.c    |    4 +-
 .../hwloc/tests/hwloc_get_last_cpu_location.c      |    1 -
 .../tests/hwloc_get_obj_below_array_by_type.c      |    4 +-
 .../topo/hwloc/hwloc/tests/hwloc_object_userdata.c |    1 -
 .../linux/16em64t-4s2ca2c-cpusetreorder.output     |   60 ++
 .../linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2    |  Bin 0 -> 5677 bytes
 .../hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output |   73 --
 .../hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2      |  Bin 5408 -> 0 bytes
 .../hwloc/hwloc/tests/linux/16ia64-8n2s.output     |   34 +-
 .../hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2    |  Bin 6115 -> 6170 bytes
 .../topo/hwloc/hwloc/tests/linux/1alpha.output     |    2 +-
 .../hwloc/tests/linux/256ppc-8n8s4t-nocache.output |  130 ++--
 .../hwloc/tests/linux/256ppc-8n8s4t-nosys.output   |    2 +-
 .../hwloc/hwloc/tests/linux/256ppc-8n8s4t.output   |  130 ++--
 .../hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2  |  Bin 83316 -> 83319 bytes
 .../topo/hwloc/hwloc/tests/linux/2arm-2c.output    |    2 +-
 .../topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2   |  Bin 4355 -> 3260 bytes
 .../topo/hwloc/hwloc/tests/linux/2ps3-2t.output    |    2 +-
 .../topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2   |  Bin 785 -> 815 bytes
 .../tests/linux/8em64t-2s2ca2c-buggynuma.output    |   49 ++
 .../tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2   |  Bin 0 -> 10547 bytes
 .../hwloc/hwloc/tests/linux/8em64t-4c2t.output     |    4 +-
 .../hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2    |  Bin 18469 -> 18476 bytes
 .../tools/topo/hwloc/hwloc/tests/linux/Makefile.am |    8 +-
 .../tests/linux/gather/test-gather-topology.sh.in  |    4 +-
 .../hwloc/tests/linux/hwloc-gather-topology.in     |   19 +-
 .../tests/ports/include/cuda/cuda_runtime_api.h    |   15 +-
 .../hwloc/tests/ports/include/opencl/CL/cl_ext.h   |    5 +-
 .../tests/ports/include/solaris/sys/procset.h      |   19 +-
 .../tools/topo/hwloc/hwloc/tests/rename/main.c     |    2 +-
 .../tools/topo/hwloc/hwloc/utils/hwloc-bind.1in    |    2 +-
 .../tools/topo/hwloc/hwloc/utils/hwloc-bind.c      |   33 +-
 .../tools/topo/hwloc/hwloc/utils/hwloc-calc.c      |    6 +-
 .../tools/topo/hwloc/hwloc/utils/hwloc-calc.h      |   77 +---
 .../tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in |    9 +-
 .../tools/topo/hwloc/hwloc/utils/hwloc-distrib.c   |   37 +-
 .../tools/topo/hwloc/hwloc/utils/hwloc-info.c      |    7 +-
 .../tools/topo/hwloc/hwloc/utils/hwloc-ps.1in      |    6 +
 .../hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c  |   35 +-
 .../tools/topo/hwloc/hwloc/utils/lstopo-cairo.c    |   24 +-
 .../tools/topo/hwloc/hwloc/utils/lstopo-draw.c     |   83 +++-
 .../tools/topo/hwloc/hwloc/utils/lstopo-fig.c      |    6 +-
 .../tools/topo/hwloc/hwloc/utils/lstopo-text.c     |   50 +-
 .../tools/topo/hwloc/hwloc/utils/lstopo-windows.c  |    4 +-
 .../tools/topo/hwloc/hwloc/utils/lstopo-xml.c      |   13 +-
 .../hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in  |    5 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c |   64 +-
 src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h |    6 +-
 .../hwloc/hwloc/utils/test-hwloc-distrib.output    |   15 +
 .../hwloc/hwloc/utils/test-hwloc-distrib.sh.in     |    8 +-
 138 files changed, 5612 insertions(+), 1206 deletions(-)
 create mode 100755 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/ci.inria.fr/hwloc-windows-build.sh
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/README.txt
 create mode 100755 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/git/github-send-commit-mails.pl
 create mode 100755 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/nightly/build-server/hwloc-nightly-tarball.sh
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/README
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-annotate.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-assembler.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-bind.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-calc.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-diff.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distances.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-distrib.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-info.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc-patch.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc.sln
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/hwloc_config.h
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/libhwloc.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-no-graphics.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo-win.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/lstopo.vcxproj.filters
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/private_config.h
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/contrib/windows/static-components.h
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid-x86.h
 delete mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.output
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2ca2c-cpusetreorder.tar.bz2
 delete mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output
 delete mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.output
 create mode 100644 src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c-buggynuma.tar.bz2


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list