Re: [PATCH -v2 2/2] x86, acpi: Parse all SRAT cpu entries even have cpu num limitation

Venkatesh Pallipadi
2010-12-21T04:31:21Z

On Fri, Dec 17, 2010 at 3:32 PM, Venkatesh Pallipadi <venki@google.com> wrote:
> On Fri, Dec 17, 2010 at 11:27 AM, Yinghai Lu <yinghai@kernel.org> wrote:
>> On 12/17/2010 10:53 AM, Venkatesh Pallipadi wrote:
>>> linus git + these two patches still fails on my test system with the
>>> divide error. The failure dump is similar to what I reported here
>>> http://lkml.indiana.edu/hypermail//linux/kernel/1012.1/03641.html
>>>
>>> This patch description talk about new Intel systems. The test system I
>>> am seeing failure here is an ancient Intel (2 socket P4 HT) system.
>>> AFAICS, it does not even have an SRAT table (no "ACPI: SRAT" message
>>> in dmesg).
>>
>> that could be different cause.
>>
>> Do you have whole boot log with debug etc?
>>
>>
>
> This regression seems to be specific to fake numa configuration. Boots
> fine without "numa=fake=128M".
> Also, I see that the problem started between 2.6.36 and 2.6.37-rc1. I
> haven't done further bisect yet.
>

git bisect seems to narrow this down to the change below.

Thanks,
Venki

$ git bisect visualize
commit 50f2d7f682f9c0ed58191d0982fe77888d59d162
Author: Nikanth Karthikesan <knikanth@suse.de>
Date: Thu Sep 30 17:34:10 2010 +0530

x86, numa: Assign CPUs to nodes in round-robin manner on fake NUMA

commit d9c2d5ac6af87b4491bff107113aaf16f6c2b2d9 "x86, numa: Use near(er)
online node instead of roundrobin for NUMA" changed NUMA initialization on
Intel to choose the nearest online node or first node. Fake NUMA would be
better of with round-robin initialization, instead of the all CPUS on
first node. Change the choice of first node, back to round-robin.

For testing NUMA kernel behaviour without cpusets and NUMA aware
applications, it would be better to have cpus in different nodes, rather
than all in a single node. With cpusets migration of tasks scenarios
cannot not be tested.

I guess having it round-robin shouldn't affect the use cases for all cpus
on the first node.

The code comments in arch/x86/mm/numa_64.c:759 indicate that this used to
be the case, which was changed by commit d9c2d5ac6. It changed from
roundrobin to nearer or first node. And I couldn't find any reason for
this change in its changelog.

Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

$ git bisect log
# bad: [c8ddb2713c624f432fa5fe3c7ecffcdda46ea0d4] Linux 2.6.37-rc1
# good: [f6f94e2ab1b33f0082ac22d71f66385a60d8157f] Linux 2.6.36
git bisect start 'v2.6.37-rc1' 'v2.6.36'
# bad: [33081adf8b89d5a716d7e1c60171768d39795b39] Merge branch
'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
git bisect bad 33081adf8b89d5a716d7e1c60171768d39795b39
# bad: [02f36038c568111ad4fc433f6fa760ff5e38fab4] Merge branches
'softirq-for-linus', 'x86-debug-for-linus', 'x86-numa-for-linus',
'x86-quirks-for-linus', 'x86-setup-for-linus', 'x86-uv-for-linus' and
'x86-vm86-for-linus' of
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
git bisect bad 02f36038c568111ad4fc433f6fa760ff5e38fab4
# good: [b5153163ed580e00c67bdfecb02b2e3843817b3e] Merge branch
'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
git bisect good b5153163ed580e00c67bdfecb02b2e3843817b3e
# good: [91b745016c12d440386c40fb76ab69c8e08cbc06] Merge branch
'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
git bisect good 91b745016c12d440386c40fb76ab69c8e08cbc06
# good: [73ecf3a6e3f0206bf56a0fefe3b3eda042fb7034] Merge
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6
git bisect good 73ecf3a6e3f0206bf56a0fefe3b3eda042fb7034
# good: [b5b5c3ac5123dab047cfeff472053ab737052e9b] USB: xhci: Fix
compile error when CONFIG_PM=n
git bisect good b5b5c3ac5123dab047cfeff472053ab737052e9b
# good: [7f3883962870dd28b5f2322ac44a9d03640ef448] Merge branch
'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
git bisect good 7f3883962870dd28b5f2322ac44a9d03640ef448
# good: [b1f6a4f294088b3fcf9ae67915ca550a1ded2819] nilfs2: add
routines to redirect access to buffers of DAT file
git bisect good b1f6a4f294088b3fcf9ae67915ca550a1ded2819
# good: [6b81e14e645016597c81e71cd27ee5c57c3a3c36] nilfs2: eliminate
sparse warning - "context imbalance"
git bisect good 6b81e14e645016597c81e71cd27ee5c57c3a3c36
# good: [07bd8516a2f967aa67904c68ab97bb896a448b09] x86, asm: Restore
parentheses around one pushl_cfi argument
git bisect good 07bd8516a2f967aa67904c68ab97bb896a448b09
# good: [6c2754c28f2388a276fe21edde826f2113c8f60e] Revert "tty: Add a
new file /proc/tty/consoles"
git bisect good 6c2754c28f2388a276fe21edde826f2113c8f60e
# good: [892df7f81c31ce7f85778aa78094e8d1f19b8413] x86: HPET force
enable for CX700 / VIA Epia LT
git bisect good 892df7f81c31ce7f85778aa78094e8d1f19b8413
# good: [676cb02dc32adef13d9efb5ea52079e4ede1e3ec] softirqs: Make
wakeup_softirqd static
git bisect good 676cb02dc32adef13d9efb5ea52079e4ede1e3ec
# good: [6554287b1de0448f1e02e200d02b43914e997d15] x86, vm86: Fix
preemption bug for int1 debug and int3 breakpoint handlers.
git bisect good 6554287b1de0448f1e02e200d02b43914e997d15
# good: [b365a85c68161ea5db5476eb8845a91ceb1777ea] x86, UV: Use
allocated buffer in tlb_uv.c:tunables_read()
git bisect good b365a85c68161ea5db5476eb8845a91ceb1777ea
# good: [68f4d5a00adaab33b136fce2c72d5c377b39b0b0] x86, setup: Use
string copy operation to optimze copy in kernel compression
git bisect good 68f4d5a00adaab33b136fce2c72d5c377b39b0b0
# bad: [50f2d7f682f9c0ed58191d0982fe77888d59d162] x86, numa: Assign
CPUs to nodes in round-robin manner on fake NUMA
git bisect bad 50f2d7f682f9c0ed58191d0982fe77888d59d162