I spent some time cleaning up and documenting all this. There are likely still some things to fix/improve, but we need some user feedback at some point. Should start a long release-candidate cycle by doing a 1.3rc1 with the current trunk and fix many remaining things in the next RCs?
The worst that could happen is people disagreeing with the way we store I/O object in the topology. It's better to get feedback about that early. Ideally, we would only have to improve the documentation and some "minor" things like the way command-line tools manipulate I/O devices. We can fix these after rc1. For the record, I changed the way to specify I/O devices on the command-line (hwloc-bind and hwloc-calc): * pci=0000:00:03.2 for specifying a pci device by bus ID (domain is optional, function and device are not yet) * os=eth0 for specifying the "eth0" software/OS device This new "equal" sign becomes a way to find a object by a unique identifier. We actually also support pci:vendor:device:index but I didn't document this one because I am not sure it will help in the end. If there's a single PCI device with these vendor/device IDs, no need to specify its index. If there are multiple of them, it's nearly impossible for the application to know whether it's using the first or the second one (PCI numbering varies with OS/BIOS/...). By the way, while documenting all this, I found out that "software device" may be a better name than our current "OS device". Brice