Re: [PATCH 14/21] x86, acpi, numa: Reserve hotpluggable memory atearly time.

From: Tang Chen
Date: Wed Jul 24 2013 - 22:10:50 EST


On 07/24/2013 05:32 AM, Tejun Heo wrote:
On Tue, Jul 23, 2013 at 04:55:57PM -0400, Tejun Heo wrote:
On Fri, Jul 19, 2013 at 03:59:27PM +0800, Tang Chen wrote:
+ /*
+ * In such an early time, we don't have nid. We specify pxm
+ * instead of MAX_NUMNODES to prevent memblock merging regions
+ * on different nodes. And later modify pxm to nid when nid is
+ * mapped so that we can arrange ZONE_MOVABLE on different
+ * nodes.
+ */
+ memblock_reserve_hotpluggable(base_address, length, pxm);

This is rather hacky. Why not just introduce MEMBLOCK_NO_MERGE flag?

The original thinking is to merge regions with the same nid. So I used pxm.
And then refresh the nid field when nids are mapped.

I will try to introduce MEMBLOCK_NO_MERGE and make it less hacky.


Also, if memblock is gonna know about hotplug memory, why not just let
it control its allocation too instead of blocking it by reserving it
from outside? These are all pretty general memory hotplug logic which
doesn't have much to do with acpi and I think too much is implemented
on the acpi side.

At the very beginning, a long time ago, we just did this.
Please refer to: https://lkml.org/lkml/2012/12/10/656

In order to let memblock control the allocation, we have to store the
hotpluggable ranges somewhere, and keep the allocated range out of the
hotpluggable regions. I just think reserving the hotpluggable regions
and then memblock won't allocate them. No need to do any other limitation.

And also, the acpi side modification in this patch-set is to get SRAT
and parse it. I think most of the logic in acpi_reserve_hotpluggable_memory()
is necessary. I don't think letting memblock control the allocation will
make the acpi side easier.

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/