diff -up util-linux-2.23.2/sys-utils/lscpu.c.kzak util-linux-2.23.2/sys-utils/lscpu.c --- util-linux-2.23.2/sys-utils/lscpu.c.kzak 2014-01-14 14:02:52.228996385 +0100 +++ util-linux-2.23.2/sys-utils/lscpu.c 2014-01-14 14:04:08.109795733 +0100 @@ -815,6 +815,13 @@ static inline int is_node_dirent(struct isdigit_string(d->d_name + 4); } +static int +nodecmp(const void *ap, const void *bp) +{ + int *a = (int *) ap, *b = (int *) bp; + return *a - *b; +} + static void read_nodes(struct lscpu_desc *desc) { @@ -850,6 +857,7 @@ read_nodes(struct lscpu_desc *desc) _("Failed to extract the node number")); } closedir(dir); + qsort(desc->idx2nodenum, desc->nnodes, sizeof(int), nodecmp); } /* information about how nodes share different CPUs */ diff -up util-linux-2.23.2/tests/expected/lscpu/lscpu-x86_64-64cpu.kzak util-linux-2.23.2/tests/expected/lscpu/lscpu-x86_64-64cpu --- util-linux-2.23.2/tests/expected/lscpu/lscpu-x86_64-64cpu.kzak 2013-06-13 09:46:10.551651742 +0200 +++ util-linux-2.23.2/tests/expected/lscpu/lscpu-x86_64-64cpu 2014-01-14 14:04:29.662022613 +0100 @@ -4,7 +4,7 @@ On-line CPU(s) list: 0-63 Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 4 -NUMA node(s): 1 +NUMA node(s): 3 Vendor ID: GenuineIntel CPU family: 6 Model: 46 @@ -18,72 +18,74 @@ L1i cache: 32K L2 cache: 256K L3 cache: 18432K NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62 +NUMA node2 CPU(s): 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 +NUMA node3 CPU(s): 3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63 # The following is the parsable format, which can be fed to other # programs. Each different item in every column has an unique ID # starting from zero. # CPU,Core,Socket,Node,,L1d,L1i,L2,L3 0,0,0,0,,0,0,0,0 -1,1,1,,,1,1,1,1 +1,1,1,2,,1,1,1,1 2,2,2,0,,2,2,2,2 -3,3,3,,,3,3,3,3 +3,3,3,3,,3,3,3,3 4,4,0,0,,4,4,4,0 -5,5,1,,,5,5,5,1 +5,5,1,2,,5,5,5,1 6,6,2,0,,6,6,6,2 -7,7,3,,,7,7,7,3 +7,7,3,3,,7,7,7,3 8,8,0,0,,8,8,8,0 -9,9,1,,,9,9,9,1 +9,9,1,2,,9,9,9,1 10,10,2,0,,10,10,10,2 -11,11,3,,,11,11,11,3 +11,11,3,3,,11,11,11,3 12,12,0,0,,12,12,12,0 -13,13,1,,,13,13,13,1 +13,13,1,2,,13,13,13,1 14,14,2,0,,14,14,14,2 -15,15,3,,,15,15,15,3 +15,15,3,3,,15,15,15,3 16,16,0,0,,16,16,16,0 -17,17,1,,,17,17,17,1 +17,17,1,2,,17,17,17,1 18,18,2,0,,18,18,18,2 -19,19,3,,,19,19,19,3 +19,19,3,3,,19,19,19,3 20,20,0,0,,20,20,20,0 -21,21,1,,,21,21,21,1 +21,21,1,2,,21,21,21,1 22,22,2,0,,22,22,22,2 -23,23,3,,,23,23,23,3 +23,23,3,3,,23,23,23,3 24,24,0,0,,24,24,24,0 -25,25,1,,,25,25,25,1 +25,25,1,2,,25,25,25,1 26,26,2,0,,26,26,26,2 -27,27,3,,,27,27,27,3 +27,27,3,3,,27,27,27,3 28,28,0,0,,28,28,28,0 -29,29,1,,,29,29,29,1 +29,29,1,2,,29,29,29,1 30,30,2,0,,30,30,30,2 -31,31,3,,,31,31,31,3 +31,31,3,3,,31,31,31,3 32,0,0,0,,0,0,0,0 -33,1,1,,,1,1,1,1 +33,1,1,2,,1,1,1,1 34,2,2,0,,2,2,2,2 -35,3,3,,,3,3,3,3 +35,3,3,3,,3,3,3,3 36,4,0,0,,4,4,4,0 -37,5,1,,,5,5,5,1 +37,5,1,2,,5,5,5,1 38,6,2,0,,6,6,6,2 -39,7,3,,,7,7,7,3 +39,7,3,3,,7,7,7,3 40,8,0,0,,8,8,8,0 -41,9,1,,,9,9,9,1 +41,9,1,2,,9,9,9,1 42,10,2,0,,10,10,10,2 -43,11,3,,,11,11,11,3 +43,11,3,3,,11,11,11,3 44,12,0,0,,12,12,12,0 -45,13,1,,,13,13,13,1 +45,13,1,2,,13,13,13,1 46,14,2,0,,14,14,14,2 -47,15,3,,,15,15,15,3 +47,15,3,3,,15,15,15,3 48,16,0,0,,16,16,16,0 -49,17,1,,,17,17,17,1 +49,17,1,2,,17,17,17,1 50,18,2,0,,18,18,18,2 -51,19,3,,,19,19,19,3 +51,19,3,3,,19,19,19,3 52,20,0,0,,20,20,20,0 -53,21,1,,,21,21,21,1 +53,21,1,2,,21,21,21,1 54,22,2,0,,22,22,22,2 -55,23,3,,,23,23,23,3 +55,23,3,3,,23,23,23,3 56,24,0,0,,24,24,24,0 -57,25,1,,,25,25,25,1 +57,25,1,2,,25,25,25,1 58,26,2,0,,26,26,26,2 -59,27,3,,,27,27,27,3 +59,27,3,3,,27,27,27,3 60,28,0,0,,28,28,28,0 -61,29,1,,,29,29,29,1 +61,29,1,2,,29,29,29,1 62,30,2,0,,30,30,30,2 -63,31,3,,,31,31,31,3 +63,31,3,3,,31,31,31,3