[x86-tip] strange nr_cpus= boot regression

From: Mike Galbraith
Date: Mon Sep 26 2016 - 08:29:15 EST


Hi Ingo,

I've encountered a strange regression in tip, symptom is that if you
boot with nr_cpus=nr_you_have, what actually boots is nr_you_have/2.
Do not pass nr_cpus=, and all is well.

Bisection repeatedly goes as below, pointing to the nodeid merge,
despite both timers/core and x86/apic (nodeid) being fine. Take tip
HEAD, extract all of the commits from nodeid (plus the fix), and revert
them in a quilt tree, the tree remains busted. Checkout the
timers/core merge commit, and merge nodeid with that, it is indeed bad.
Bisecting that tree takes you right the merge commit, with no commit
being 'bad', see logs.

20eefd15d70f297c7e193e087ed4103b47c2e312 is the first bad commit
git bisect start
# good: [3be7988674ab33565700a37b210f502563d932e6] Linux 4.8-rc7
git bisect good 3be7988674ab33565700a37b210f502563d932e6
# bad: [a04c42e40060130bb05eecb64df2c1cc8f48ab43] Merge branch 'linus'
git bisect bad a04c42e40060130bb05eecb64df2c1cc8f48ab43
# good: [b820db7313942f6ae55637e118b19ed9739a12af] Merge branch 'ras/core'
git bisect good b820db7313942f6ae55637e118b19ed9739a12af
# bad: [5b8b44cc2d19500e981f492d3d96f85a7007e4ff] Merge branch 'x86/asm'
git bisect bad 5b8b44cc2d19500e981f492d3d96f85a7007e4ff
# good: [4be273986460867b37701a8185f8118ae201b39c] Merge branch 'smp/hotplug'
git bisect good 4be273986460867b37701a8185f8118ae201b39c
# good: [c6c314a613cd7d03fb97713e0d642b493de42e69] sched/core: Add try_get_task_stack() and put_task_stack()
git bisect good c6c314a613cd7d03fb97713e0d642b493de42e69
# good: [b468c89ee7568999dfc575da56841694c118164a] Merge branch 'timers/core'
git bisect good b468c89ee7568999dfc575da56841694c118164a
# good: [dc6db24d2476cd09c0ecf2b8d80313539f737a89] x86/acpi: Set persistent cpuid <-> nodeid mapping when booting
git bisect good dc6db24d2476cd09c0ecf2b8d80313539f737a89
# good: [7c7900f89770d7fba96100d8a9e18043a1af3973] x86/unwind: Add new unwind interface and implementations
git bisect good 7c7900f89770d7fba96100d8a9e18043a1af3973
# good: [c8fe4609827aedc9c4b45de80e7cdc8ccfa8541b] x86/dumpstack: Remove dump_trace() and related callbacks
git bisect good c8fe4609827aedc9c4b45de80e7cdc8ccfa8541b
# good: [fd74da217df7d4bd25e95411da64e0b92762842e] acpi: Validate processor id when mapping the processor
git bisect good fd74da217df7d4bd25e95411da64e0b92762842e
# good: [71f5443ebb1227c22e8decbcd28a1ea6deaf8257] x86/dumpstack: Fix show_stack() task pointer regression
git bisect good 71f5443ebb1227c22e8decbcd28a1ea6deaf8257
# bad: [20eefd15d70f297c7e193e087ed4103b47c2e312] Merge branch 'x86/apic'
git bisect bad 20eefd15d70f297c7e193e087ed4103b47c2e312
# first bad commit: [20eefd15d70f297c7e193e087ed4103b47c2e312] Merge branch 'x86/apic'

92365cbaa9a781b6016fa27b03e3ba2fedbea22d is the first bad commit
git bisect start
# good: [b468c89ee7568999dfc575da56841694c118164a] Merge branch 'timers/core'
git bisect good b468c89ee7568999dfc575da56841694c118164a
# bad: [92365cbaa9a781b6016fa27b03e3ba2fedbea22d] Merge branch 'nodeid' into test
git bisect bad 92365cbaa9a781b6016fa27b03e3ba2fedbea22d
# good: [5035da41996d346c648a65c1d7a9f6469c7d358a] x86/apic: Update comment about disabling processor focus
git bisect good 5035da41996d346c648a65c1d7a9f6469c7d358a
# good: [f7c28833c252031bc68a29e26a18a661797cf3a3] x86/acpi: Enable acpi to register all possible cpus at boot time
git bisect good f7c28833c252031bc68a29e26a18a661797cf3a3
# good: [dc6db24d2476cd09c0ecf2b8d80313539f737a89] x86/acpi: Set persistent cpuid <-> nodeid mapping when booting
git bisect good dc6db24d2476cd09c0ecf2b8d80313539f737a89
# good: [fd74da217df7d4bd25e95411da64e0b92762842e] acpi: Validate processor id when mapping the processor
git bisect good fd74da217df7d4bd25e95411da64e0b92762842e
# first bad commit: [92365cbaa9a781b6016fa27b03e3ba2fedbea22d] Merge branch 'nodeid' into test
# good: [fd74da217df7d4bd25e95411da64e0b92762842e] acpi: Validate processor id when mapping the processor
git bisect good fd74da217df7d4bd25e95411da64e0b92762842e
# first bad commit: [92365cbaa9a781b6016fa27b03e3ba2fedbea22d] Merge branch 'nodeid' into test

Checkout timers/core, and merge nodeid, and all is well. I'm currently
bisecting the result against HEAD.. which will likely be about as
useful as the last five bisections, but ya never know. (ok git, finger
somebody already [hotplug] and call it a day)

-Mike