The patch titled Subject: mm: kvmalloc support __GFP_RETRY_MAYFAIL for all sizes has been added to the -mm tree. Its filename is mm-kvmalloc-support-__gfp_retry_mayfail-for-all-sizes.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-kvmalloc-support-__gfp_retry_mayfail-for-all-sizes.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-kvmalloc-support-__gfp_retry_mayfail-for-all-sizes.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/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Michal Hocko <mhocko@xxxxxxxx> Subject: mm: kvmalloc support __GFP_RETRY_MAYFAIL for all sizes Now that __GFP_RETRY_MAYFAIL has a reasonable semantic regardless of the request size we can drop the hackish implementation for !costly orders. __GFP_RETRY_MAYFAIL retries as long as the reclaim makes a forward progress and backs of when we are out of memory for the requested size. Therefore we do not need to enforce__GFP_NORETRY for !costly orders just to silent the oom killer anymore. Link: http://lkml.kernel.org/r/20170623085345.11304-5-mhocko@xxxxxxxxxx Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> Cc: Alex Belits <alex.belits@xxxxxxxxxx> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx> Cc: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Cc: David Daney <david.daney@xxxxxxxxxx> Cc: Johannes Weiner <hannes@xxxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Cc: NeilBrown <neilb@xxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/util.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff -puN mm/util.c~mm-kvmalloc-support-__gfp_retry_mayfail-for-all-sizes mm/util.c --- a/mm/util.c~mm-kvmalloc-support-__gfp_retry_mayfail-for-all-sizes +++ a/mm/util.c @@ -339,9 +339,9 @@ EXPORT_SYMBOL(vm_mmap); * Uses kmalloc to get the memory but if the allocation fails then falls back * to the vmalloc allocator. Use kvfree for freeing the memory. * - * Reclaim modifiers - __GFP_NORETRY and __GFP_NOFAIL are not supported. __GFP_RETRY_MAYFAIL - * is supported only for large (>32kB) allocations, and it should be used only if - * kmalloc is preferable to the vmalloc fallback, due to visible performance drawbacks. + * Reclaim modifiers - __GFP_NORETRY and __GFP_NOFAIL are not supported. + * __GFP_RETRY_MAYFAIL is supported, and it should be used only if kmalloc is + * preferable to the vmalloc fallback, due to visible performance drawbacks. * * Any use of gfp flags outside of GFP_KERNEL should be consulted with mm people. */ @@ -366,13 +366,7 @@ void *kvmalloc_node(size_t size, gfp_t f if (size > PAGE_SIZE) { kmalloc_flags |= __GFP_NOWARN; - /* - * We have to override __GFP_RETRY_MAYFAIL by __GFP_NORETRY for !costly - * requests because there is no other way to tell the allocator - * that we want to fail rather than retry endlessly. - */ - if (!(kmalloc_flags & __GFP_RETRY_MAYFAIL) || - (size <= PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) + if (!(kmalloc_flags & __GFP_RETRY_MAYFAIL)) kmalloc_flags |= __GFP_NORETRY; } _ Patches currently in -mm which might be from mhocko@xxxxxxxx are fs-file-replace-alloc_fdmem-with-kvmalloc-alternative.patch mm-remove-return-value-from-init_currently_empty_zone.patch mm-memory_hotplug-use-node-instead-of-zone-in-can_online_high_movable.patch mm-drop-page_initialized-check-from-get_nid_for_pfn.patch mm-memory_hotplug-get-rid-of-is_zone_device_section.patch mm-memory_hotplug-split-up-register_one_node.patch mm-memory_hotplug-consider-offline-memblocks-removable.patch mm-consider-zone-which-is-not-fully-populated-to-have-holes.patch mm-consider-zone-which-is-not-fully-populated-to-have-holes-fix.patch mm-compaction-skip-over-holes-in-__reset_isolation_suitable.patch mm-__first_valid_page-skip-over-offline-pages.patch mm-vmstat-skip-reporting-offline-pages-in-pagetypeinfo.patch mm-vmstat-skip-reporting-offline-pages-in-pagetypeinfo-fix.patch mm-memory_hotplug-do-not-associate-hotadded-memory-to-zones-until-online.patch mm-memory_hotplug-fix-mmop_online_keep-behavior.patch mm-memory_hotplug-do-not-assume-zone_normal-is-default-kernel-zone.patch mm-memory_hotplug-replace-for_device-by-want_memblock-in-arch_add_memory.patch mm-memory_hotplug-fix-the-section-mismatch-warning.patch mm-memory_hotplug-remove-unused-cruft-after-memory-hotplug-rework.patch mm-adaptive-hash-table-scaling-fix.patch mm-memory_hotplug-drop-artificial-restriction-on-online-offline.patch mm-memory_hotplug-drop-config_movable_node.patch mm-memory_hotplug-move-movable_node-to-the-hotplug-proper.patch mm-make-pr_set_thp_disable-immediately-active.patch mm-memory_hotplug-simplify-empty-node-mask-handling-in-new_node_page.patch hugetlb-memory_hotplug-prefer-to-use-reserved-pages-for-migration.patch mm-unify-new_node_page-and-alloc_migrate_target.patch mm-memcg-fix-potential-undefined-behavior-in-mem_cgroup_event_ratelimit.patch mm-hugetlb-unclutter-hugetlb-allocation-layers.patch hugetlb-add-support-for-preferred-node-to-alloc_huge_page_nodemask.patch mm-hugetlb-soft_offline-use-new_page_nodemask-for-soft-offline-migration.patch lib-rhashtablec-use-kvzalloc-in-bucket_table_alloc-when-possible.patch netfilter-use-kvmalloc-xt_alloc_table_info.patch mips-do-not-use-__gfp_repeat-for-order-0-request.patch mm-tree-wide-replace-__gfp_repeat-by-__gfp_retry_mayfail-with-more-useful-semantic.patch xfs-map-km_mayfail-to-__gfp_retry_mayfail.patch mm-kvmalloc-support-__gfp_retry_mayfail-for-all-sizes.patch drm-i915-use-__gfp_retry_mayfail.patch mm-migration-do-not-trigger-oom-killer-when-migrating-memory.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html