logical cpu number is discontinuity

From: Masayoshi Mizuma
Date: Wed Jan 18 2017 - 01:09:03 EST


Hi,

On v4.9 and v4.10 kernel, when I booted my box which has two nodes and
each nodes have 48 logical cpus (Hyper Threading is enabled),
the logical cpu number is discontinuity as follows.

node 0: 0-23, 256-279
node 1: 24-47, 280-303

So the following shell script fail to run.
---
#!/bin/bash

for ((cpu = 0; cpu < `nproc`; cpu++))
do
taskset -c $cpu ./do_work
done
---

I think the logical cpu number should be continuity like as v4.8 and earlier
because user applications may expect the number is continuity.

I believe this behavior was introduced by the patch series beginning with
the following commit.

f7c2883 x86/acpi: Enable acpi to register all possible cpus at boot time

Do anyone have ideas for fix this behavior...?

FYI.
v4.8 kernel, the logical cpu number is continuity as follows.

node 0: 0-23, 48-71
node 1: 24-47, 72-95

- Masayoshi Mizuma