From: Tang Chen <tangchen@cn.fujitsu.com>
To: Tejun Heo <tj@kernel.org>
Cc: tglx@linutronix.de, mingo@elte.hu, hpa@zytor.com,
akpm@linux-foundation.org, trenn@suse.de, yinghai@kernel.org,
jiang.liu@huawei.com, wency@cn.fujitsu.com, laijs@cn.fujitsu.com,
isimatu.yasuaki@jp.fujitsu.com, izumi.taku@jp.fujitsu.com,
mgorman@suse.de, minchan@kernel.org, mina86@mina86.com,
gong.chen@linux.intel.com, vasilis.liaskovitis@profitbricks.com,
lwoodman@redhat.com, riel@redhat.com, jweiner@redhat.com,
prarit@redhat.com, zhangyanfei@cn.fujitsu.com,
yanghy@cn.fujitsu.com, x86@kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-acpi@vger.kernel.org
Subject: Re: [PATCH 14/21] x86, acpi, numa: Reserve hotpluggable memory at early time.
Date: Fri, 26 Jul 2013 11:45:36 +0800 [thread overview]
Message-ID: <51F1F0E0.7040800@cn.fujitsu.com> (raw)
In-Reply-To: <20130725151719.GE26107@mtj.dyndns.org>
On 07/25/2013 11:17 PM, Tejun Heo wrote:
> Hello,
>
> On Thu, Jul 25, 2013 at 10:13:21AM +0800, Tang Chen wrote:
>>>> 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.
>
> I kinda don't follow why it's necessary to disallow merging BTW. Can
> you plesae elaborate? Shouldn't it be enough to mark the regions
> hotpluggable? Why does it matter whether they get merged or not? If
> they belong to different nodes, they'll be separated during the
> isolation phase while setting nids, which is the modus operandi of
> memblock anyway.
Sorry, I didn't make it clear enough.
The reason why disallowing merging is that in [Patch 20/21], I wanted to
use the nid in each reserved region to set the start address of ZONE_MOVABLE
in each node. And this is only my idea. It is OK without doing this.
But as you said, the isolation phase in memblock_set_node() will split the
specified region and set the nid, I think it is OK to merge the regions
here.
I'll just let it merged here, and not store the pxm.
>
>> 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.
>
> It isn't different from what you're doing right now. Just tell
> memblock that the areas are hotpluggable and the default memblock
> allocation functions stay away from the areas. That way you can later
> add functions which may allocate from hotpluggable areas for
> node-local data without resorting to tricks like unreserving part of
> it and trying allocation or what not.
I just don't want to any new variables to store the hotpluggable regions.
But without a new shared variable, it seems difficult to achieve the goal
you said below.
>As it currently stands, you're
> scattering hotpluggable memory handling across memblock and acpi which
> is kinda nasty. Please make acpi feed information into memblock and
> make memblock handle hotpluggable regions appropriately.
Now, when SRAT is found in acpi side, I reserve the region directly in
memblock.
I think this is the one you don't like.
So how about this.
1. Introduce a new global list used to store hotpluggable regions.
2. On acpi side, find and fulfill the list.
3. On memblock side, make the default allocation function stay away from
these regions.
>
>> 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.
>
> It's about proper layering. The code change involved in either case
> aren't big but splitting it right would give us less headache when we
> later try to support a different firmware or add more features, and
> more importantly, it makes things logical and lowers the all important
> WTH factor and makes things easier to follow.
OK, followed.
Thanks.
WARNING: multiple messages have this Message-ID (diff)
From: Tang Chen <tangchen@cn.fujitsu.com>
To: Tejun Heo <tj@kernel.org>
Cc: tglx@linutronix.de, mingo@elte.hu, hpa@zytor.com,
akpm@linux-foundation.org, trenn@suse.de, yinghai@kernel.org,
jiang.liu@huawei.com, wency@cn.fujitsu.com, laijs@cn.fujitsu.com,
isimatu.yasuaki@jp.fujitsu.com, izumi.taku@jp.fujitsu.com,
mgorman@suse.de, minchan@kernel.org, mina86@mina86.com,
gong.chen@linux.intel.com, vasilis.liaskovitis@profitbricks.com,
lwoodman@redhat.com, riel@redhat.com, jweiner@redhat.com,
prarit@redhat.com, zhangyanfei@cn.fujitsu.com,
yanghy@cn.fujitsu.com, x86@kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-acpi@vger.kernel.org
Subject: Re: [PATCH 14/21] x86, acpi, numa: Reserve hotpluggable memory at early time.
Date: Fri, 26 Jul 2013 11:45:36 +0800 [thread overview]
Message-ID: <51F1F0E0.7040800@cn.fujitsu.com> (raw)
In-Reply-To: <20130725151719.GE26107@mtj.dyndns.org>
On 07/25/2013 11:17 PM, Tejun Heo wrote:
> Hello,
>
> On Thu, Jul 25, 2013 at 10:13:21AM +0800, Tang Chen wrote:
>>>> 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.
>
> I kinda don't follow why it's necessary to disallow merging BTW. Can
> you plesae elaborate? Shouldn't it be enough to mark the regions
> hotpluggable? Why does it matter whether they get merged or not? If
> they belong to different nodes, they'll be separated during the
> isolation phase while setting nids, which is the modus operandi of
> memblock anyway.
Sorry, I didn't make it clear enough.
The reason why disallowing merging is that in [Patch 20/21], I wanted to
use the nid in each reserved region to set the start address of ZONE_MOVABLE
in each node. And this is only my idea. It is OK without doing this.
But as you said, the isolation phase in memblock_set_node() will split the
specified region and set the nid, I think it is OK to merge the regions
here.
I'll just let it merged here, and not store the pxm.
>
>> 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.
>
> It isn't different from what you're doing right now. Just tell
> memblock that the areas are hotpluggable and the default memblock
> allocation functions stay away from the areas. That way you can later
> add functions which may allocate from hotpluggable areas for
> node-local data without resorting to tricks like unreserving part of
> it and trying allocation or what not.
I just don't want to any new variables to store the hotpluggable regions.
But without a new shared variable, it seems difficult to achieve the goal
you said below.
>As it currently stands, you're
> scattering hotpluggable memory handling across memblock and acpi which
> is kinda nasty. Please make acpi feed information into memblock and
> make memblock handle hotpluggable regions appropriately.
Now, when SRAT is found in acpi side, I reserve the region directly in
memblock.
I think this is the one you don't like.
So how about this.
1. Introduce a new global list used to store hotpluggable regions.
2. On acpi side, find and fulfill the list.
3. On memblock side, make the default allocation function stay away from
these regions.
>
>> 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.
>
> It's about proper layering. The code change involved in either case
> aren't big but splitting it right would give us less headache when we
> later try to support a different firmware or add more features, and
> more importantly, it makes things logical and lowers the all important
> WTH factor and makes things easier to follow.
OK, followed.
Thanks.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-07-26 3:42 UTC|newest]
Thread overview: 152+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-19 7:59 [PATCH 00/21] Arrange hotpluggable memory as ZONE_MOVABLE Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-19 7:59 ` [PATCH 01/21] acpi: Print Hot-Pluggable Field in SRAT Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 18:48 ` Tejun Heo
2013-07-23 18:48 ` Tejun Heo
2013-07-23 19:15 ` Joe Perches
2013-07-23 19:15 ` Joe Perches
2013-07-23 19:20 ` Tejun Heo
2013-07-23 19:20 ` Tejun Heo
2013-07-23 19:26 ` Joe Perches
2013-07-23 19:26 ` Joe Perches
2013-07-24 1:46 ` Tang Chen
2013-07-24 1:46 ` Tang Chen
2013-07-19 7:59 ` [PATCH 02/21] memblock, numa: Introduce flag into memblock Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 19:09 ` Tejun Heo
2013-07-23 19:09 ` Tejun Heo
2013-07-24 2:53 ` Tang Chen
2013-07-24 2:53 ` Tang Chen
2013-07-24 15:54 ` Tejun Heo
2013-07-24 15:54 ` Tejun Heo
2013-07-25 6:42 ` Tang Chen
2013-07-25 6:42 ` Tang Chen
2013-07-19 7:59 ` [PATCH 03/21] x86, acpi, numa, mem-hotplug: Introduce MEMBLK_HOTPLUGGABLE to reserve hotpluggable memory Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 19:19 ` Tejun Heo
2013-07-23 19:19 ` Tejun Heo
2013-07-24 2:55 ` Tang Chen
2013-07-24 2:55 ` Tang Chen
2013-07-19 7:59 ` [PATCH 04/21] acpi: Remove "continue" in macro INVALID_TABLE() Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 19:15 ` Tejun Heo
2013-07-23 19:15 ` Tejun Heo
2013-07-19 7:59 ` [PATCH 05/21] acpi: Introduce acpi_invalid_table() to check if a table is invalid Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-19 7:59 ` [PATCH 06/21] x86, acpi: Split acpi_boot_table_init() into two parts Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-19 7:59 ` [PATCH 07/21] x86, acpi: Initialize ACPI root table list earlier Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-19 7:59 ` [PATCH 08/21] x86, acpi: Also initialize signature and length when parsing root table Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 19:45 ` Tejun Heo
2013-07-23 19:45 ` Tejun Heo
2013-07-25 6:50 ` Tang Chen
2013-07-25 6:50 ` Tang Chen
2013-07-19 7:59 ` [PATCH 09/21] x86: Make get_ramdisk_{image|size}() global Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 19:56 ` Tejun Heo
2013-07-23 19:56 ` Tejun Heo
2013-07-24 3:12 ` Tang Chen
2013-07-24 3:12 ` Tang Chen
2013-07-19 7:59 ` [PATCH 10/21] earlycpio.c: Fix the confusing comment of find_cpio_data() Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 20:02 ` Tejun Heo
2013-07-23 20:02 ` Tejun Heo
2013-07-24 3:20 ` Tang Chen
2013-07-24 3:20 ` Tang Chen
2013-07-19 7:59 ` [PATCH 11/21] x86: get pg_data_t's memory from other node Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 20:09 ` Tejun Heo
2013-07-23 20:09 ` Tejun Heo
2013-07-24 3:52 ` Tang Chen
2013-07-24 3:52 ` Tang Chen
2013-07-24 16:03 ` Tejun Heo
2013-07-24 16:03 ` Tejun Heo
2013-07-19 7:59 ` [PATCH 12/21] x86, acpi: Try to find if SRAT is overrided earlier Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 20:27 ` Tejun Heo
2013-07-23 20:27 ` Tejun Heo
2013-07-24 6:57 ` Tang Chen
2013-07-24 6:57 ` Tang Chen
2013-07-19 7:59 ` [PATCH 13/21] x86, acpi: Try to find SRAT in firmware earlier Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 20:49 ` Tejun Heo
2013-07-23 20:49 ` Tejun Heo
2013-07-24 10:12 ` Tang Chen
2013-07-24 10:12 ` Tang Chen
2013-07-24 15:55 ` Tejun Heo
2013-07-24 15:55 ` Tejun Heo
2013-07-23 23:26 ` Cody P Schafer
2013-07-23 23:26 ` Cody P Schafer
2013-07-24 10:16 ` Tang Chen
2013-07-24 10:16 ` Tang Chen
2013-07-19 7:59 ` [PATCH 14/21] x86, acpi, numa: Reserve hotpluggable memory at early time Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 20:55 ` Tejun Heo
2013-07-23 20:55 ` Tejun Heo
2013-07-23 21:32 ` Tejun Heo
2013-07-23 21:32 ` Tejun Heo
2013-07-25 2:13 ` Tang Chen
2013-07-25 2:13 ` Tang Chen
2013-07-25 15:17 ` Tejun Heo
2013-07-25 15:17 ` Tejun Heo
2013-07-26 3:45 ` Tang Chen [this message]
2013-07-26 3:45 ` Tang Chen
2013-07-26 10:26 ` Tejun Heo
2013-07-26 10:26 ` Tejun Heo
2013-07-26 10:27 ` Tejun Heo
2013-07-26 10:27 ` Tejun Heo
2013-07-29 2:12 ` Tang Chen
2013-07-29 2:12 ` Tang Chen
2013-07-29 17:10 ` Tejun Heo
2013-07-29 17:10 ` Tejun Heo
2013-07-19 7:59 ` [PATCH 15/21] x86, acpi, numa: Don't reserve memory on nodes the kernel resides in Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 20:59 ` Tejun Heo
2013-07-23 20:59 ` Tejun Heo
2013-07-25 2:34 ` Tang Chen
2013-07-25 2:34 ` Tang Chen
2013-07-19 7:59 ` [PATCH 16/21] x86, memblock, mem-hotplug: Free hotpluggable memory reserved by memblock Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 21:00 ` Tejun Heo
2013-07-23 21:00 ` Tejun Heo
2013-07-25 2:35 ` Tang Chen
2013-07-25 2:35 ` Tang Chen
2013-07-19 7:59 ` [PATCH 17/21] page_alloc, mem-hotplug: Improve movablecore to {en|dis}able using SRAT Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 21:04 ` Tejun Heo
2013-07-23 21:04 ` Tejun Heo
2013-07-23 21:11 ` Tejun Heo
2013-07-23 21:11 ` Tejun Heo
2013-07-25 3:50 ` Tang Chen
2013-07-25 3:50 ` Tang Chen
2013-07-25 15:09 ` Tejun Heo
2013-07-25 15:09 ` Tejun Heo
2013-07-26 3:58 ` Tang Chen
2013-07-26 3:58 ` Tang Chen
2013-07-19 7:59 ` [PATCH 18/21] x86, numa: Synchronize nid info in memblock.reserve with numa_meminfo Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 21:25 ` Tejun Heo
2013-07-23 21:25 ` Tejun Heo
2013-07-25 4:09 ` Tang Chen
2013-07-25 4:09 ` Tang Chen
2013-07-25 15:05 ` Tejun Heo
2013-07-25 15:05 ` Tejun Heo
2013-07-26 4:00 ` Tang Chen
2013-07-26 4:00 ` Tang Chen
2013-07-19 7:59 ` [PATCH 19/21] x86, numa: Save nid when reserve memory into memblock.reserved[] Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-19 7:59 ` [PATCH 20/21] x86, numa, acpi, memory-hotplug: Make movablecore=acpi have higher priority Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 21:21 ` Tejun Heo
2013-07-23 21:21 ` Tejun Heo
2013-07-19 7:59 ` [PATCH 21/21] doc, page_alloc, acpi, mem-hotplug: Add doc for movablecore=acpi boot option Tang Chen
2013-07-19 7:59 ` Tang Chen
2013-07-23 21:21 ` Tejun Heo
2013-07-23 21:21 ` Tejun Heo
2013-07-25 3:53 ` Tang Chen
2013-07-25 3:53 ` Tang Chen
2013-07-22 2:48 ` [PATCH 00/21] Arrange hotpluggable memory as ZONE_MOVABLE Tang Chen
2013-07-22 2:48 ` Tang Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51F1F0E0.7040800@cn.fujitsu.com \
--to=tangchen@cn.fujitsu.com \
--cc=akpm@linux-foundation.org \
--cc=gong.chen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=isimatu.yasuaki@jp.fujitsu.com \
--cc=izumi.taku@jp.fujitsu.com \
--cc=jiang.liu@huawei.com \
--cc=jweiner@redhat.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lwoodman@redhat.com \
--cc=mgorman@suse.de \
--cc=mina86@mina86.com \
--cc=minchan@kernel.org \
--cc=mingo@elte.hu \
--cc=prarit@redhat.com \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=trenn@suse.de \
--cc=vasilis.liaskovitis@profitbricks.com \
--cc=wency@cn.fujitsu.com \
--cc=x86@kernel.org \
--cc=yanghy@cn.fujitsu.com \
--cc=yinghai@kernel.org \
--cc=zhangyanfei@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.