Subject: [to-be-updated] page_alloc-skip-cpuset-enforcement-for-lower-zone-allocations-v4.patch removed from -mm tree To: mtosatti@xxxxxxxxxx,cl@xxxxxxxxx,laijs@xxxxxxxxxxxxxx,lizefan@xxxxxxxxxx,mgorman@xxxxxxx,rientjes@xxxxxxxxxx,tj@xxxxxxxxxx,mm-commits@xxxxxxxxxxxxxxx From: akpm@xxxxxxxxxxxxxxxxxxxx Date: Thu, 29 May 2014 16:12:33 -0700 The patch titled Subject: mm/page_alloc.c: skip cpuset enforcement for lower zone allocations has been removed from the -mm tree. Its filename was page_alloc-skip-cpuset-enforcement-for-lower-zone-allocations-v4.patch This patch was dropped because an updated version will be merged ------------------------------------------------------ From: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Subject: mm/page_alloc.c: skip cpuset enforcement for lower zone allocations Zone specific allocations, such as GFP_DMA32, should not be restricted to cpusets allowed node list: the zones which such allocations demand might be contained in particular nodes outside the cpuset node list. Necessary for the following usecase: - driver which requires zone specific memory (such as KVM, which requires root pagetable at paddr < 4GB). - user wants to limit allocations of application to nodeX, and nodeX has no memory < 4GB. [akpm@xxxxxxxxxxxxxxxxxxxx: add comments] Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Cc: Li Zefan <lizefan@xxxxxxxxxx> Cc: Lai Jiangshan <laijs@xxxxxxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Cc: Tejun Heo <tj@xxxxxxxxxx> Cc: Christoph Lameter <cl@xxxxxxxxx> Cc: David Rientjes <rientjes@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/cpuset.c | 10 ++++++++++ mm/page_alloc.c | 10 ++++++++++ 2 files changed, 20 insertions(+) diff -puN kernel/cpuset.c~page_alloc-skip-cpuset-enforcement-for-lower-zone-allocations-v4 kernel/cpuset.c --- a/kernel/cpuset.c~page_alloc-skip-cpuset-enforcement-for-lower-zone-allocations-v4 +++ a/kernel/cpuset.c @@ -2368,6 +2368,7 @@ static struct cpuset *nearest_hardwall_a * variable 'wait' is not set, and the bit ALLOC_CPUSET is not set * in alloc_flags. That logic and the checks below have the combined * affect that: + * gfp_zone(mask) < policy_zone - any node ok * in_interrupt - any node ok (current task context irrelevant) * GFP_ATOMIC - any node ok * TIF_MEMDIE - any node ok @@ -2386,6 +2387,15 @@ int __cpuset_node_allowed_softwall(int n if (in_interrupt() || (gfp_mask & __GFP_THISNODE)) return 1; +#ifdef CONFIG_NUMA + /* + * Zone specific allocations such as GFP_DMA32 should not be restricted + * to cpusets allowed node list: the zones which such allocations + * demand be contained in particular nodes outside the cpuset node list + */ + if (gfp_zone(gfp_mask) < policy_zone) + return 1; +#endif might_sleep_if(!(gfp_mask & __GFP_HARDWALL)); if (node_isset(node, current->mems_allowed)) return 1; diff -puN mm/page_alloc.c~page_alloc-skip-cpuset-enforcement-for-lower-zone-allocations-v4 mm/page_alloc.c --- a/mm/page_alloc.c~page_alloc-skip-cpuset-enforcement-for-lower-zone-allocations-v4 +++ a/mm/page_alloc.c @@ -2741,6 +2741,16 @@ __alloc_pages_nodemask(gfp_t gfp_mask, u retry_cpuset: cpuset_mems_cookie = read_mems_allowed_begin(); +#ifdef CONFIG_NUMA + /* + * Zone specific allocations such as GFP_DMA32 should not be restricted + * to cpusets allowed node list: the zones which such allocations + * demand be contained in particular nodes outside the cpuset node list + */ + if (gfp_zone(gfp_mask) < policy_zone) + nodemask = &node_states[N_ONLINE]; +#endif + /* The preferred zone is used for statistics later */ preferred_zoneref = first_zones_zonelist(zonelist, high_zoneidx, nodemask ? : &cpuset_current_mems_allowed, _ Patches currently in -mm which might be from mtosatti@xxxxxxxxxx are origin.patch hugetlb-prep_compound_gigantic_page-drop-__init-marker.patch hugetlb-add-hstate_is_gigantic.patch hugetlb-update_and_free_page-dont-clear-pg_reserved-bit.patch hugetlb-move-helpers-up-in-the-file.patch hugetlb-add-support-for-gigantic-page-allocation-at-runtime.patch linux-next.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