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=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, URIBL_RED autolearn=ham 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 12207C433ED for ; Fri, 16 Apr 2021 19:56:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E358F613CD for ; Fri, 16 Apr 2021 19:56:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235749AbhDPT4t (ORCPT ); Fri, 16 Apr 2021 15:56:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:39500 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243724AbhDPT4m (ORCPT ); Fri, 16 Apr 2021 15:56:42 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BBBD3613CB; Fri, 16 Apr 2021 19:56:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1618602976; bh=2BE/HqJmZLIi0SHmv0/CC7Rs9BKTQuVLvxBbl8IUm+E=; h=Date:From:To:Subject:From; b=iqCW99AO9u31WRYXb8Liefzw2JgZnTkHy5X+4rlmOF9CKYhPlBSsCwPVbAitPycIy D7KYEY/p4NJaL8dSJswma9vTpG2N80/xqNkI3MhBQ9ysAT86fGhZ8Pdxj/OZqV8ZmC mrFsZS/xIeELGC8JdIEUMaV2j8rjlGgCOYNvlsKo= Date: Fri, 16 Apr 2021 12:56:15 -0700 From: akpm@linux-foundation.org To: mm-commits@vger.kernel.org, vbabka@suse.cz, pasha.tatashin@soleen.com, mhocko@suse.com, mhocko@kernel.org, david@redhat.com, anshuman.khandual@arm.com, osalvador@suse.de Subject: + mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory.patch added to -mm tree Message-ID: <20210416195615.AM2rO%akpm@linux-foundation.org> User-Agent: s-nail v14.9.10 Precedence: bulk Reply-To: linux-kernel@vger.kernel.org List-ID: X-Mailing-List: mm-commits@vger.kernel.org The patch titled Subject: mm,memory_hotplug: add kernel boot option to enable memmap_on_memory has been added to the -mm tree. Its filename is mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Oscar Salvador Subject: mm,memory_hotplug: add kernel boot option to enable memmap_on_memory Self stored memmap leads to a sparse memory situation which is unsuitable for workloads that requires large contiguous memory chunks, so make this an opt-in which needs to be explicitly enabled. To control this, let memory_hotplug have its own memory space, as suggested by David, so we can add memory_hotplug.memmap_on_memory parameter. Link: https://lkml.kernel.org/r/20210416112411.9826-7-osalvador@suse.de Signed-off-by: Oscar Salvador Reviewed-by: David Hildenbrand Acked-by: Michal Hocko Cc: Anshuman Khandual Cc: Michal Hocko Cc: Pavel Tatashin Cc: Vlastimil Babka Signed-off-by: Andrew Morton --- Documentation/admin-guide/kernel-parameters.txt | 17 ++++++++++++++ mm/Makefile | 5 +++- mm/memory_hotplug.c | 10 +++++++- 3 files changed, 30 insertions(+), 2 deletions(-) --- a/Documentation/admin-guide/kernel-parameters.txt~mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory +++ a/Documentation/admin-guide/kernel-parameters.txt @@ -2794,6 +2794,23 @@ seconds. Use this parameter to check at some other rate. 0 disables periodic checking. + memory_hotplug.memmap_on_memory + [KNL,X86,ARM] Boolean flag to enable this feature. + Format: {on | off (default)} + When enabled, runtime hotplugged memory will + allocate its internal metadata (struct pages) + from the hotadded memory which will allow to + hotadd a lot of memory without requiring + additional memory to do so. + This feature is disabled by default because it + has some implication on large (e.g. GB) + allocations in some configurations (e.g. small + memory blocks). + The state of the flag can be read in + /sys/module/memory_hotplug/parameters/memmap_on_memory. + Note that even when enabled, there are a few cases where + the feature is not effective. + memtest= [KNL,X86,ARM,PPC] Enable memtest Format: default : 0 --- a/mm/Makefile~mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory +++ a/mm/Makefile @@ -58,9 +58,13 @@ obj-y := filemap.o mempool.o oom_kill. page-alloc-y := page_alloc.o page-alloc-$(CONFIG_SHUFFLE_PAGE_ALLOCATOR) += shuffle.o +# Give 'memory_hotplug' its own module-parameter namespace +memory-hotplug-$(CONFIG_MEMORY_HOTPLUG) += memory_hotplug.o + obj-y += page-alloc.o obj-y += init-mm.o obj-y += memblock.o +obj-y += $(memory-hotplug-y) ifdef CONFIG_MMU obj-$(CONFIG_ADVISE_SYSCALLS) += madvise.o @@ -83,7 +87,6 @@ obj-$(CONFIG_SLUB) += slub.o obj-$(CONFIG_KASAN) += kasan/ obj-$(CONFIG_KFENCE) += kfence/ obj-$(CONFIG_FAILSLAB) += failslab.o -obj-$(CONFIG_MEMORY_HOTPLUG) += memory_hotplug.o obj-$(CONFIG_MEMTEST) += memtest.o obj-$(CONFIG_MIGRATION) += migrate.o obj-$(CONFIG_TRANSPARENT_HUGEPAGE) += huge_memory.o khugepaged.o --- a/mm/memory_hotplug.c~mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory +++ a/mm/memory_hotplug.c @@ -42,7 +42,15 @@ #include "internal.h" #include "shuffle.h" -static bool memmap_on_memory; + +/* + * memory_hotplug.memmap_on_memory parameter + */ +static bool memmap_on_memory __ro_after_init; +#ifdef CONFIG_MHP_MEMMAP_ON_MEMORY +module_param(memmap_on_memory, bool, 0444); +MODULE_PARM_DESC(memmap_on_memory, "Enable memmap on memory for memory hotplug"); +#endif /* * online_page_callback contains pointer to current page onlining function. _ Patches currently in -mm which might be from osalvador@suse.de are x86-vmemmap-drop-handling-of-4k-unaligned-vmemmap-range.patch x86-vmemmap-drop-handling-of-1gb-vmemmap-ranges.patch x86-vmemmap-handle-unpopulated-sub-pmd-ranges.patch x86-vmemmap-handle-unpopulated-sub-pmd-ranges-fix.patch x86-vmemmap-optimize-for-consecutive-sections-in-partial-populated-pmds.patch drivers-base-memory-introduce-memory_block_onlineoffline.patch mmmemory_hotplug-relax-fully-spanned-sections-check.patch mmmemory_hotplug-allocate-memmap-from-the-added-memory-range.patch acpimemhotplug-enable-mhp_memmap_on_memory-when-supported.patch mmmemory_hotplug-add-kernel-boot-option-to-enable-memmap_on_memory.patch x86-kconfig-introduce-arch_mhp_memmap_on_memory_enable.patch arm64-kconfig-introduce-arch_mhp_memmap_on_memory_enable.patch