I found a small bug of NUMA emulation code for x86_64. (CONFIG_NUMA_EMU)
If machine is non-NUMA, find_node_by_addr() should return
NUMA_NO_NODE, but current implementation code returns existent maximum
NUMA node number + 1.
This is not existent NUMA node number.
However, this behaviour does not affect NUMA emulation fortunately, because
acpi_fake_nodes() that is caller of find_node_by_addr() gets pxm
(proximity domain) by node_to_pxm() from non-existent NUMA node number
that was returned by find_node_by_addr().
node_to_pxm() returns PXM_INVAL that means illegal or non-existent
NUMA node number.
Signed-off-by: Minoru Usui <[email protected]>
---
diff -ruNp linux-2.6.24-rc8/arch/x86/mm/srat_64.c dst/arch/x86/mm/srat_64.c
--- linux-2.6.24-rc8/arch/x86/mm/srat_64.c 2008-01-16 14:22:15.000000000 +0900
+++ dst/arch/x86/mm/srat_64.c 2008-01-17 19:07:41.000000000 +0900
@@ -457,7 +457,7 @@ static int __init find_node_by_addr(unsi
break;
}
}
- return i;
+ return ret;
}
/*
* Minoru Usui <[email protected]> wrote:
> I found a small bug of NUMA emulation code for x86_64.
> (CONFIG_NUMA_EMU) If machine is non-NUMA, find_node_by_addr() should
> return NUMA_NO_NODE, but current implementation code returns existent
> maximum NUMA node number + 1. This is not existent NUMA node number.
>
> However, this behaviour does not affect NUMA emulation fortunately,
> because acpi_fake_nodes() that is caller of find_node_by_addr() gets
> pxm (proximity domain) by node_to_pxm() from non-existent NUMA node
> number that was returned by find_node_by_addr(). node_to_pxm() returns
> PXM_INVAL that means illegal or non-existent NUMA node number.
thanks, i have applied your fix to x86.git.
It seems this does not need to be backported to v2.6.24.1 because
node_to_pxm() masked the bad effects of this bug, right?
Ingo
>>>>> ">" == Ingo Molnar <[email protected]> writes:
>> * Minoru Usui <[email protected]> wrote:
>> I found a small bug of NUMA emulation code for x86_64.
>> (CONFIG_NUMA_EMU) If machine is non-NUMA, find_node_by_addr() should
>> return NUMA_NO_NODE, but current implementation code returns existent
>> maximum NUMA node number + 1. This is not existent NUMA node number.
>>
>> However, this behaviour does not affect NUMA emulation fortunately,
>> because acpi_fake_nodes() that is caller of find_node_by_addr() gets
>> pxm (proximity domain) by node_to_pxm() from non-existent NUMA node
>> number that was returned by find_node_by_addr(). node_to_pxm() returns
>> PXM_INVAL that means illegal or non-existent NUMA node number.
>> thanks, i have applied your fix to x86.git.
>> It seems this does not need to be backported to v2.6.24.1 because
>> node_to_pxm() masked the bad effects of this bug, right?
>> Ingo
I think this bug is not urgency.
If you mean that it's not necessary to release 2.6.24.1 only for this
bug, I think so.