Re: [PATCH 3/3] acpi, memory-hotplug: Support getting hotplug infofrom SRAT.

From: Tang Chen
Date: Tue Feb 05 2013 - 21:21:48 EST


On 02/05/2013 07:26 AM, Andrew Morton wrote:
On Fri, 25 Jan 2013 17:42:09 +0800
Tang Chen<tangchen@xxxxxxxxxxxxxx> wrote:

We now provide an option for users who don't want to specify physical
memory address in kernel commandline.

/*
* For movablemem_map=acpi:
*
* SRAT: |_____| |_____| |_________| |_________| ......
* node id: 0 1 1 2
* hotpluggable: n y y n
* movablemem_map: |_____| |_________|
*
* Using movablemem_map, we can prevent memblock from allocating memory
* on ZONE_MOVABLE at boot time.
*/

So user just specify movablemem_map=acpi, and the kernel will use hotpluggable
info in SRAT to determine which memory ranges should be set as ZONE_MOVABLE.

...

+ if (!strncmp(p, "acpi", max(4, strlen(p))))
+ movablemem_map.acpi = true;

Generates a warning:

mm/page_alloc.c: In function 'cmdline_parse_movablemem_map':
mm/page_alloc.c:5312: warning: comparison of distinct pointer types lacks a cast

due to max(int, size_t).

This is easily fixed, but the code looks rather pointless. If the
incoming string is supposed to be exactly "acpi" then use strcmp(). If
the incoming string must start with "acpi" then use strncmp(p, "acpi", 4).

IOW, the max is unneeded?

Hi Andrew,

I think I made another mistake here. I meant to use min(4, strlen(p)) in case p is
something like 'aaa' whose length is less then 4. But I mistook it with max().

But after I dig into strcmp() in the kernel, I think it is OK to use strcmp().
min() or max() is not needed.

Thanks. :)


--
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/

--
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/