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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71112C369D5 for ; Tue, 29 Apr 2025 02:42:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 530A46B0022; Mon, 28 Apr 2025 22:42:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4DEFD6B0023; Mon, 28 Apr 2025 22:42:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3590E6B0024; Mon, 28 Apr 2025 22:42:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 13EB16B0022 for ; Mon, 28 Apr 2025 22:42:01 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 3E489120321 for ; Tue, 29 Apr 2025 02:42:01 +0000 (UTC) X-FDA: 83385531642.15.FB6AB69 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by imf03.hostedemail.com (Postfix) with ESMTP id 5ED3D2000A for ; Tue, 29 Apr 2025 02:41:59 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ied+qks6; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745894519; a=rsa-sha256; cv=none; b=78ipBpylVDftaD7+Mzwboa9RLzjUuPd+QhZYTZr6l6No92wHMd8JfGHM+9RF5Ono8Q6+4V jLWb4X498hKP1PiN5pn6Gs8ZL1aEaQ5s8asUJEwdH54afZGFmQU+sTlVXtRHaHfsQlBETl dzjG/qERnzMo6+G7U4i+G8zXQAMTSK4= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ied+qks6; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745894519; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=yMlfBv7ehWo9ML1TAQYATjMzwAhnS+aQgMUHEMppoaQ=; b=qaIj0EkvWLdn40E3hDjJgf1qeMu7EDOTNpoWchkkOPk/k/nzOsBfe3qxrZ0RMuGiT3rkt6 bBmnhpVrCLzwvrMFf5/p3hMgbFJtpk9zEDmhahkvz/a+PW010/EXas93lk0HvWrjaizu4v dk+Mbdpi0Ys53rfWKsALMqWurHOD+KE= Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-af9925bbeb7so4037017a12.3 for ; Mon, 28 Apr 2025 19:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745894518; x=1746499318; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yMlfBv7ehWo9ML1TAQYATjMzwAhnS+aQgMUHEMppoaQ=; b=Ied+qks60EmuCaX+82BA0faaMkFCGOi9FvcIQ44YOg4J3meucPJpirr/l6PtabU6dW rMddn0jH3ATbISK+0FFTNVJy3+QOJEl1JNGZ3Z/XhKbf5p/bDRipK3Qz14btdPMBDB0U aDsBL3hmjVQLt3YjsLO0+rHmB26S+JviMrRu+PjwfgvnK55Gr1DZeBJQkgrLrEH+xuUk H1sqe66mvPF3+F6qOVMuAmM373TVPkQyKLTOZfUsuOJOIXFVx1F2b8+IiJf0gNkt0EcG Z/P1MJnWIuOxi/gMh8H/GTJqPQb+HHDPJWHUysExeURDg/9ekYKVBYgJLEePYBWvYfSl oSPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745894518; x=1746499318; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yMlfBv7ehWo9ML1TAQYATjMzwAhnS+aQgMUHEMppoaQ=; b=lG1eskh0pBZcEML0u8eBHCep1S13KZWgWPtc7E7ti/Wjs2aRAC/7GBN7jBe8NzA9r5 ytqGmkfAkuHHCCJVsbeFJG9ZCFC6ov9Zp8Cl/P6mtEEbN5sry2Afu7ZmITbzIt75AsbE kYjCS58ATNU+JzxeiPo9IPBFwn+b4gERKKoxYT64/0qq7hYGF6Gr3aIBWndXkxg6+TLt 1aruT/eSvVVOtSj35SRX5Qt44TYY9pQuliQqguiLBQxyL7LSdkcJZy1GMtazes4SG7Et CDjtn3y4oJ+LVVQ9ieTaSw76yUALkKdjPeSzntvEbjmOD6gB54fnHNFUJ6+r/1pXNb78 a3Qg== X-Forwarded-Encrypted: i=1; AJvYcCU6oUwpACWiYJr0ybI3egVAU+oViF4g4J9LxIWiT52Pn3hIRuYo8Zune9qdz8mq3qqaKsvdD9UGBg==@kvack.org X-Gm-Message-State: AOJu0YxGdkaGwW+8MgE1PTH4ohOlABrBZg79w3NWi+E8K/1n/q2r05y8 P6hznGMuU1FtGrn9QECkklt6K66Bf0ZjySBgzyo8HIidSuFQBqXJ X-Gm-Gg: ASbGncsmnAhifO0XOWn0cn5h6isPPp8N85ikSMsJg0fU/h/Q/bSYn6OfDDQJdO69b3C rGf7r9+NbdtcblMnDSe8N7gzrljK2grf2m8wHVeCS/ghLNmmgtuEHNFhJmxov4jS8jJoWeszoml 8pErf58Tz3GlhhXn5XYaROT8ux8MJ2ucC6ZorwjAzrEgJPJscE2B6qi6NdsQUAdc/ohL8use+mt etVZgN2Cz8Ro9aWoB7hpfe2ZAuT2JLNLGkcf0rWSyxPb9njih8dLagNE3MP+yxHQigugkrbFOsI mxCzL+21dtYmeLDNdBobzmZmkgTf0Lh+peJ8+01Tr2YoUMj1teQsiuqAOUw2VW1mxQ== X-Google-Smtp-Source: AGHT+IFpEzdKNSmwx6Zsi9QNnOtir9k3DmQsdl9h6etgqoHsDxYp4w6fFx196GdsAjA+ex+vxbdYtQ== X-Received: by 2002:a17:90b:2e03:b0:2fa:1a23:c01d with SMTP id 98e67ed59e1d1-30a0132e771mr16459097a91.21.1745894518020; Mon, 28 Apr 2025 19:41:58 -0700 (PDT) Received: from localhost.localdomain ([39.144.106.153]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309ef097cb7sm9893211a91.22.2025.04.28.19.41.54 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 28 Apr 2025 19:41:57 -0700 (PDT) From: Yafang Shao To: akpm@linux-foundation.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org Cc: bpf@vger.kernel.org, linux-mm@kvack.org, Yafang Shao Subject: [RFC PATCH 2/4] mm: pass VMA parameter to hugepage_global_{enabled,always}() Date: Tue, 29 Apr 2025 10:41:37 +0800 Message-Id: <20250429024139.34365-3-laoar.shao@gmail.com> X-Mailer: git-send-email 2.37.1 (Apple Git-137.1) In-Reply-To: <20250429024139.34365-1-laoar.shao@gmail.com> References: <20250429024139.34365-1-laoar.shao@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 5ED3D2000A X-Stat-Signature: r1om4bb5zb6awq5ua4mfgcz5gk19poet X-HE-Tag: 1745894519-743331 X-HE-Meta: U2FsdGVkX19S4TIUixzOQ14w66wRJ8duIICk929ss36LREY4HPnvMLArXYo5zzYirgsiFK+L2io4D5Y43+BXZhovQFRNcKfHi8R5IiOg53zk/JctMeFP1xPmsUkgFr2kum9S5qHWmzaWa5UCQwi311oBebgNoDEsEk5iyePHj7986IfcxPdWji53XNSa++6OPzg9A71b7PGErI0Sph6UgLpM4RZJgeZ6nJEZzf2zvvX4O3w7aTO6ZideYtKrbRD1XLvuYO6HyFKqmrvDZ8J6J/HC5nRePRZbdTZCuPKcw/MzhM4ozgU23W/X21QmcMmNZwQ61wsQbcXI76ckF66FavWOqRZ1NMUh9G8BAx02UTjEXF5M6afIFX/VxV1pyYOvGvK0cVomdv3vj/QX7H8uAeJoXD6LmrBDxw1IGEKpPIWChphqtyZBtbSBSrLq6ZP7eMLpeUHq0rkul+3imhlA6WbBBWeXdNetB5rCe1arngzkLQyGez6Vw/htum0tGklbhCANcktbgou6QKX02KLcypLYEdtqbyf6bEQZzkWzlf2lzf7hxkrbXTQURB66QgRFY9fWGwdn4Br5M3eKWASqKPExbp2WgapubjjHvfW7sVr0vnTQSvKyQULef4LbEEv1N9EcoJpcbtd/fTvqb4Vkdj9PMRGm9rjiW+q0Cxo7Rm2yERVA6xJU7QgP+YVVP2mCm+zZejz8JS4EpQLRRwf3JIWWDRA2NyGRvqsxNbk9rnwPIYk2z9m0g1PHqjcW7e7Jr4K0kG7Mw+8HVclv1R7opPoX62WLYyv7i5Fv7ssk/x7TLuH8w7QhadDq0Dx2s2FGZa3CvrWkekYWxX1/BZ0I7Xm+Hw90xq61GDtRwdCRZWOyKPb63uhsmCUUSzUp5LFMjgK8HfJqp0wQLS24RngWNyOwxBtlnW2BjMDKWt1VOT49O4wCYk2tp1QBkxDhu85V/2s36NkChuaBPD/oIk7 +YHcUy8g eF+eP4GoHzpTeOgpWrtohb3T+Ma3ohmCQWZhBXcBaKjRWsPTak0LfUV5GD36ez5JPPIHg6638hHgug1PbkImtWfKi/nUrHaXAxWhVO3NcLPTVnqQHRDoIT6U/0JexHogJiM23x5DLbqsQOmXWLPfNw1KRK6+tKjH0hH/lm3psbCE9whmkifRt9LwJsbiy++ZFdy36sv2IZ5pz4+8UXpJEmskPk+Bhi6XUcczmY8AxIRQ4XCnKNvLk4yw9/skFDUAx+CSFBKhhByuXRhhU2poTWNa3MQj/wBv8xSqW6F1PcTsx3iZ137q8Af1XwqUyJjRhPS3wf5fWBb/asBboF7jgThr1JBTdW63JNwpxlKE92+bB9FxsmXjce/ROq7N8Lf1eiaz6BWfuKeeV+dmDlEO4oV2K79F7DiTsaBqRCNIltyI+p42StUgt15GJ/KK3IwjAEbgvshusEBzAMTSJXwisdzDnALvxI0VU65NBn5T+eXDt93ANYC6GMuR4ZxpaZsSFBtGqNLA42jFJs9U= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: We will use the new @vma parameter to determine whether THP can be used. Signed-off-by: Yafang Shao --- mm/huge_memory.c | 8 ++++---- mm/internal.h | 8 ++++++-- mm/khugepaged.c | 18 +++++++++--------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 39afa14af2f2..7a4a968c7874 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -176,8 +176,8 @@ static unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma, * were already handled in thp_vma_allowable_orders(). */ if (enforce_sysfs && - (!hugepage_global_enabled() || (!(vm_flags & VM_HUGEPAGE) && - !hugepage_global_always()))) + (!hugepage_global_enabled(vma) || (!(vm_flags & VM_HUGEPAGE) && + !hugepage_global_always(vma)))) return 0; /* @@ -234,8 +234,8 @@ unsigned long thp_vma_allowable_orders(struct vm_area_struct *vma, if (vm_flags & VM_HUGEPAGE) mask |= READ_ONCE(huge_anon_orders_madvise); - if (hugepage_global_always() || - ((vm_flags & VM_HUGEPAGE) && hugepage_global_enabled())) + if (hugepage_global_always(vma) || + ((vm_flags & VM_HUGEPAGE) && hugepage_global_enabled(vma))) mask |= READ_ONCE(huge_anon_orders_inherit); orders &= mask; diff --git a/mm/internal.h b/mm/internal.h index 462d85c2ba7b..aa698a11dd68 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1626,14 +1626,18 @@ static inline bool reclaim_pt_is_enabled(unsigned long start, unsigned long end, #endif /* CONFIG_PT_RECLAIM */ #ifdef CONFIG_TRANSPARENT_HUGEPAGE -static inline bool hugepage_global_enabled(void) +/* + * Checks whether a given @vma can use THP. If @vma is NULL, the check is + * performed globally by khugepaged during a system-wide scan. + */ +static inline bool hugepage_global_enabled(struct vm_area_struct *vma) { return transparent_hugepage_flags & ((1<flags); } -static bool hugepage_pmd_enabled(void) +static bool hugepage_pmd_enabled(struct vm_area_struct *vma) { /* * We cover the anon, shmem and the file-backed case here; file-backed @@ -423,14 +423,14 @@ static bool hugepage_pmd_enabled(void) * except when the global shmem_huge is set to SHMEM_HUGE_DENY. */ if (IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS) && - hugepage_global_enabled()) + hugepage_global_enabled(vma)) return true; if (test_bit(PMD_ORDER, &huge_anon_orders_always)) return true; if (test_bit(PMD_ORDER, &huge_anon_orders_madvise)) return true; if (test_bit(PMD_ORDER, &huge_anon_orders_inherit) && - hugepage_global_enabled()) + hugepage_global_enabled(vma)) return true; if (IS_ENABLED(CONFIG_SHMEM) && shmem_hpage_pmd_enabled()) return true; @@ -473,7 +473,7 @@ void khugepaged_enter_vma(struct vm_area_struct *vma, unsigned long vm_flags) { if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) && - hugepage_pmd_enabled()) { + hugepage_pmd_enabled(vma)) { if (thp_vma_allowable_order(vma, vm_flags, TVA_ENFORCE_SYSFS, PMD_ORDER)) __khugepaged_enter(vma->vm_mm); @@ -2516,7 +2516,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, static int khugepaged_has_work(void) { - return !list_empty(&khugepaged_scan.mm_head) && hugepage_pmd_enabled(); + return !list_empty(&khugepaged_scan.mm_head) && hugepage_pmd_enabled(NULL); } static int khugepaged_wait_event(void) @@ -2589,7 +2589,7 @@ static void khugepaged_wait_work(void) return; } - if (hugepage_pmd_enabled()) + if (hugepage_pmd_enabled(NULL)) wait_event_freezable(khugepaged_wait, khugepaged_wait_event()); } @@ -2620,7 +2620,7 @@ static void set_recommended_min_free_kbytes(void) int nr_zones = 0; unsigned long recommended_min; - if (!hugepage_pmd_enabled()) { + if (!hugepage_pmd_enabled(NULL)) { calculate_min_free_kbytes(); goto update_wmarks; } @@ -2670,7 +2670,7 @@ int start_stop_khugepaged(void) int err = 0; mutex_lock(&khugepaged_mutex); - if (hugepage_pmd_enabled()) { + if (hugepage_pmd_enabled(NULL)) { if (!khugepaged_thread) khugepaged_thread = kthread_run(khugepaged, NULL, "khugepaged"); @@ -2696,7 +2696,7 @@ int start_stop_khugepaged(void) void khugepaged_min_free_kbytes_update(void) { mutex_lock(&khugepaged_mutex); - if (hugepage_pmd_enabled() && khugepaged_thread) + if (hugepage_pmd_enabled(NULL) && khugepaged_thread) set_recommended_min_free_kbytes(); mutex_unlock(&khugepaged_mutex); } -- 2.43.5