I am trying to traverse the topology using hwloc APIs starting from a PCI
device till Host Bridge

My code snippet:

    unsigned long flags = HWLOC_TOPOLOGY_FLAG_IO_DEVICES |
HWLOC_TOPOLOGY_FLAG_IO_BRIDGES;

    retval = hwloc_topology_init(&topology);
    retval = hwloc_topology_set_flags(topology, flags);
    retval = hwloc_topology_load(topology);

    pciObj = hwloc_get_pcidev_by_busidstring(topology, "<Bus ID>");
    while(pciObj) {
        pciObj = pciObj->parent;

        if (pciObj->attr->bridge.upstream_type != HWLOC_OBJ_BRIDGE_HOST)
        {
              //Get all the required information about intermediate bridges
like

// pciObj->attr->bridge.downstream.pci.secondary_bus,
pciObj->attr->bridge.upstream.pci.domain
              // pciObj->attr->bridge.upstream.pci.bus,
*pciObj->attr->bridge.upstream.pci.linkspeed*
        }
    }

All the other details I am able to query but linkspeed (
*pciObj->attr->bridge.upstream.pci.linkspeed*) is always 0.
Do I need to enable any other flag to get linkspeed or am I going wrong
somewhere?

I want to get the PCI Bridges' generation or linkspeed for my usecase.
Is there any other way to get this information?


Thanks & Regards,
Tejaswi K
_______________________________________________
hwloc-users mailing list
hwloc-users@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/hwloc-users

Reply via email to