Le 21/11/2010 08:22, Christopher Samuel a écrit :
> > Then reconfigure with --enable-debug and send the whole
> > stdout/stderr of "HWLOC_FSROOT=/tmp/sles10sp1-ppc64 lstopo"
>
> OK, here's both a good run and a bad run for you to compare.
It looks like it's using /proc/cpuinfo instead of /sys. It may be a
problem with accessat. Could you apply the attached debug patch and
rerun the above command line?
Brice
diff --git a/src/topology-linux.c b/src/topology-linux.c
index 9cdc82a..35af9ea 100644
--- a/src/topology-linux.c
+++ b/src/topology-linux.c
@@ -224,7 +224,15 @@ static inline int
hwloc_access(const char *p, int m, int d __hwloc_attribute_unused)
{
#ifdef HAVE_OPENAT
- return hwloc_accessat(p, m, d);
+int err;
+fprintf(stderr, "#### using hwloc_accessat\n");
+err = hwloc_accessat(p, m, d);
+if (err < 0)
+ fprintf(stderr, "#### hwloc_accessat failed %m\n");
+else
+ fprintf(stderr, "#### hwloc_accessat success\n");
+return err;
+// return hwloc_accessat(p, m, d);
#else
return access(p, m);
#endif
@@ -2641,8 +2649,10 @@ hwloc_look_linux(struct hwloc_topology *topology)
}
/* Gather the list of cpus now */
+fprintf(stderr, "#### use cpuinfo or sysfs?\n");
if (getenv("HWLOC_LINUX_USE_CPUINFO")
|| hwloc_access("/sys/devices/system/cpu/cpu0/topology", R_OK, topology->backend_params.sysfs.root_fd) < 0) {
+fprintf(stderr, "#### using cpuinfo\n");
/* revert to reading cpuinfo only if /sys/.../topology unavailable (before 2.6.16) */
err = look_cpuinfo(topology, "/proc/cpuinfo", topology->levels[0][0]->online_cpuset);
if (err < 0) {
@@ -2654,6 +2664,7 @@ hwloc_look_linux(struct hwloc_topology *topology)
hwloc_setup_pu_level(topology, 1);
}
} else {
+fprintf(stderr, "#### using sysfs\n");
look_sysfscpu(topology, "/sys/devices/system/cpu");
}