Well, I just started looking at hwloc today as a potential replacement for 
SGI's custom topology command and ran into a problem where when I run lstopo I 
get the following:
lstopo: pci-common.c:121: hwloc_pci_compare_busids: Assertion `0' failed.

So I looked into it and tracked it down to this change. It was pretty easy to 
fix so I thought I'd pass it along. :)

Regards,
James
________________________________________
From: hwloc-devel [hwloc-devel-boun...@open-mpi.org] on behalf of Brice Goglin 
[brice.gog...@inria.fr]
Sent: Wednesday, October 08, 2014 12:32 AM
To: hwloc-de...@open-mpi.org
Subject: Re: [hwloc-devel] [PATCH] Fix code relying on nonexistent macros

Applied thanks.
Interesting to see somebody who cares about PCi domains :)
Brice


Le 08/10/2014 07:24, James Custer a écrit :
> Commit 1e57af5 removed macros HWLOC_HAVE_PCI_FIND_CAP,
> HWLOC_HAVE_PCIDEV_DOMAIN, and HWLOC_HAVE_LIBPCIACCESS.
> However, these are still referenced in src/topology-pci.c.
> Specifically, the check to see if HWLOC_HAVE_LIBPCIACCESS or
> HWLOC_HAVE_PCIDEV_DOMAIN will always be false, resulting in
> domain being set to zero, rather than always being pcidev->domain.
>
> The other change is not a bug, just removal of dead code.
> ---
>  src/topology-pci.c | 12 ------------
>  1 file changed, 12 deletions(-)
>
> diff --git a/src/topology-pci.c b/src/topology-pci.c
> index f8a3cec..1382025 100644
> --- a/src/topology-pci.c
> +++ b/src/topology-pci.c
> @@ -117,9 +117,6 @@ hwloc_look_pci(struct hwloc_backend *backend)
>      unsigned short tmp16;
>      char name[128];
>      unsigned offset;
> -#ifdef HWLOC_HAVE_PCI_FIND_CAP
> -    struct pci_cap *cap;
> -#endif
>
>      /* initialize the config space in case we fail to read it (missing 
> permissions, etc). */
>      memset(config_space_cache, 0xff, CONFIG_SPACE_CACHESIZE);
> @@ -127,11 +124,7 @@ hwloc_look_pci(struct hwloc_backend *backend)
>      pci_device_cfg_read(pcidev, config_space_cache, 0, 
> CONFIG_SPACE_CACHESIZE, NULL);
>
>      /* try to read the domain */
> -#if (defined HWLOC_HAVE_LIBPCIACCESS) || (defined HWLOC_HAVE_PCIDEV_DOMAIN)
>      domain = pcidev->domain;
> -#else
> -    domain = 0; /* default domain number */
> -#endif
>
>      /* try to read the device_class */
>      device_class = pcidev->device_class >> 8;
> @@ -150,12 +143,7 @@ hwloc_look_pci(struct hwloc_backend *backend)
>      obj->attr->pcidev.revision = config_space_cache[PCI_REVISION_ID];
>
>      obj->attr->pcidev.linkspeed = 0; /* unknown */
> -#ifdef HWLOC_HAVE_PCI_FIND_CAP
> -    cap = pci_find_cap(pcidev, PCI_CAP_ID_EXP, PCI_CAP_NORMAL);
> -    offset = cap ? cap->addr : 0;
> -#else
>      offset = hwloc_pci_find_cap(config_space_cache, PCI_CAP_ID_EXP);
> -#endif /* HWLOC_HAVE_PCI_FIND_CAP */
>
>      if (0xffff == pcidev->vendor_id && 0xffff == pcidev->device_id) {
>        /* SR-IOV puts ffff:ffff in Virtual Function config space.

_______________________________________________
hwloc-devel mailing list
hwloc-de...@open-mpi.org
Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-devel
Link to this post: 
http://www.open-mpi.org/community/lists/hwloc-devel/2014/10/4263.php

Reply via email to