Re: [PATCH] Fake NUMA emulation for PowerPC

From: Balbir Singh
Date: Fri Dec 07 2007 - 16:35:46 EST


Olof Johansson wrote:
> Hi,
>
> On Sat, Dec 08, 2007 at 02:44:25AM +0530, Balbir Singh wrote:
>
>> Comments are as always welcome!
>
> Care to explain what this is useful for? (Not saying it's a stupid idea,
> just wondering what the reason for doing it is).
>

In my case, I use it to test parts of my memory controller patches on an
emulated NUMA machine. I plan to use it to test out page migration
across nodes.

>> diff -puN arch/powerpc/mm/numa.c~ppc-fake-numa-easy arch/powerpc/mm/numa.c
>> --- linux-2.6.24-rc4-mm1/arch/powerpc/mm/numa.c~ppc-fake-numa-easy 2007-12-07 21:25:55.000000000 +0530
>> +++ linux-2.6.24-rc4-mm1-balbir/arch/powerpc/mm/numa.c 2007-12-08 02:36:02.000000000 +0530
>> @@ -24,6 +24,8 @@
>>
>> static int numa_enabled = 1;
>>
>> +char *cmdline __initdata;
>> +
>
> Looks like this should be static.
>

Yes, good catch!

>> @@ -702,6 +744,9 @@ static int __init early_numa(char *p)
>> if (strstr(p, "debug"))
>> numa_debug = 1;
>>
>> + if (strstr(p, "fake="))
>> + cmdline = p + 5; /* 5 is faster than strlen("fake=") */
>
> This doesn't look right.
>
> You check if it contains fake=, not if it starts with it. So if someone
> did: "numa=foo,fake=bar", or even "numa=debug,fake=", things wouldn't
> work right.
>

Yes, you are right. I merely followed the strstr convention already
present, which as you righly point out is wrong. I suspect I need to do
something like

p = strstr(p, "fake=")
if (p)
cmdline = p + 5;

This would still allow us to do things like

numa=foo,fake=bar but the memparse() utility would fail at fake=bar
^^^

or even

numa=debug,fake=1G

I suspect that this should be good enough for a command line option.

>
> -Olof


--
Thanks,
Balbir Singh
Linux Technology Center
IBM, ISTL
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/