FWIW, here's the difference between a root and non-root run on a system with a Cisco VIC:
Root XML contains additional PCI data: <info name="DMIProductSerial" value="FCH1623V1W4"/> <info name="DMIProductUUID" value="2BF24625-07B1-4990-B642-1F4C70056CC7"/> <info name="DMIBoardSerial" value="FCH16207CF1"/> <info name="DMIChassisSerial" value="FCH1623V1W4"/> And the usNIC VFs have a link speed: <object type="Bridge" os_index="17" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1b" bridge_type="1-1" depth="0" bridge_pci="0000:[02-03]" pci_busid="0000:00:01.1" pci_type="0604 [8086:3c03] [0000:0000] 07" pci_link_speed="2.000000"> (the non-root run has "0.0" for the link speed: <object type="Bridge" os_index="17" name="Intel Corporation Xeon E5/Core i7 IIO PCI Express Root Port 1b" bridge_type="1-1" depth="0" bridge_pci="0000:[02-03]" pci_busid="0000:00:01.1" pci_type="0604 [8086:3c03] [0000:0000] 07" pci_link_speed="0.000000"> > On Jan 10, 2015, at 5:42 AM, git...@crest.iu.edu wrote: > > 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 "open-mpi/hwloc". > > The branch, master has been updated > via 85ea6e4acc456d398fa995d671960ccc0dff0d42 (commit) > from d7cf79327ae6b87ac451b95be88380d0266bbc4a (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 ----------------------------------------------------------------- > https://github.com/open-mpi/hwloc/commit/85ea6e4acc456d398fa995d671960ccc0dff0d42 > > commit 85ea6e4acc456d398fa995d671960ccc0dff0d42 > Author: Brice Goglin <brice.gog...@inria.fr> > Date: Sat Jan 10 10:56:25 2015 +0100 > > pci: fix SR-IOV VF vendor/device names > > Commit 626129d2818693e62b83c1cfa2ba6e058e5bed66 fixed the hwloc > device/vendor numbers obtained from libpciaccess. > But the corresponding names are still retrieved from pciaccess numbers, > so fix these numbers inside pciaccess structures before retrieving the > names. > > diff --git a/hwloc/topology-pci.c b/hwloc/topology-pci.c > index c069d86..3a3ad6b 100644 > --- a/hwloc/topology-pci.c > +++ b/hwloc/topology-pci.c > @@ -135,22 +135,7 @@ hwloc_look_pci(struct hwloc_backend *backend) > /* try to read the device_class */ > device_class = pcidev->device_class >> 8; > > - /* might be useful for debugging (note that domain might be truncated) */ > - os_index = (domain << 20) + (pcidev->bus << 12) + (pcidev->dev << 4) + > pcidev->func; > - > - obj = hwloc_alloc_setup_object(HWLOC_OBJ_PCI_DEVICE, os_index); > - obj->attr->pcidev.domain = domain; > - obj->attr->pcidev.bus = pcidev->bus; > - obj->attr->pcidev.dev = pcidev->dev; > - obj->attr->pcidev.func = pcidev->func; > - obj->attr->pcidev.vendor_id = pcidev->vendor_id; > - obj->attr->pcidev.device_id = pcidev->device_id; > - obj->attr->pcidev.class_id = device_class; > - obj->attr->pcidev.revision = config_space_cache[PCI_REVISION_ID]; > - > - obj->attr->pcidev.linkspeed = 0; /* unknown */ > - offset = hwloc_pci_find_cap(config_space_cache, PCI_CAP_ID_EXP); > - > + /* fixup SR-IOV buggy VF device/vendor IDs */ > if (0xffff == pcidev->vendor_id && 0xffff == pcidev->device_id) { > /* SR-IOV puts ffff:ffff in Virtual Function config space. > * The actual VF device ID is stored at a special (dynamic) location in > the Physical Function config space. > @@ -158,7 +143,7 @@ hwloc_look_pci(struct hwloc_backend *backend) > * > * libpciaccess just returns ffff:ffff, needs to be fixed. > * linuxpci is OK because sysfs files are already fixed the kernel. > - * pciutils is OK when it uses those Linux sysfs files. > + * (pciutils is OK when it uses those Linux sysfs files.) > * > * Reading these files is an easy way to work around the libpciaccess > issue on Linux, > * but we have no way to know if this is caused by SR-IOV or not. > @@ -185,7 +170,8 @@ hwloc_look_pci(struct hwloc_backend *backend) > read = fread(value, 1, sizeof(value), file); > fclose(file); > if (read) > - obj->attr->pcidev.vendor_id = strtoul(value, NULL, 16); > + /* fixup the pciaccess struct so that pci_device_get_vendor_name() is > correct later. */ > + pcidev->vendor_id = strtoul(value, NULL, 16); > } > > snprintf(path, sizeof(path), > "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/device", > @@ -195,11 +181,28 @@ hwloc_look_pci(struct hwloc_backend *backend) > read = fread(value, 1, sizeof(value), file); > fclose(file); > if (read) > - obj->attr->pcidev.device_id = strtoul(value, NULL, 16); > + /* fixup the pciaccess struct so that pci_device_get_device_name() is > correct later. */ > + pcidev->device_id = strtoul(value, NULL, 16); > } > #endif > } > > + /* might be useful for debugging (note that domain might be truncated) */ > + os_index = (domain << 20) + (pcidev->bus << 12) + (pcidev->dev << 4) + > pcidev->func; > + > + obj = hwloc_alloc_setup_object(HWLOC_OBJ_PCI_DEVICE, os_index); > + obj->attr->pcidev.domain = domain; > + obj->attr->pcidev.bus = pcidev->bus; > + obj->attr->pcidev.dev = pcidev->dev; > + obj->attr->pcidev.func = pcidev->func; > + obj->attr->pcidev.vendor_id = pcidev->vendor_id; > + obj->attr->pcidev.device_id = pcidev->device_id; > + obj->attr->pcidev.class_id = device_class; > + obj->attr->pcidev.revision = config_space_cache[PCI_REVISION_ID]; > + > + obj->attr->pcidev.linkspeed = 0; /* unknown */ > + offset = hwloc_pci_find_cap(config_space_cache, PCI_CAP_ID_EXP); > + > if (offset > 0 && offset + 20 /* size of PCI express block up to link > status */ <= CONFIG_SPACE_CACHESIZE) > hwloc_pci_find_linkspeed(config_space_cache, offset, > &obj->attr->pcidev.linkspeed); > > > > ----------------------------------------------------------------------- > > Summary of changes: > hwloc/topology-pci.c | 41 ++++++++++++++++++++++------------------- > 1 file changed, 22 insertions(+), 19 deletions(-) > > > hooks/post-receive > -- > open-mpi/hwloc > _______________________________________________ > hwloc-commits mailing list > hwloc-comm...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-commits -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/