2008-01-25 08:45:49

by Minoru Usui

[permalink] [raw]
Subject: [PATCH] Fix NUMA emulation for x86_64

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;
}

/*


2008-01-25 10:41:28

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] Fix NUMA emulation for x86_64


* 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

2008-01-30 03:00:16

by Minoru Usui

[permalink] [raw]
Subject: Re: [PATCH] Fix NUMA emulation for x86_64

>>>>> ">" == 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.