Fix hwloc issue on arm

This commit is contained in:
Orion Poplawski 2015-04-05 09:40:01 -06:00
parent f83a4a61bd
commit 4c1dd1d39f
4 changed files with 48 additions and 0 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
/hwloc-*.tar.bz2
/lstopo.desktop
/32ppc-4n4c2c.tar.bz2

36
hwloc-arm.patch Normal file
View File

@ -0,0 +1,36 @@
diff -up hwloc-1.10.1/NEWS.arm hwloc-1.10.1/NEWS
diff -up hwloc-1.10.1/src/topology-linux.c.arm hwloc-1.10.1/src/topology-linux.c
--- hwloc-1.10.1/src/topology-linux.c.arm 2015-01-19 06:28:30.000000000 -0700
+++ hwloc-1.10.1/src/topology-linux.c 2015-04-04 20:25:11.519848174 -0600
@@ -2505,6 +2505,10 @@ look_powerpc_device_tree(struct hwloc_to
DIR *dt;
struct dirent *dirent;
+ /* only works for Power so far, and not useful on ARM */
+ if (strncmp(data->utsname.machine, "ppc", 3))
+ return;
+
ofroot = "/sys/firmware/devicetree/base/cpus";
ofrootlen = 34;
dt = hwloc_opendir(ofroot, root_fd);
@@ -2571,6 +2575,10 @@ look_powerpc_device_tree(struct hwloc_to
}
free(threads);
} else if ((unsigned int)-1 != reg) {
+ /* Doesn't work on ARM because cpu "reg" do not start at 0.
+ * We know the first cpu "reg" is the lowest. The others are likely
+ * in order assuming the device-tree shows objects in order.
+ */
cpuset = hwloc_bitmap_alloc();
hwloc_bitmap_set(cpuset, reg);
}
diff --git a/tests/linux/32ppc-4n4c2c.output b/tests/linux/32ppc-4n4c2c.output
index e0d73dc..733abb4 100644
--- a/tests/linux/32ppc-4n4c2c.output
+++ b/tests/linux/32ppc-4n4c2c.output
@@ -1,4 +1,4 @@
-Machine (P#0 total=129236992KB Backend=Linux)
+Machine (P#0 total=129236992KB PlatformName=pSeries PlatformModel="CHRP IBM,9125-F2A" Backend=Linux Architecture=ppc)
NUMANode L#0 (P#0 local=31195136KB total=31195136KB)
L3Cache L#0 (size=32768KB linesize=128)
L2Cache L#0 (size=4096KB linesize=128 ways=8)

View File

@ -6,6 +6,11 @@ License: BSD
Group: Applications/System
URL: http://www.open-mpi.org/projects/hwloc/
Source0: http://www.open-mpi.org/software/hwloc/v1.10/downloads/%{name}-%{version}.tar.bz2
# Updated test file for patch below
Source1: https://github.com/open-mpi/hwloc/raw/7a9b00834235ddd3c02699cbab7946edf6fc9030/tests/linux/32ppc-4n4c2c.tar.bz2
# Fix issue on ARM
# https://github.com/open-mpi/hwloc/issues/127
Patch0: hwloc-arm.patch
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
BuildRequires: cairo-devel
@ -76,6 +81,8 @@ Requires: %{name}-plugins%{?_isa} = %{version}-%{release}
%prep
%setup -q
%patch0 -p1 -b .arm
cp -a %SOURCE1 tests/linux/
%build
autoreconf --force --install
@ -140,6 +147,9 @@ make check
%{_libdir}/hwloc*
%changelog
* Sat Apr 4 2015 Orion Poplwski <orion@cora.nwra.com> - 1.10.1-2
- Fix hwloc issue on arm
* Wed Apr 1 2015 Orion Poplwski <orion@cora.nwra.com> - 1.10.1-1
- Update to version 1.10.1

View File

@ -1 +1,2 @@
f53c1f00bd857b291a89c8926772886e hwloc-1.10.1.tar.bz2
30f3a42c1606b06f576967b674d03254 32ppc-4n4c2c.tar.bz2