From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87E5CC10F29 for ; Wed, 11 Mar 2020 14:26:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 55B2420693 for ; Wed, 11 Mar 2020 14:26:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aePPmYDn" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729531AbgCKO0h (ORCPT ); Wed, 11 Mar 2020 10:26:37 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:44077 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729057AbgCKO0g (ORCPT ); Wed, 11 Mar 2020 10:26:36 -0400 Received: by mail-wr1-f68.google.com with SMTP id l18so2852859wru.11; Wed, 11 Mar 2020 07:26:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:reply-to:references:mime-version :content-disposition:in-reply-to:user-agent; bh=CsTbLtbFJBK1CBJJUlE0MFl94CmaUOLGCz5Mkq+OEkw=; b=aePPmYDnoI4RewHsJ7PIf4IJD1UEiDm22ZxJsfHqe0fflICqXL+sNoyCZnK4fIsMEA rSmtVqB++yTeLqfn79SFyplP5gdxjQzJsjtkaLFA8FVWiDCNLa2u1FG+Fls6KW9qG98Y OGXrCwkwT9GAth1nZ2zt5vh2WpoEQf4wEDDC3X3llrNY+26gZ/cVfestr4/EEyv1j9QM +rP6pOS/w3SQgo0PuN+oWHdGZzMGwQbCkKxyPsXwKJxgSP05PChvyUUhbOReiZGRLUBg cDfMqXVLiBZIUfAKEoMDbhqJdzs4V5ZJGvfbv0t+4YD5kAves9NGiRbQdwjs0S4tB9hu HEzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:reply-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=CsTbLtbFJBK1CBJJUlE0MFl94CmaUOLGCz5Mkq+OEkw=; b=Yao1ELSRwc5CwJleXyZsCVt6dpqxaJZ/COl4mQ7K+f4HTQTUPJHWq92rASRlRxpyJu Dj+wT0EdPNZSHh5NwSjvhRzfZ1HL7+1TWOvIkoyOpoXecF215KxURFyCZXLZZz68kaTv vHckCqb501lj4N5UZuwh25DqrElhtyMjEhMrVgiCX63soHgQ7jys0ZySoH3vRnj2dRDa Vc0+qY9AUFFJSHck+MkP9bTY71l+l4euJhWP/m0L1128y8Aah0LkU801GFZogfK05Eo6 n4l4+eSdG8sqMPHbeFBqH2xo8zFiEbx6+QCWcyas0H/gJOOOXT56g8xN/uhjdqZVkphG FcHg== X-Gm-Message-State: ANhLgQ12B7WvksyRUydxNbFksJ5kpvBfOk5BpXX9yhKpQmuvJdtFFHb1 KNIdwISkmqRVu77M7z8nCRKKcMS8 X-Google-Smtp-Source: ADFU+vs4N9H4NmCIYVGtkISk1DRai7Z1/9w16SPv6LvlOjT+MD/1Y3ePN+L7ARQFCQwtIeNpFr5Iyw== X-Received: by 2002:a5d:6086:: with SMTP id w6mr4715591wrt.224.1583936793924; Wed, 11 Mar 2020 07:26:33 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id c72sm8381117wme.35.2020.03.11.07.26.33 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Mar 2020 07:26:33 -0700 (PDT) Date: Wed, 11 Mar 2020 14:26:32 +0000 From: Wei Yang To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, linux-hyperv@vger.kernel.org, Greg Kroah-Hartman , Andrew Morton , Michal Hocko , Oscar Salvador , "Rafael J. Wysocki" , Baoquan He , Wei Yang Subject: Re: [PATCH v1 5/5] mm/memory_hotplug: allow to specify a default online_type Message-ID: <20200311142632.xvdwqk2lun4ookez@master> Reply-To: Wei Yang References: <20200311123026.16071-1-david@redhat.com> <20200311123026.16071-6-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200311123026.16071-6-david@redhat.com> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 11, 2020 at 01:30:26PM +0100, David Hildenbrand wrote: >For now, distributions implement advanced udev rules to essentially >- Don't online any hotplugged memory (s390x) >- Online all memory to ZONE_NORMAL (e.g., most virt environments like > hyperv) >- Online all memory to ZONE_MOVABLE in case the zone imbalance is taken > care of (e.g., bare metal, special virt environments) > >In summary: All memory is usually onlined the same way, however, the >kernel always has to ask userspace to come up with the same answer. >E.g., HyperV always waits for a memory block to get onlined before >continuing, otherwise it might end up adding memory faster than >hotplugging it, which can result in strange OOM situations. > >Let's allow to specify a default online_type, not just "online" and >"offline". This allows distributions to configure the default online_type >when booting up and be done with it. > >We can now specify "offline", "online", "online_movable" and >"online_kernel" via >- "memhp_default_state=" on the kernel cmdline >- /sys/devices/systemn/memory/auto_online_blocks >just like we are able to specify for a single memory block via >/sys/devices/systemn/memory/memoryX/state > >Cc: Greg Kroah-Hartman >Cc: Andrew Morton >Cc: Michal Hocko >Cc: Oscar Salvador >Cc: "Rafael J. Wysocki" >Cc: Baoquan He >Cc: Wei Yang >Signed-off-by: David Hildenbrand Ok, I got the reason to leave the change on string compare here. Reviewed-by: Wei Yang >--- > drivers/base/memory.c | 11 +++++------ > include/linux/memory_hotplug.h | 2 ++ > mm/memory_hotplug.c | 8 ++++---- > 3 files changed, 11 insertions(+), 10 deletions(-) > >diff --git a/drivers/base/memory.c b/drivers/base/memory.c >index 8d3e16dab69f..2b09b68b9f78 100644 >--- a/drivers/base/memory.c >+++ b/drivers/base/memory.c >@@ -35,7 +35,7 @@ static const char *const online_type_to_str[] = { > [MMOP_ONLINE_MOVABLE] = "online_movable", > }; > >-static int memhp_online_type_from_str(const char *str) >+int memhp_online_type_from_str(const char *str) > { > int i; > >@@ -394,13 +394,12 @@ static ssize_t auto_online_blocks_store(struct device *dev, > struct device_attribute *attr, > const char *buf, size_t count) > { >- if (sysfs_streq(buf, "online")) >- memhp_default_online_type = MMOP_ONLINE; >- else if (sysfs_streq(buf, "offline")) >- memhp_default_online_type = MMOP_OFFLINE; >- else >+ const int online_type = memhp_online_type_from_str(buf); >+ >+ if (online_type < 0) > return -EINVAL; > >+ memhp_default_online_type = online_type; > return count; > } > >diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h >index c6e090b34c4b..ef55115320fb 100644 >--- a/include/linux/memory_hotplug.h >+++ b/include/linux/memory_hotplug.h >@@ -117,6 +117,8 @@ extern int arch_add_memory(int nid, u64 start, u64 size, > struct mhp_restrictions *restrictions); > extern u64 max_mem_size; > >+extern int memhp_online_type_from_str(const char *str); >+ > /* Default online_type (MMOP_*) when new memory blocks are added. */ > extern int memhp_default_online_type; > /* If movable_node boot option specified */ >diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >index 01443c70aa27..4a96273eafa7 100644 >--- a/mm/memory_hotplug.c >+++ b/mm/memory_hotplug.c >@@ -75,10 +75,10 @@ EXPORT_SYMBOL_GPL(memhp_default_online_type); > > static int __init setup_memhp_default_state(char *str) > { >- if (!strcmp(str, "online")) >- memhp_default_online_type = MMOP_ONLINE; >- else if (!strcmp(str, "offline")) >- memhp_default_online_type = MMOP_OFFLINE; >+ const int online_type = memhp_online_type_from_str(str); >+ >+ if (online_type >= 0) >+ memhp_default_online_type = online_type; > > return 1; > } >-- >2.24.1 -- Wei Yang Help you, Help me