From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from SN4PR2101CU001.outbound.protection.outlook.com (mail-southcentralusazon11012012.outbound.protection.outlook.com [40.93.195.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14A5F49C4D5 for ; Tue, 1 Sep 2026 19:01:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.93.195.12 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788289312; cv=fail; b=Z89E9E8j772V5ATY5ZZPDO3tC/RBinMhMWMbd94x6W6h6svK2S1t856mdup45VXq2t4ZA10wmQxXN9Yg6ICgtkkxAUmjDT1uDc0DCa+RcXC5P3nipWtvs6K+ZUJq4S5u2KbjdERtG2PSiIbJhYemGBCFe2yHc8G1viZQc5zmdJc= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788289312; c=relaxed/simple; bh=GjI6WyQ/fjz1f3AaD+laD+ar2doHObkbyidK3T3IZf0=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=Sb9VqtBSTPHJ8CPWiUbQePP5Pnkkre/Kw4fZMelKIFJXB3yRLCY6UbyMKltcgFq3/hYOmPBCM5q3zGkZ4PzQdwedoZPD7A3PqWsBs+b286EOzDjstrTUy4bVxBob9Bh6PYRgZ7j3ORlVWjMPK7Tsf0aZJU85ZwyaR4NR7+4xlKI= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=lIU/X200; arc=fail smtp.client-ip=40.93.195.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="lIU/X200" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Wg8wIMRm+S+T0KqazvsS+iGPuNzuNDGrBeudpBYqIDjLPSA+naHs9MAjkh3zX/OaFgmTz/VUWQ5dgWOS5n27s+BCd+KvJSUY2SfTx2dRkNw4q8GlYUncqzWI5qwUBUTXS+pNfw0O0DOTMDjQC88iecyfQp+DPi+q4rU52D/pXFweYnh4SoOVv62GMOLvJBvgNuRM3YdtXGwNmqxUDIvm8d3SVPpiMhGXjaZxbW+LKGoSOxRIaK07Vbsbu+kcAmExjb07apoIVlVYMT/2lDuYOS3LMaSZ8oeIBMRk0wrkEyyWHxqpU52HQvUdDtWMR3x6EQ7cuDMGnSKiA+OPS44ICw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iCrJwHuUiPOjnRdh3ZQ5lo0p/AYHI31si3IQQhMCkkE=; b=dIsbcdRh9AbVHmpWTxSA5bvmuAoxZnj4V5Z+NtUxFvXIsjlKNRlzL4sYA2GYwExrMuNwb3cT9qTi343QoxMvjCxthtXZ6ExNv/72MkY1aMLDhplSWozZko6hn78DFGYtAdFvtQs9coY123M4yjUwWdbietbFGDgciBQXnTsGylDHKECZT78ewojAJISRfVQAJ9Pl7h7EaCDQBW0o4UsgaOCt8nhnFTQdsuJAxoZTnz97e5tPsfZpu3Q4xCJlbpgTJR7DWP8YIaKTa4d3j+Qg6HrnckHRt99+vJdZjWaU99MXuugyNwraAJbstC/WJRuaq9YBOLY4eKK3daYkjMjgsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=linux-foundation.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iCrJwHuUiPOjnRdh3ZQ5lo0p/AYHI31si3IQQhMCkkE=; b=lIU/X2004MhyfI6lg1AbMBxbUPK4jqDEjSfksKfuPMZ4NmMGZQfbSIU7/yi5DiGcqsUPSx9CXrr3iLHRGGYB2rVokfeRnyZXoX9ANrjufxNUaeXTnSMP74x+3kbE8d0W5pgTV3VszHJ29Gu5pRfh/85pa0KKuIfC3apMd3xRbh0b/dX9q8aCrya7QboYlcaszXLIsSVUXzTEhMglGXPkAPAnIPcEOaF1HkMwtG5QrWYb5ANRVxYgRTrQAa8+spHnMwOgOEPCgfJi9Cg3t1PgfUXLLIzrm0OlkpsMtJV7/DJdEUoV3a20sV2MmP6NIN3g+JohzisWJ+tl4xKrbJQMIw== Received: from BN0PR04CA0134.namprd04.prod.outlook.com (2603:10b6:408:ed::19) by CH1PPF68E8581EB.namprd12.prod.outlook.com (2603:10b6:61f:fc00::611) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 19:01:30 +0000 Received: from BL02EPF00021F6D.namprd02.prod.outlook.com (2603:10b6:408:ed:cafe::5b) by BN0PR04CA0134.outlook.office365.com (2603:10b6:408:ed::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 19:01:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BL02EPF00021F6D.mail.protection.outlook.com (10.167.249.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:01:27 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 1 Sep 2026 12:00:57 -0700 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 1 Sep 2026 12:00:57 -0700 Received: from vdi.nvidia.com (10.127.8.14) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server id 15.2.2562.46 via Frontend Transport; Tue, 1 Sep 2026 12:00:50 -0700 From: Nimrod Oren To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes CC: Zi Yan , Baolin Wang , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Usama Arif , Kiryl Shutsemau , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Brendan Jackman , Johannes Weiner , "Hugh Dickins" , Nirmoy Das , Dragos Tatulea , , , Nimrod Oren Subject: [PATCH v3] mm: remove min_free_kbytes adjustment for THP Date: Tue, 1 Sep 2026 22:01:23 +0300 Message-ID: <20260901190123.3511535-1-noren@nvidia.com> X-Mailer: git-send-email 2.45.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF00021F6D:EE_|CH1PPF68E8581EB:EE_ X-MS-Office365-Filtering-Correlation-Id: de47a461-3fcd-4e6c-e537-08df085b6d3f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700016|1800799024|23010399003|7416014|376014|18002099003|13003099007|56012099006|10067099003|11063799006; X-Microsoft-Antispam-Message-Info: 8UC/i94n0HwlTl+8XRs9zbF2jyxkv4hCNAg6cjJ7Pj6+fmRQ1nrlM1ae60r9eBOgAZHwS2HYkhQgAlg2EUFxttcU18a1v8N4nIb7mvCL9KSmLtIsjN8aAZ1whhMNUaLb3MZrydHdJ0CFsqaE0DVgxXfMAAKmJVhVsn4/RsVbHjE2tlKIGvZEA2Y1Jj1JK94bfRzCuFxe3xh0W0Pi0CYRiGpxW/ZLlWzLvXrvG4zPKTH9naBBUlzsmhkE000+hPnclqzQdLdoHCVuvzQRlPflQi9rSygJS0dm7qZiDnv7A3rRoBFt9YkPkLByibwltlqWs9moNnxB3WyQHNKic4ihNV+M+ReLFH9NdvgxPm203dMnPE54zWc3z0fDJK2+EmpR2FumzyLe9hZmETrXMkpkv8dv4yPC/2nWtl0AFBMDMfYlGbVK9MrOvtXVWDqgs/pCCJGVS6D57iliV/ZCQGFv04OCdTBoqUzsER8rKZhte/iYMX6nh6g+bKkEHbXw/gD1GW7pQ1ef1nKoJ6h7Y6ETUIiF8Vmm6jq0rBUtDxuO3fE5wXloEbjXuxYSvK8vmw2hZYehIcpRyfQwcKn0YW1TU6VVyU/lSE5xZBytlGxPOcoiAOYBbigNweBG1dZ8TbOaiRMNQRaMyEfoD13POjnkpTjkvt1YM7fm+Zrr5C4cSW4OibYr97NYrTccpZSMOZSA/o2kbKH5K4Z72e2CoMe0AA== X-Forefront-Antispam-Report: CIP:216.228.117.161;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge2.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(1800799024)(23010399003)(7416014)(376014)(18002099003)(13003099007)(56012099006)(10067099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sAdVDoGEY7irDp7JIxkxWanR9ha1sFi9T/B1R1B8b5MDmXc5aBvvpjaA9ACQFVVGp1YGrHcCDMZbOC/MxHRlVr5KqDj44C6e9Ssb87SneUU6T3QNuLj5lJfwZFQqE/7EDr9gyS1qS/7GxUsjWuku24tbg55ZXteUZ4jcBD2vw7+5QGX7HTb0TScnevW4W0GwS7sQPzCZ5TF1J9AyQKG3JkKOqVkmQMmRt5dXUXxK2J9zOtAXmFj6p/pP+MIj4BsX0C/yqeJL48qvDt9ebh8PpZKMOlS+9pkFGG6eYALvrTaBkUAUaciGBgfoQj9IReiP+o1ogVYtAyk/CGvfQrcb4fpw2pi9aAAg76gVLMuEqCyTEeZAlcIVaEfm3WuXTT6oJTWU2v2d8Rqht26AhaZhPvTjy8QnVuLW2ZPGxzo2Oef3oEmuSpqmhIASeutHKdMm X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:01:27.5936 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: de47a461-3fcd-4e6c-e537-08df085b6d3f X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.161];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF00021F6D.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF68E8581EB When THP is enabled, set_recommended_min_free_kbytes() may raise min_free_kbytes using a heuristic that scales with pageblock_nr_pages. Commit f000565adb77 ("thp: set recommended min free kbytes") added this heuristic to help keep pageblocks free and reduce fragmentation for THP allocations. The recommendation scales poorly with larger base page sizes. With the default arm64 pageblock sizes, the contribution per eligible zone before applying the existing cap of 5% of low memory is: 4 KiB pages: 2 MiB pageblock, 22 MiB per zone 16 KiB pages: 32 MiB pageblock, 352 MiB per zone 64 KiB pages: 512 MiB pageblock, 5.5 GiB per zone Even with that cap, min_free_kbytes can reach excessive levels. The automatic min_free_kbytes increase predates proactive compaction and many subsequent changes to compaction. Given those changes, increasing min_free_kbytes for THP by default is no longer clearly justified. Remove set_recommended_min_free_kbytes() and all associated recalculation paths. With this policy gone, min_free_kbytes is controlled only by the page allocator's default calculation and the vm.min_free_kbytes sysctl. Users who want additional headroom may set a higher value via that sysctl. Link: https://lore.kernel.org/r/20260831075635.2244437-1-noren@nvidia.com/ Suggested-by: Michal Hocko Signed-off-by: Nimrod Oren --- v3: * Replace the 1 GiB cap with removal of the THP-driven min_free_kbytes increase as suggested by Michal. * Remove all associated recalculation paths. * Make min_free_kbytes, user_min_free_kbytes, calculate_min_free_kbytes(), and setup_per_zone_wmarks() static. * Drop the now-unused declarations and khugepaged's page_alloc.h include. * Drop the obsolete v2 documentation addition. v2: * Use a named constant for the cap. * Drop explicit linux/sizes.h include. * Update min_free_kbytes documentation. https://lore.kernel.org/r/20260831075635.2244437-1-noren@nvidia.com/ v1: * Cap the final recommendation at 1 GiB as suggested by Lorenzo. https://lore.kernel.org/r/20260728202014.2517142-1-noren@nvidia.com/ RFC v1: https://lore.kernel.org/r/20260716173504.760369-1-noren@nvidia.com/ --- include/linux/khugepaged.h | 5 ---- mm/huge_memory.c | 14 --------- mm/internal.h | 8 ----- mm/khugepaged.c | 60 -------------------------------------- mm/page_alloc.c | 11 +++---- mm/page_alloc.h | 2 -- mm/shmem.c | 7 ----- 7 files changed, 4 insertions(+), 103 deletions(-) diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h index d7a9053ff4fe..e2a2ccb6cd05 100644 --- a/include/linux/khugepaged.h +++ b/include/linux/khugepaged.h @@ -15,7 +15,6 @@ extern void __khugepaged_enter(struct mm_struct *mm); extern void __khugepaged_exit(struct mm_struct *mm); extern void khugepaged_enter_vma(struct vm_area_struct *vma, vm_flags_t vm_flags); -extern void khugepaged_min_free_kbytes_update(void); extern bool current_is_khugepaged(void); void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr, bool install_pmd); @@ -47,10 +46,6 @@ static inline void collapse_pte_mapped_thp(struct mm_struct *mm, { } -static inline void khugepaged_min_free_kbytes_update(void) -{ -} - static inline bool current_is_khugepaged(void) { return false; diff --git a/mm/huge_memory.c b/mm/huge_memory.c index c5d11147b69a..b1f87e005e03 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -499,13 +499,6 @@ static ssize_t enabled_store(struct kobject *kobj, if (err) return err; - } else { - /* - * Recalculate watermarks even when the mode didn't - * change, as the previous code always called - * start_stop_khugepaged() which does this internally. - */ - set_recommended_min_free_kbytes(); } return count; } @@ -735,13 +728,6 @@ static ssize_t anon_enabled_store(struct kobject *kobj, if (err) return err; - } else { - /* - * Recalculate watermarks even when the mode didn't - * change, as the previous code always called - * start_stop_khugepaged() which does this internally. - */ - set_recommended_min_free_kbytes(); } return count; diff --git a/mm/internal.h b/mm/internal.h index e16f1250b25c..6890d7836c68 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -689,11 +689,6 @@ int user_proactive_reclaim(char *buf, */ pmd_t *mm_find_pmd(struct mm_struct *mm, unsigned long address); -/* - * in mm/khugepaged.c - */ -void set_recommended_min_free_kbytes(void); - /* * in mm/page_alloc.c */ @@ -701,11 +696,8 @@ void set_recommended_min_free_kbytes(void); extern char * const zone_names[MAX_NR_ZONES]; -extern int min_free_kbytes; extern int defrag_mode; -void setup_per_zone_wmarks(void); -void calculate_min_free_kbytes(void); int __meminit init_per_zone_wmark_min(void); extern int __isolate_free_page(struct page *page, unsigned int order); diff --git a/mm/khugepaged.c b/mm/khugepaged.c index f49a6710933b..c36b7d0b91d7 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -27,7 +27,6 @@ #include #include "internal.h" -#include "page_alloc.h" #include "mm_slot.h" enum scan_result { @@ -3086,57 +3085,6 @@ static int khugepaged(void *none) return 0; } -void set_recommended_min_free_kbytes(void) -{ - struct zone *zone; - int nr_zones = 0; - unsigned long recommended_min; - - if (!hugepage_enabled()) { - calculate_min_free_kbytes(); - goto update_wmarks; - } - - for_each_populated_zone(zone) { - /* - * We don't need to worry about fragmentation of - * ZONE_MOVABLE since it only has movable pages. - */ - if (zone_idx(zone) > gfp_zone(GFP_USER)) - continue; - - nr_zones++; - } - - /* Ensure 2 pageblocks are free to assist fragmentation avoidance */ - recommended_min = pageblock_nr_pages * nr_zones * 2; - - /* - * Make sure that on average at least two pageblocks are almost free - * of another type, one for a migratetype to fall back to and a - * second to avoid subsequent fallbacks of other types There are 3 - * MIGRATE_TYPES we care about. - */ - recommended_min += pageblock_nr_pages * nr_zones * - MIGRATE_PCPTYPES * MIGRATE_PCPTYPES; - - /* don't ever allow to reserve more than 5% of the lowmem */ - recommended_min = min(recommended_min, - (unsigned long) nr_free_buffer_pages() / 20); - recommended_min <<= (PAGE_SHIFT-10); - - if (recommended_min > min_free_kbytes) { - if (user_min_free_kbytes >= 0) - pr_info_ratelimited("raising min_free_kbytes from %d to %lu to help transparent hugepage allocations\n", - min_free_kbytes, recommended_min); - - min_free_kbytes = recommended_min; - } - -update_wmarks: - setup_per_zone_wmarks(); -} - int start_stop_khugepaged(void) { guard(mutex)(&khugepaged_mutex); @@ -3160,17 +3108,9 @@ int start_stop_khugepaged(void) kthread_stop(khugepaged_thread); khugepaged_thread = NULL; } - set_recommended_min_free_kbytes(); return 0; } -void khugepaged_min_free_kbytes_update(void) -{ - guard(mutex)(&khugepaged_mutex); - if (hugepage_enabled() && khugepaged_thread) - set_recommended_min_free_kbytes(); -} - bool current_is_khugepaged(void) { return kthread_func(current) == khugepaged; diff --git a/mm/page_alloc.c b/mm/page_alloc.c index c4dc61ec663e..5280784c91a8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include @@ -272,8 +271,8 @@ const char * const migratetype_names[MIGRATE_TYPES] = { #endif }; -int min_free_kbytes = 1024; -int user_min_free_kbytes = -1; +static int min_free_kbytes = 1024; +static int user_min_free_kbytes = -1; static int watermark_boost_factor __read_mostly = 15000; static int watermark_scale_factor = 10; int defrag_mode; @@ -6663,7 +6662,7 @@ static void __setup_per_zone_wmarks(void) * Ensures that the watermark[min,low,high] values for each zone are set * correctly with respect to min_free_kbytes. */ -void setup_per_zone_wmarks(void) +static void setup_per_zone_wmarks(void) { struct zone *zone; static DEFINE_SPINLOCK(lock); @@ -6704,7 +6703,7 @@ void setup_per_zone_wmarks(void) * 8192MB: 11584k * 16384MB: 16384k */ -void calculate_min_free_kbytes(void) +static void calculate_min_free_kbytes(void) { unsigned long lowmem_kbytes; int new_min_free_kbytes; @@ -6732,8 +6731,6 @@ int __meminit init_per_zone_wmark_min(void) setup_min_slab_ratio(); #endif - khugepaged_min_free_kbytes_update(); - return 0; } postcore_initcall(init_per_zone_wmark_min) diff --git a/mm/page_alloc.h b/mm/page_alloc.h index b9259deddb59..86162e6cfa8c 100644 --- a/mm/page_alloc.h +++ b/mm/page_alloc.h @@ -227,8 +227,6 @@ void post_alloc_hook(struct page *page, unsigned int order, gfp_t gfp_flags, unsigned int alloc_flags); extern bool free_pages_prepare(struct page *page, unsigned int order); -extern int user_min_free_kbytes; - struct page *__alloc_frozen_pages_noprof(gfp_t gfp, unsigned int order, int nid, nodemask_t *nodemask, unsigned int alloc_flags); #define __alloc_frozen_pages(...) \ diff --git a/mm/shmem.c b/mm/shmem.c index 255d69ebceba..92dc770b10e6 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -5782,13 +5782,6 @@ static ssize_t thpsize_shmem_enabled_store(struct kobject *kobj, int err = start_stop_khugepaged(); if (err) return err; - } else { - /* - * Recalculate watermarks even when the mode hasn't changed - * to preserve the legacy behavior, as this is always called - * inside start_stop_khugepaged(). - */ - set_recommended_min_free_kbytes(); } return count; -- 2.45.0