Re: [PATCH 18/21] x86, numa: Synchronize nid info in memblock.reserve with numa_meminfo.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/24/2013 05:25 AM, Tejun Heo wrote:
On Fri, Jul 19, 2013 at 03:59:31PM +0800, Tang Chen wrote:
Vasilis Liaskovitis found that before we parse SRAT and fulfill numa_meminfo,
the nids of all the regions in memblock.reserve[] are MAX_NUMNODES. That is
because nids have not been mapped at that time.

When we arrange ZONE_MOVABLE in each node later, we need nid in memblock. So
after we parse SRAT and fulfill nume_meminfo, synchronize the nid info to
memblock.reserve[] immediately.

Having a separate sync is rather nasty.  Why not let
memblock_set_node() and alloc functions set nid on the reserved
regions?

Node id and pxm are 1-1 mapped. For the current kernel, before SRAT is parsed,
we don't know nid. So all allocated regions are reserved by memblock with
nid = MAX_NUMNODES. So for early allocated memory, we cannot use memblock_set_node()
and alloc functions to set the nid.

In this patch-set, we parse SRAT twice, the first one is right after memblock is ready.
But we didn't setup nid <-> pxm mapping. So we still have this problem.

And as in [patch 14/21], when reserving hotpluggable memory, we use pxm. So my idea was to do a nid sync in numa_init(). After this, memblock will set nid when
it allocates memory.

If we want to let memblock_set_node() and alloc functions set nid on the reserved regions, we should setup nid <-> pxm mapping when we parst SRAT for the first time.
If you think this is OK, I can try it.

Thanks.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]