perf bench numa: Fix assertion for nodes bitfield
authorJakub Jelen <jakuje@gmail.com>
Sat, 19 Mar 2016 11:58:07 +0000 (12:58 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 21 Mar 2016 20:46:57 +0000 (17:46 -0300)
Comparing bits and bytes in numa benchmark assertion

I hit the issue on two socket Power8 machine presenting its numa nodes
as 0,1,16,17 (according to numactl). Therefore I got error (and hang of
parent process):

    perf: bench/numa.c:296: bind_to_memnode: Assertion `!(g->p.nr_nodes > (int)sizeof(nodemask))' failed.

This is obviously false positive. We can fit all the 18 nodes into
bitfield of 8 bytes (long on 64b architecture).

Signed-off-by: Jakub Jelen <jakuje@gmail.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jakub Jelen <jjelen@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: trivial@kernel.org
Link: http://lkml.kernel.org/r/1458388687-24421-1-git-send-email-jakuje@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/bench/numa.c

index 5049d6357a46953da0e2f9afe8d62c6e6e4238e7..7500d959d7eb0002e4d5da138e6b8365bc51db8e 100644 (file)
@@ -293,7 +293,7 @@ static void bind_to_memnode(int node)
        if (node == -1)
                return;
 
-       BUG_ON(g->p.nr_nodes > (int)sizeof(nodemask));
+       BUG_ON(g->p.nr_nodes > (int)sizeof(nodemask)*8);
        nodemask = 1L << node;
 
        ret = set_mempolicy(MPOL_BIND, &nodemask, sizeof(nodemask)*8);