From: Andrew Morton <akpm@linux-foundation.org> To: benh@kernel.crashing.org, bhe@redhat.com, david@redhat.com, mhocko@suse.com, mm-commits@vger.kernel.org, mpe@ellerman.id.au, nfont@linux.vnet.ibm.com, osalvador@suse.de, paulus@samba.org, richard.weiyang@gmail.com Subject: + powerpc-pseries-hotplug-memory-stop-checking-is_mem_section_removable.patch added to -mm tree Date: Mon, 13 Apr 2020 19:06:47 -0700 Message-ID: <20200414020647.aBslq0QvN%akpm@linux-foundation.org> (raw) In-Reply-To: <20200412004155.1a8f4e081b4e03ef5903abb5@linux-foundation.org> The patch titled Subject: powerpc/pseries/hotplug-memory: stop checking is_mem_section_removable() has been added to the -mm tree. Its filename is powerpc-pseries-hotplug-memory-stop-checking-is_mem_section_removable.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/powerpc-pseries-hotplug-memory-stop-checking-is_mem_section_removable.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/powerpc-pseries-hotplug-memory-stop-checking-is_mem_section_removable.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: David Hildenbrand <david@redhat.com> Subject: powerpc/pseries/hotplug-memory: stop checking is_mem_section_removable() In commit 53cdc1cb29e8 ("drivers/base/memory.c: indicate all memory blocks as removable"), the user space interface to compute whether a memory block can be offlined (exposed via /sys/devices/system/memory/memoryX/removable) has effectively been deprecated. We want to remove the leftovers of the kernel implementation. When offlining a memory block (mm/memory_hotplug.c:__offline_pages()), we'll start by: 1. Testing if it contains any holes, and reject if so 2. Testing if pages belong to different zones, and reject if so 3. Isolating the page range, checking if it contains any unmovable pages Using is_mem_section_removable() before trying to offline is not only racy, it can easily result in false positives/negatives. Let's stop manually checking is_mem_section_removable(), and let device_offline() handle it completely instead. We can remove the racy is_mem_section_removable() implementation next. We now take more locks (e.g., memory hotplug lock when offlining and the zone lock when isolating), but maybe we should optimize that implementation instead if this ever becomes a real problem (after all, memory unplug is already an expensive operation). We started using is_mem_section_removable() in commit 51925fb3c5c9 ("powerpc/pseries: Implement memory hotplug remove in the kernel"), with the initial hotremove support of lmbs. Link: http://lkml.kernel.org/r/20200407135416.24093-2-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Baoquan He <bhe@redhat.com> Cc: Wei Yang <richard.weiyang@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- arch/powerpc/platforms/pseries/hotplug-memory.c | 26 +------------- 1 file changed, 3 insertions(+), 23 deletions(-) --- a/arch/powerpc/platforms/pseries/hotplug-memory.c~powerpc-pseries-hotplug-memory-stop-checking-is_mem_section_removable +++ a/arch/powerpc/platforms/pseries/hotplug-memory.c @@ -337,39 +337,19 @@ static int pseries_remove_mem_node(struc static bool lmb_is_removable(struct drmem_lmb *lmb) { - int i, scns_per_block; - bool rc = true; - unsigned long pfn, block_sz; - u64 phys_addr; - if (!(lmb->flags & DRCONF_MEM_ASSIGNED)) return false; - block_sz = memory_block_size_bytes(); - scns_per_block = block_sz / MIN_MEMORY_BLOCK_SIZE; - phys_addr = lmb->base_addr; - #ifdef CONFIG_FA_DUMP /* * Don't hot-remove memory that falls in fadump boot memory area * and memory that is reserved for capturing old kernel memory. */ - if (is_fadump_memory_area(phys_addr, block_sz)) + if (is_fadump_memory_area(lmb->base_addr, memory_block_size_bytes())) return false; #endif - - for (i = 0; i < scns_per_block; i++) { - pfn = PFN_DOWN(phys_addr); - if (!pfn_in_present_section(pfn)) { - phys_addr += MIN_MEMORY_BLOCK_SIZE; - continue; - } - - rc = rc && is_mem_section_removable(pfn, PAGES_PER_SECTION); - phys_addr += MIN_MEMORY_BLOCK_SIZE; - }
next prev parent reply index Thread overview: 140+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-12 7:41 incoming Andrew Morton 2020-04-12 7:42 ` [patch 1/1] mm/debug: add tests validating architecture page table helpers Andrew Morton 2020-04-13 20:01 ` + mm-userfaultfd-disable-userfaultfd-wp-on-x86_32.patch added to -mm tree Andrew Morton 2020-04-13 20:08 ` + maintainers-add-an-entry-for-kfifo-fix.patch " Andrew Morton 2020-04-13 20:11 ` + m68k-drop-redundant-generic-y-=-hardirqh.patch " Andrew Morton 2020-04-13 20:12 ` + userc-make-uidhash_table-static.patch " Andrew Morton 2020-04-13 20:34 ` + sh-fix-build-error-in-mm-initc.patch " Andrew Morton 2020-04-13 20:51 ` + mm-hugetlb-fix-a-addressing-exception-caused-by-huge_pte_offset.patch " Andrew Morton 2020-04-13 21:16 ` + checkpatch-additional-maintainer-section-entry-ordering-checks.patch " Andrew Morton 2020-04-13 22:27 ` + fat-improve-the-readahead-for-fat-entries.patch " Andrew Morton 2020-04-13 22:32 ` + mm-swapfile-use-list_prevnext_entry-instead-of-open-coding.patch " Andrew Morton 2020-04-13 22:33 ` + mm-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton 2020-04-13 22:36 ` + mm-vmsan-fix-some-typos-in-comment.patch " Andrew Morton 2020-04-13 22:38 ` + mm-compaction-fix-a-typo-in-comment-pessemistic-pessimistic.patch " Andrew Morton 2020-04-13 22:38 ` + mm-memblock-fix-a-typo-in-comment-implict-implicit.patch " Andrew Morton 2020-04-13 22:38 ` + mm-list_lru-fix-a-typo-in-comment-numbesr-numbers.patch " Andrew Morton 2020-04-13 22:50 ` + mm-filemap-fix-a-typo-in-comment-unneccssary-unnecessary.patch " Andrew Morton 2020-04-13 22:51 ` + mm-frontswap-fix-some-typos-in-frontswapc.patch " Andrew Morton 2020-04-13 22:51 ` + mm-memcg-fix-some-typos-in-memcontrolc.patch " Andrew Morton 2020-04-13 22:51 ` + mm-fix-a-typo-in-comment-strucure-structure.patch " Andrew Morton 2020-04-13 23:07 ` + mm-slub-fix-a-typo-in-comment-disambiguiation-disambiguation.patch " Andrew Morton 2020-04-13 23:07 ` + mm-sparse-fix-a-typo-in-comment-convienence-convenience.patch " Andrew Morton 2020-04-13 23:07 ` + mm-page-writeback-fix-a-typo-in-comment-effictive-effective.patch " Andrew Morton 2020-04-13 23:07 ` + mm-memory-fix-a-typo-in-comment-attampt-attempt.patch " Andrew Morton 2020-04-14 0:25 ` + mm-memblock-replace-dereferences-of-memblock_regionnid-with-api-calls.patch " Andrew Morton 2020-04-14 0:25 ` + mm-make-early_pfn_to_nid-and-related-defintions-close-to-each-other.patch " Andrew Morton 2020-04-14 0:25 ` + mm-remove-config_have_memblock_node_map-option.patch " Andrew Morton 2020-04-14 0:25 ` + mm-free_area_init-use-maximal-zone-pfns-rather-than-zone-sizes.patch " Andrew Morton 2020-04-14 0:25 ` + mm-use-free_area_init-instead-of-free_area_init_nodes.patch " Andrew Morton 2020-04-14 0:26 ` + alpha-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + arm-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + arm64-simplify-detection-of-memory-zone-boundaries-for-uma-configs.patch " Andrew Morton 2020-04-14 0:26 ` + csky-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + m68k-mm-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + parisc-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + sparc32-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + unicore32-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + xtensa-simplify-detection-of-memory-zone-boundaries.patch " Andrew Morton 2020-04-14 0:26 ` + mm-memmap_init-iterate-over-memblock-regions-rather-that-check-each-pfn.patch " Andrew Morton 2020-04-14 0:26 ` + mm-remove-early_pfn_in_nid-and-config_nodes_span_other_nodes.patch " Andrew Morton 2020-04-14 0:26 ` + mm-free_area_init-allow-defining-max_zone_pfn-in-descending-order.patch " Andrew Morton 2020-04-14 0:26 ` + mm-rename-free_area_init_node-to-free_area_init_memoryless_node.patch " Andrew Morton 2020-04-14 0:26 ` + mm-clean-up-free_area_init_node-and-its-helpers.patch " Andrew Morton 2020-04-14 0:26 ` + mm-simplify-find_min_pfn_with_active_regions.patch " Andrew Morton 2020-04-14 0:27 ` + docs-vm-update-memory-models-documentation.patch " Andrew Morton 2020-04-14 0:40 ` + mm-page_allocc-bad_-is-not-necessary-when-pagehwpoison.patch " Andrew Morton 2020-04-14 0:40 ` + mm-page_allocc-bad_flags-is-not-necessary-for-bad_page.patch " Andrew Morton 2020-04-14 0:40 ` + mm-page_allocc-rename-free_pages_check_bad-to-check_free_page_bad.patch " Andrew Morton 2020-04-14 0:40 ` + mm-page_allocc-rename-free_pages_check-to-check_free_page.patch " Andrew Morton 2020-04-14 0:40 ` + mm-page_allocc-extract-check__page_bad-common-part-to-page_bad_reason.patch " Andrew Morton 2020-04-14 0:52 ` + dynamic_debug-add-an-option-to-enable-dynamic-debug-for-modules-only.patch " Andrew Morton 2020-04-14 1:09 ` + mm-gup-return-eintr-when-gup-is-interrupted-by-fatal-signals.patch " Andrew Morton 2020-04-14 1:37 ` + squashfs-squashfs_fsh-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton 2020-04-14 1:37 ` + squashfs-migrate-from-ll_rw_block-usage-to-bio.patch " Andrew Morton 2020-04-14 1:39 ` + checkpatch-fix-a-typo-in-the-regex-for-allocfunctions.patch " Andrew Morton 2020-04-14 2:06 ` Andrew Morton [this message] 2020-04-14 2:06 ` + mm-memory_hotplug-remove-is_mem_section_removable.patch " Andrew Morton 2020-04-14 2:13 ` [folded-merged] mm-clarify-__gfp_memalloc-usage-update.patch removed from " Andrew Morton 2020-04-14 2:13 ` [folded-merged] mm-clarify-__gfp_memalloc-usage-update-checkpatch-fixes.patch " Andrew Morton 2020-04-14 22:30 ` + maintainers-add-an-entry-for-kfifo-fix-fix.patch added to " Andrew Morton 2020-04-14 23:10 ` + mm-hugetlb-fix-a-typo-in-comment-manitained-maintained-v2.patch " Andrew Morton 2020-04-14 23:11 ` + mm-hugetlb-fix-a-typo-in-comment-manitained-maintained-v2-checkpatch-fixes.patch " Andrew Morton 2020-04-14 23:11 ` + mm-ksm-fix-a-typo-in-comment-alreaady-already-v2.patch " Andrew Morton 2020-04-14 23:56 ` + lib-add-might_fault-to-strncpy_from_user.patch " Andrew Morton 2020-04-15 0:00 ` + tools-build-tweak-unused-value-workaround.patch " Andrew Morton 2020-04-15 0:39 ` + h8300-remove-usage-of-__arch_use_5level_hack.patch " Andrew Morton 2020-04-15 0:39 ` + arm-add-support-for-folded-p4d-page-tables.patch " Andrew Morton 2020-04-15 0:39 ` + arm64-add-support-for-folded-p4d-page-tables.patch " Andrew Morton 2020-04-15 0:39 ` + hexagon-remove-__arch_use_5level_hack.patch " Andrew Morton 2020-04-15 0:39 ` + ia64-add-support-for-folded-p4d-page-tables.patch " Andrew Morton 2020-04-15 0:39 ` + nios2-add-support-for-folded-p4d-page-tables.patch " Andrew Morton 2020-04-15 0:40 ` + openrisc-add-support-for-folded-p4d-page-tables.patch " Andrew Morton 2020-04-15 0:40 ` + powerpc-add-support-for-folded-p4d-page-tables.patch " Andrew Morton 2020-04-15 0:40 ` + sh-fault-modernize-printing-of-kernel-messages.patch " Andrew Morton 2020-04-15 0:40 ` + sh-drop-__pxd_offset-macros-that-duplicate-pxd_index-ones.patch " Andrew Morton 2020-04-15 0:40 ` + sh-add-support-for-folded-p4d-page-tables.patch " Andrew Morton 2020-04-15 0:40 ` + unicore32-remove-__arch_use_5level_hack.patch " Andrew Morton 2020-04-15 0:40 ` + asm-generic-remove-pgtable-nop4d-hackh.patch " Andrew Morton 2020-04-15 0:40 ` + mm-remove-__arch_has_5level_hack-and-include-asm-generic-5level-fixuph.patch " Andrew Morton 2020-04-15 1:17 ` + mm-move-readahead-prototypes-from-mmh.patch " Andrew Morton 2020-04-15 1:17 ` + mm-return-void-from-various-readahead-functions.patch " Andrew Morton 2020-04-15 1:17 ` + mm-ignore-return-value-of-readpages.patch " Andrew Morton 2020-04-15 1:17 ` + mm-move-readahead-nr_pages-check-into-read_pages.patch " Andrew Morton 2020-04-15 1:17 ` + mm-add-new-readahead_control-api.patch " Andrew Morton 2020-04-15 1:17 ` + mm-use-readahead_control-to-pass-arguments.patch " Andrew Morton 2020-04-15 1:17 ` + mm-rename-various-offset-parameters-to-index.patch " Andrew Morton 2020-04-15 1:17 ` + mm-rename-readahead-loop-variable-to-i.patch " Andrew Morton 2020-04-15 1:17 ` + mm-remove-page_offset-from-readahead-loop.patch " Andrew Morton 2020-04-15 1:17 ` + mm-put-readahead-pages-in-cache-earlier.patch " Andrew Morton 2020-04-15 1:17 ` + mm-add-readahead-address-space-operation.patch " Andrew Morton 2020-04-15 1:17 ` + mm-move-end_index-check-out-of-readahead-loop.patch " Andrew Morton 2020-04-15 1:18 ` + mm-add-page_cache_readahead_unbounded.patch " Andrew Morton 2020-04-15 1:18 ` + mm-document-why-we-dont-set-pagereadahead.patch " Andrew Morton 2020-04-15 1:18 ` + mm-use-memalloc_nofs_save-in-readahead-path.patch " Andrew Morton 2020-04-15 1:18 ` + fs-convert-mpage_readpages-to-mpage_readahead.patch " Andrew Morton 2020-04-15 1:18 ` + btrfs-convert-from-readpages-to-readahead.patch " Andrew Morton 2020-04-15 1:18 ` + erofs-convert-uncompressed-files-from-readpages-to-readahead.patch " Andrew Morton 2020-04-15 1:18 ` + erofs-convert-compressed-files-from-readpages-to-readahead.patch " Andrew Morton 2020-04-15 1:18 ` + ext4-convert-from-readpages-to-readahead.patch " Andrew Morton 2020-04-15 1:18 ` + ext4-pass-the-inode-to-ext4_mpage_readpages.patch " Andrew Morton 2020-04-15 1:18 ` + f2fs-convert-from-readpages-to-readahead.patch " Andrew Morton 2020-04-15 1:18 ` + f2fs-pass-the-inode-to-f2fs_mpage_readpages.patch " Andrew Morton 2020-04-15 1:18 ` + fuse-convert-from-readpages-to-readahead.patch " Andrew Morton 2020-04-15 1:18 ` + iomap-convert-from-readpages-to-readahead.patch " Andrew Morton 2020-04-15 1:54 ` + mm-ksm-fix-null-pointer-dereference-when-ksm-zero-page-is-enabled.patch " Andrew Morton [not found] ` <49e65ca7-03a2-9a82-9e1a-cf997320bcfd@virtuozzo.com> [not found] ` <CAMZfGtWwE_9uSH9Vw+W2yJJhMo4BfWHx_PME+HD5h3r+A3zXeg@mail.gmail.com> 2020-04-15 18:32 ` [External] " Andrew Morton 2020-04-15 4:29 ` + mm-gupc-further-document-vma_permits_fault.patch " Andrew Morton 2020-04-15 4:33 ` + fuse-convert-from-readpages-to-readahead-fix.patch " Andrew Morton 2020-04-15 4:46 ` + x86-hyperv-use-vmalloc_exec-for-the-hypercall-page.patch " Andrew Morton 2020-04-15 4:46 ` + x86-fix-vmap-arguments-in-map_irq_stack.patch " Andrew Morton 2020-04-15 4:46 ` + staging-android-ion-use-vmap-instead-of-vm_map_ram.patch " Andrew Morton 2020-04-15 4:46 ` + staging-media-ipu3-use-vmap-instead-of-reimplementing-it.patch " Andrew Morton 2020-04-15 4:46 ` + dma-mapping-use-vmap-insted-of-reimplementing-it.patch " Andrew Morton 2020-04-15 4:46 ` + powerpc-add-an-ioremap_phb-helper.patch " Andrew Morton 2020-04-15 4:46 ` + powerpc-remove-__ioremap_at-and-__iounmap_at.patch " Andrew Morton 2020-04-15 4:47 ` + mm-remove-__get_vm_area.patch " Andrew Morton 2020-04-15 4:47 ` + mm-unexport-unmap_kernel_range_noflush.patch " Andrew Morton 2020-04-15 4:47 ` + mm-rename-config_pgtable_mapping-to-config_zsmalloc_pgtable_mapping.patch " Andrew Morton 2020-04-15 4:47 ` + mm-only-allow-page-table-mappings-for-built-in-zsmalloc.patch " Andrew Morton 2020-04-15 4:47 ` + mm-pass-addr-as-unsigned-long-to-vb_free.patch " Andrew Morton 2020-04-15 4:47 ` + mm-remove-vmap_page_range_noflush-and-vunmap_page_range.patch " Andrew Morton 2020-04-15 4:47 ` + mm-rename-vmap_page_range-to-map_kernel_range.patch " Andrew Morton 2020-04-15 4:47 ` + mm-dont-return-the-number-of-pages-from-map_kernel_range_noflush.patch " Andrew Morton 2020-04-15 4:47 ` + mm-remove-map_vm_range.patch " Andrew Morton 2020-04-15 4:47 ` + mm-remove-unmap_vmap_area.patch " Andrew Morton 2020-04-15 4:47 ` + mm-remove-the-prot-argument-from-vm_map_ram.patch " Andrew Morton 2020-04-15 4:47 ` + mm-enforce-that-vmap-cant-map-pages-executable.patch " Andrew Morton 2020-04-15 4:47 ` + gpu-drm-remove-the-powerpc-hack-in-drm_legacy_sg_alloc.patch " Andrew Morton 2020-04-15 4:47 ` + mm-remove-the-pgprot-argument-to-__vmalloc.patch " Andrew Morton 2020-04-15 4:48 ` + mm-remove-the-prot-argument-to-__vmalloc_node.patch " Andrew Morton 2020-04-15 4:48 ` + mm-remove-both-instances-of-__vmalloc_node_flags.patch " Andrew Morton 2020-04-15 4:48 ` + mm-remove-__vmalloc_node_flags_caller.patch " Andrew Morton 2020-04-15 4:48 ` + mm-switch-the-test_vmalloc-module-to-use-__vmalloc_node.patch " Andrew Morton 2020-04-15 4:48 ` + mm-remove-vmalloc_user_node_flags.patch " Andrew Morton 2020-04-15 4:48 ` + arm64-use-__vmalloc_node-in-arch_alloc_vmap_stack.patch " Andrew Morton 2020-04-15 4:48 ` + powerpc-use-__vmalloc_node-in-alloc_vm_stack.patch " Andrew Morton 2020-04-15 4:48 ` + s390-use-__vmalloc_node-in-stack_alloc.patch " Andrew Morton 2020-04-15 17:44 ` + test_firmware-remove-unnecessary-test_fw_mutex-in-test_dev_config_show_xxx.patch " Andrew Morton 2020-04-15 18:12 ` + slub-avoid-redzone-when-choosing-freepointer-location.patch " Andrew Morton 2020-04-15 18:41 ` + mm-shmem-fix-build-without-thp.patch " Andrew Morton
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=20200414020647.aBslq0QvN%akpm@linux-foundation.org \ --to=akpm@linux-foundation.org \ --cc=benh@kernel.crashing.org \ --cc=bhe@redhat.com \ --cc=david@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mhocko@suse.com \ --cc=mm-commits@vger.kernel.org \ --cc=mpe@ellerman.id.au \ --cc=nfont@linux.vnet.ibm.com \ --cc=osalvador@suse.de \ --cc=paulus@samba.org \ --cc=richard.weiyang@gmail.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
mm-commits Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/mm-commits/0 mm-commits/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 mm-commits mm-commits/ https://lore.kernel.org/mm-commits \ mm-commits@vger.kernel.org public-inbox-index mm-commits Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.mm-commits AGPL code for this site: git clone https://public-inbox.org/public-inbox.git