lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <55DB26A4.9060302@suse.cz>
Date:	Mon, 24 Aug 2015 16:13:56 +0200
From:	Vlastimil Babka <vbabka@...e.cz>
To:	Changsheng Liu <liuchangsheng@...pur.com>,
	akpm@...ux-foundation.org, isimatu.yasuaki@...fujitsu.com
Cc:	linux-mm@...ck.org, linux-kernel@...r.kernel.org,
	yanxiaofeng@...pur.com, fandd@...pur.com,
	Changsheng Liu <liuchangcheng@...pur.com>
Subject: Re: [PATCH V2] mm:memory hot-add: memory can not been added to
 movable zone

On 08/21/2015 04:00 AM, Changsheng Liu wrote:
>
> On 08/20/201515:41, Vlastimil Babka wrote:
>> On 08/20/2015 09:28 AM, Changsheng Liu wrote:
>>> From: Changsheng Liu <liuchangcheng@...pur.com>
>>>
>>> When memory is hot added, should_add_memory_movable() always returns 0
>>> because the movable zone is empty, so the memory that was hot added will
>>> add to the normal zone even if we want to remove the memory.
>>
>> I'm not expert on memory hot-plug, but since you CC'd me, I wonder...
>> the function has this comment: " * If movable zone has already been
>> setup, newly added memory should be check."
>>
>> So I read it like "if you want movable memory *at all*, you should do
>> some setup first" (but don't ask me what setup). After your patch,
>> every hot-added memory would be automatically movable? Isn't that
>> silently changing behavior against user expectations? What about those
>> that don't want to hot-remove and don't want movable zones (which
>> limit what kind of allocations are possible), is there a way to
>> prevent memory being movable after your patch?
>       After the system startup, we hot added one cpu with memory, The
> function arch_add_memory() will add the memory to
>       normal zone defaultly but now all zones including normal zone and
> movable zone are empty.So If we want to add the memory
>       to movable zone we need change should_add_memory_movable().

I have poked a bit at the code and documentation, and I may still not 
have the complete picture.

Are you using movable_node kernel option to expect all hotpluggable 
memory to be movable? Then it's probably a bug. But then your patch 
should probably use movable_node_is_enabled() instead of checking just 
the config. Otherwise it would be making zone movable also for those who 
enabled the config, but don't pass the kernel option, and that would be 
wrong?

Or are you onlining memory by "echo online_movable > 
/sys/devices/system/memory/memoryXXX/state" without node_movable kernel 
option?

>>
>>> So we change should_add_memory_movable(): if the user config
>>> CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.
>>>
>>> Reviewed-by: Andrew Morton <akpm@...ux-foundation.org>
>>> Signed-off-by: Changsheng Liu <liuchangcheng@...pur.com>
>>> Tested-by: Dongdong Fan <fandd@...pur.com>
>>> ---
>>>    mm/memory_hotplug.c |    3 +--
>>>    1 files changed, 1 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>>> index 26fbba7..ff658f2 100644
>>> --- a/mm/memory_hotplug.c
>>> +++ b/mm/memory_hotplug.c
>>> @@ -1199,8 +1199,7 @@ static int should_add_memory_movable(int nid,
>>> u64 start, u64 size)
>>>        struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>>>
>>>        if (zone_is_empty(movable_zone))
>>> -        return 0;
>>> -
>>> +        return IS_ENABLED(CONFIG_MOVABLE_NODE);
>>>        if (movable_zone->zone_start_pfn <= start_pfn)
>>>            return 1;
>>>
>>>
>>
>> .
>>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ