AI Trajectory


Trajectory: (Expand/Collapse All)
Seq Timestamp Type Name Duration
0/0 2026/07/05 18:08 flow patch-triage
0m Args:
null

Results:
{
  "EnableConfigs": [
    "HUGETLBFS",
    "CMA"
  ],
  "FocusSymbols": [
    "alloc_fresh_hugetlb_folio",
    "hugetlb_cma_alloc_frozen_folio",
    "alloc_surplus_hugetlb_folio",
    "alloc_migrate_hugetlb_folio",
    "alloc_and_dissolve_hugetlb_folio",
    "alloc_gigantic_frozen_folio"
  ],
  "Reasoning": "The patch modifies the node mask handling in hugetlb and hugetlb_cma allocation paths. It restricts allocations to `cpuset_current_mems_allowed` when `nmask` is NULL and adds a `node_isset` check in `hugetlb_cma_alloc_frozen_folio`. This is a functional change to core memory management logic that should be fuzzed.",
  "WorthFuzzing": true
}

1/1 2026/07/05 18:08 action read-patch-diff
0m Args:
null

Results:
{
  "PatchDiff": "commit 9f7c49f829e907aaee20e070bb95c363914c2565\nAuthor: syz-cluster \u003ctriage@syzkaller.com\u003e\nDate:   Sun Jul 5 18:08:51 2026 +0000\n\n    syz-cluster: applied patch under review\n\ndiff --git a/mm/hugetlb.c b/mm/hugetlb.c\nindex 571212b80835ec..ee67ea29c00351 100644\n--- a/mm/hugetlb.c\n+++ b/mm/hugetlb.c\n@@ -1864,6 +1864,18 @@ static struct folio *alloc_fresh_hugetlb_folio(struct hstate *h,\n \t\tgfp_t gfp_mask, int nid, nodemask_t *nmask)\n {\n \tstruct folio *folio;\n+\tnodemask_t local_node_mask;\n+\n+\tif (!nmask) {\n+\t\tunsigned int cpuset_mems_cookie;\n+\n+\t\tdo {\n+\t\t\tcpuset_mems_cookie = read_mems_allowed_begin();\n+\t\t\tlocal_node_mask = cpuset_current_mems_allowed;\n+\t\t} while (read_mems_allowed_retry(cpuset_mems_cookie));\n+\n+\t\tnmask = \u0026local_node_mask;\n+\t}\n \n \tfolio = only_alloc_fresh_hugetlb_folio(h, gfp_mask, nid, nmask, NULL);\n \tif (folio)\ndiff --git a/mm/hugetlb_cma.c b/mm/hugetlb_cma.c\nindex 39344d6c78d84e..79dbd0baafa3e4 100644\n--- a/mm/hugetlb_cma.c\n+++ b/mm/hugetlb_cma.c\n@@ -34,7 +34,7 @@ struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,\n \tif (!hugetlb_cma_size)\n \t\treturn NULL;\n \n-\tif (hugetlb_cma[nid])\n+\tif (hugetlb_cma[nid] \u0026\u0026 node_isset(nid, *nodemask))\n \t\tpage = cma_alloc_frozen_compound(hugetlb_cma[nid], order);\n \n \tif (!page \u0026\u0026 !(gfp_mask \u0026 __GFP_THISNODE)) {\n"
}

2/1 2026/07/05 18:08 agent patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
{
  "EnableConfigs": [
    "HUGETLBFS",
    "CMA"
  ],
  "FocusSymbols": [
    "alloc_fresh_hugetlb_folio",
    "hugetlb_cma_alloc_frozen_folio",
    "alloc_surplus_hugetlb_folio",
    "alloc_migrate_hugetlb_folio",
    "alloc_and_dissolve_hugetlb_folio",
    "alloc_gigantic_frozen_folio"
  ],
  "Reasoning": "The patch modifies the node mask handling in hugetlb and hugetlb_cma allocation paths. It restricts allocations to `cpuset_current_mems_allowed` when `nmask` is NULL and adds a `node_isset` check in `hugetlb_cma_alloc_frozen_folio`. This is a functional change to core memory management logic that should be fuzzed.",
  "WorthFuzzing": true
}

Instruction:
You are an expert Linux kernel maintainer.
Your job is to review a provided patch series and determine
if it makes functional changes to the kernel that should be fuzzed.

IMPORTANT: The changes have ALREADY been applied and committed as the HEAD commit in
your workspace. Do NOT rely on your internal knowledge of the kernel. You must actively
use your code access tools to examine the actual source code and confirm any assumptions.

Return WorthFuzzing=false if the patch only contains:
- Modifications to Documentation/, Kconfig files, or code comments.
- Purely decorative changes, such as logging (e.g., pr_err, printk) or tracepoints.
- Changes to numeric constants or macros that do not functionally alter execution flow.
- Code paths that are impossible to reach in virtualized environments like GCE or QEMU,
even when utilizing software-emulated hardware (e.g., usb gadget, mac80211_hwsim).

If it modifies reachable core kernel logic, drivers, or architectures, use your code search
tools to verify the code can be executed, then return WorthFuzzing=true.

When returning WorthFuzzing=true, you MUST ALSO:
1. Extract any specific kernel functions that should be heavily fuzzed into FocusSymbols.
   Avoid listing generic hot-path functions to prevent skewed test distributions.
2. Identify any specific CONFIG_ options required to properly test this new/modified feature.
   Go and look into the Kconfig files and check for ifdefs around the code, do not make assumptions.
   Do not list too generic configs (we already have them enabled). Only list those that
   specifically cover the modified code. List them in the EnableConfigs output array,
   and DO NOT add a 'CONFIG_' prefix (e.g., return "NET_IPV4" instead of "CONFIG_NET_IPV4").
Prefer calling several tools at the same time to save round-trips.


Use set-results tool to provide results of the analysis.
It must be called exactly once before the final reply.
Ignore results of this tool.

Prompt:
For your convenience, here is the diff of the changes:
commit 9f7c49f829e907aaee20e070bb95c363914c2565
Author: syz-cluster <triage@syzkaller.com>
Date:   Sun Jul 5 18:08:51 2026 +0000

    syz-cluster: applied patch under review

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 571212b80835ec..ee67ea29c00351 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1864,6 +1864,18 @@ static struct folio *alloc_fresh_hugetlb_folio(struct hstate *h,
 		gfp_t gfp_mask, int nid, nodemask_t *nmask)
 {
 	struct folio *folio;
+	nodemask_t local_node_mask;
+
+	if (!nmask) {
+		unsigned int cpuset_mems_cookie;
+
+		do {
+			cpuset_mems_cookie = read_mems_allowed_begin();
+			local_node_mask = cpuset_current_mems_allowed;
+		} while (read_mems_allowed_retry(cpuset_mems_cookie));
+
+		nmask = &local_node_mask;
+	}
 
 	folio = only_alloc_fresh_hugetlb_folio(h, gfp_mask, nid, nmask, NULL);
 	if (folio)
diff --git a/mm/hugetlb_cma.c b/mm/hugetlb_cma.c
index 39344d6c78d84e..79dbd0baafa3e4 100644
--- a/mm/hugetlb_cma.c
+++ b/mm/hugetlb_cma.c
@@ -34,7 +34,7 @@ struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,
 	if (!hugetlb_cma_size)
 		return NULL;
 
-	if (hugetlb_cma[nid])
+	if (hugetlb_cma[nid] && node_isset(nid, *nodemask))
 		page = cma_alloc_frozen_compound(hugetlb_cma[nid], order);
 
 	if (!page && !(gfp_mask & __GFP_THISNODE)) {

3/2 2026/07/05 18:08 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 2183
							output: 49
							thoughts: 272
						

Thoughts:
**Analyzing the Hugetlb Patch**

Okay, so I'm looking at this patch that tweaks the HugeTLB code, specifically in `mm/hugetlb.c` and `mm/hugetlb_cma.c`. My initial thought is to dive right in and understand the implications. The change in `alloc_fresh_hugetlb_folio` using `cpuset_current_mems_allowed` when `nmask` is NULL is interesting. It sounds like we're dynamically managing memory allocation based on CPU sets, which could be an important optimization or constraint. Then, in `hugetlb_cma_alloc_frozen_folio`, they added a node check before calling `cma_alloc_frozen_compound`. That's a spatial consideration, so it's likely related to NUMA configurations or memory placement policy, making sure to allocate from allowed nodes.

I need to quickly familiarize myself with the affected functions - `alloc_fresh_hugetlb_folio` in `mm/hugetlb.c` and `hugetlb_cma_alloc_frozen_folio` in `mm/hugetlb_cma.c`. I have to grasp the intent of the changes in the context of the larger code base.

Before I go further, let's nail down the configuration requirements for this to work correctly. I'll need `CONFIG_HUGETLB_PAGE`, that's a given. I'm assuming `CONFIG_CMA` is also necessary. What about `CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP`? It’s not clear, but it could be relevant, I'll need to check the dependencies.

Alright, I'll use `grep` to quickly locate all references to `hugetlb_cma_alloc_frozen_folio` and `alloc_fresh_hugetlb_folio` across the code base to help contextualize these changes. Understanding where these functions are called from is key to seeing the impact.



4/2 2026/07/05 18:08 tool grepper
0m Args:
{
  "Expression": "alloc_fresh_hugetlb_folio"
}

Results:
{
  "Output": "mm/hugetlb.c=1791=static struct folio *alloc_buddy_frozen_folio(int order, gfp_t gfp_mask,\n--\nmm/hugetlb.c-1835-\nmm/hugetlb.c:1836:static struct folio *only_alloc_fresh_hugetlb_folio(struct hstate *h,\nmm/hugetlb.c-1837-\t\tgfp_t gfp_mask, int nid, nodemask_t *nmask,\n--\nmm/hugetlb.c-1862- */\nmm/hugetlb.c:1863:static struct folio *alloc_fresh_hugetlb_folio(struct hstate *h,\nmm/hugetlb.c-1864-\t\tgfp_t gfp_mask, int nid, nodemask_t *nmask)\n--\nmm/hugetlb.c-1879-\nmm/hugetlb.c:1880:\tfolio = only_alloc_fresh_hugetlb_folio(h, gfp_mask, nid, nmask, NULL);\nmm/hugetlb.c-1881-\tif (folio)\n--\nmm/hugetlb.c=1908=static struct folio *alloc_pool_huge_folio(struct hstate *h,\n--\nmm/hugetlb.c-1918-\nmm/hugetlb.c:1919:\t\tfolio = only_alloc_fresh_hugetlb_folio(h, gfp_mask, node,\nmm/hugetlb.c-1920-\t\t\t\t\tnodes_allowed, node_alloc_noretry);\n--\nmm/hugetlb.c=2088=static struct folio *alloc_surplus_hugetlb_folio(struct hstate *h,\n--\nmm/hugetlb.c-2100-\nmm/hugetlb.c:2101:\tfolio = alloc_fresh_hugetlb_folio(h, gfp_mask, nid, nmask);\nmm/hugetlb.c-2102-\tif (!folio)\n--\nmm/hugetlb.c=2136=static struct folio *alloc_migrate_hugetlb_folio(struct hstate *h, gfp_t gfp_mask,\n--\nmm/hugetlb.c-2143-\nmm/hugetlb.c:2144:\tfolio = alloc_fresh_hugetlb_folio(h, gfp_mask, nid, nmask);\nmm/hugetlb.c-2145-\tif (!folio)\n--\nmm/hugetlb.c=2653=static int alloc_and_dissolve_hugetlb_folio(struct folio *old_folio,\n--\nmm/hugetlb.c-2698-\t\t\tgfp_mask = htlb_alloc_mask(h) | __GFP_THISNODE;\nmm/hugetlb.c:2699:\t\t\tnew_folio = alloc_fresh_hugetlb_folio(h, gfp_mask,\nmm/hugetlb.c-2700-\t\t\t\t\t\t\t      nid, NULL);\n--\nmm/hugetlb.c=3384=static void __init hugetlb_hstate_alloc_pages_onenode(struct hstate *h, int nid)\n--\nmm/hugetlb.c-3397-\nmm/hugetlb.c:3398:\t\t\tfolio = only_alloc_fresh_hugetlb_folio(h, gfp_mask, nid,\nmm/hugetlb.c-3399-\t\t\t\t\t\u0026node_states[N_MEMORY], NULL);\n--\nmm/hugetlb.c-3403-\t\t\t\tINIT_LIST_HEAD(\u0026folio_list);\nmm/hugetlb.c:3404:\t\t\t\tfolio = only_alloc_fresh_hugetlb_folio(h, gfp_mask, nid,\nmm/hugetlb.c-3405-\t\t\t\t\t\t\u0026node_states[N_MEMORY], NULL);\n"
}

5/2 2026/07/05 18:09 tool grepper
0m Args:
{
  "Expression": "hugetlb_cma_alloc_frozen_folio"
}

Results:
{
  "Output": "mm/hugetlb.c=1360=static struct folio *alloc_gigantic_frozen_folio(int order, gfp_t gfp_mask,\n--\nmm/hugetlb.c-1364-\nmm/hugetlb.c:1365:\tfolio = hugetlb_cma_alloc_frozen_folio(order, gfp_mask, nid, nodemask);\nmm/hugetlb.c-1366-\tif (folio)\n--\nmm/hugetlb_cma.c=21=void hugetlb_cma_free_frozen_folio(struct folio *folio)\n--\nmm/hugetlb_cma.c-26-\nmm/hugetlb_cma.c:27:struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,\nmm/hugetlb_cma.c-28-\t\tint nid, nodemask_t *nodemask)\n--\nmm/hugetlb_cma.h=6=void hugetlb_cma_free_frozen_folio(struct folio *folio);\nmm/hugetlb_cma.h:7:struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,\nmm/hugetlb_cma.h-8-\t\t\t\t      int nid, nodemask_t *nodemask);\n--\nmm/hugetlb_cma.h=16=static inline void hugetlb_cma_free_frozen_folio(struct folio *folio)\n--\nmm/hugetlb_cma.h-19-\nmm/hugetlb_cma.h:20:static inline struct folio *hugetlb_cma_alloc_frozen_folio(int order,\nmm/hugetlb_cma.h-21-\t\tgfp_t gfp_mask,\tint nid, nodemask_t *nodemask)\n"
}

6/2 2026/07/05 18:09 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 4413
							output: 39
							thoughts: 141
						

Thoughts:
**Analyzing the Allocation Paths for Huge Pages**

Okay, so this patch is touching `alloc_fresh_hugetlb_folio` and `hugetlb_cma_alloc_frozen_folio`. Right off the bat, that tells me we're looking at core allocation functions for Huge Pages. It's critical to understand the call paths here. `alloc_fresh_hugetlb_folio` looks like the more general-purpose allocator, and it's called by `alloc_surplus_hugetlb_folio`, `alloc_migrate_hugetlb_folio`, and `alloc_and_dissolve_hugetlb_folio`. That makes sense; those functions probably handle specific edge cases: surplus pages, migration, and page dissolution, respectively. On the other hand, `hugetlb_cma_alloc_frozen_folio` is only called by `alloc_gigantic_frozen_folio`. This suggests it's related to CMA (Contiguous Memory Allocator) allocations for gigantic pages, likely where the pages have been pre-frozen in place, maybe during boot or system init. I'll need to double check the allocation flow.

Given the CMA involvement, I should check the kernel configuration to see how `hugetlb_cma.c` is enabled. It's probably conditional. I'll need to look at `mm/Kconfig` or possibly even `mm/Makefile` to see what configuration options trigger the compilation of that module. That will give me immediate context around the dependencies, and any prerequisites to understand this patch fully.



7/2 2026/07/05 18:09 tool grepper
0m Args:
{
  "Expression": "hugetlb_cma"
}

Results:
{
  "Output": "Documentation/admin-guide/kernel-parameters.txt=95=Kernel parameters\n--\nDocumentation/admin-guide/kernel-parameters.txt-2063-\nDocumentation/admin-guide/kernel-parameters.txt:2064:\thugetlb_cma=\t[HW,CMA,EARLY] The size of a CMA area used for allocation\nDocumentation/admin-guide/kernel-parameters.txt-2065-\t\t\tof gigantic hugepages. Or using node format, the size\n--\nDocumentation/admin-guide/kernel-parameters.txt-2077-\nDocumentation/admin-guide/kernel-parameters.txt:2078:\thugetlb_cma_only=\nDocumentation/admin-guide/kernel-parameters.txt-2079-\t\t\t[HW,CMA,EARLY] When allocating new HugeTLB pages, only\n--\nDocumentation/admin-guide/kernel-parameters.txt-2081-\nDocumentation/admin-guide/kernel-parameters.txt:2082:\t\t\tThis option does nothing if hugetlb_cma= is not also\nDocumentation/admin-guide/kernel-parameters.txt-2083-\t\t\tspecified.\n--\nDocumentation/driver-api/cxl/linux/early-boot.rst=126=on NUMA nodes that are not online during early boot. ::\nDocumentation/driver-api/cxl/linux/early-boot.rst-127-\nDocumentation/driver-api/cxl/linux/early-boot.rst:128:  void __init hugetlb_cma_reserve(void) {\nDocumentation/driver-api/cxl/linux/early-boot.rst-129-    if (!node_online(nid))\n--\nMAINTAINERS=12018=F:\tmm/hugetlb_cgroup.c\nMAINTAINERS:12019:F:\tmm/hugetlb_cma.c\nMAINTAINERS:12020:F:\tmm/hugetlb_cma.h\nMAINTAINERS-12021-F:\tmm/hugetlb_sysctl.c\n--\narch/arm64/mm/hugetlbpage.c-38-#ifdef CONFIG_CMA\narch/arm64/mm/hugetlbpage.c:39:unsigned int arch_hugetlb_cma_order(void)\narch/arm64/mm/hugetlbpage.c-40-{\n--\narch/powerpc/mm/hugetlbpage.c=201=arch_initcall(hugetlbpage_init);\narch/powerpc/mm/hugetlbpage.c-202-\narch/powerpc/mm/hugetlbpage.c:203:unsigned int __init arch_hugetlb_cma_order(void)\narch/powerpc/mm/hugetlbpage.c-204-{\n--\narch/riscv/mm/hugetlbpage.c=448=arch_initcall(gigantic_pages_init);\n--\narch/riscv/mm/hugetlbpage.c-450-\narch/riscv/mm/hugetlbpage.c:451:unsigned int __init arch_hugetlb_cma_order(void)\narch/riscv/mm/hugetlbpage.c-452-{\n--\narch/s390/mm/hugetlbpage.c=225=bool __init arch_hugetlb_valid_size(unsigned long size)\n--\narch/s390/mm/hugetlbpage.c-234-\narch/s390/mm/hugetlbpage.c:235:unsigned int __init arch_hugetlb_cma_order(void)\narch/s390/mm/hugetlbpage.c-236-{\n--\narch/x86/mm/hugetlbpage.c=42=arch_initcall(gigantic_pages_init);\n--\narch/x86/mm/hugetlbpage.c-45-\narch/x86/mm/hugetlbpage.c:46:unsigned int __init arch_hugetlb_cma_order(void)\narch/x86/mm/hugetlbpage.c-47-{\n--\ninclude/linux/hugetlb.h=276=void hugetlb_split(struct vm_area_struct *vma, unsigned long addr);\ninclude/linux/hugetlb.h-277-\ninclude/linux/hugetlb.h:278:unsigned int arch_hugetlb_cma_order(void);\ninclude/linux/hugetlb.h-279-\n--\ninclude/linux/hugetlb.h=1298=static inline spinlock_t *huge_pte_lock(struct hstate *h,\n--\ninclude/linux/hugetlb.h-1308-#if defined(CONFIG_HUGETLB_PAGE) \u0026\u0026 defined(CONFIG_CMA)\ninclude/linux/hugetlb.h:1309:extern void __init hugetlb_cma_reserve(void);\ninclude/linux/hugetlb.h-1310-#else\ninclude/linux/hugetlb.h:1311:static inline __init void hugetlb_cma_reserve(void)\ninclude/linux/hugetlb.h-1312-{\n--\nmm/Makefile=82=ifdef CONFIG_CMA\nmm/Makefile:83:obj-$(CONFIG_HUGETLBFS)\t+= hugetlb_cma.o\nmm/Makefile-84-endif\n--\nmm/cma.h=8=struct cma_kobject {\n--\nmm/cma.h-14- * Multi-range support. This can be useful if the size of the allocation\nmm/cma.h:15: * is not expected to be larger than the alignment (like with hugetlb_cma),\nmm/cma.h-16- * and the total amount of memory requested, while smaller than the total\n--\nmm/hugetlb.c-50-#include \"hugetlb_vmemmap.h\"\nmm/hugetlb.c:51:#include \"hugetlb_cma.h\"\nmm/hugetlb.c-52-#include \"hugetlb_internal.h\"\n--\nmm/hugetlb.c=1360=static struct folio *alloc_gigantic_frozen_folio(int order, gfp_t gfp_mask,\n--\nmm/hugetlb.c-1364-\nmm/hugetlb.c:1365:\tfolio = hugetlb_cma_alloc_frozen_folio(order, gfp_mask, nid, nodemask);\nmm/hugetlb.c-1366-\tif (folio)\n--\nmm/hugetlb.c-1368-\nmm/hugetlb.c:1369:\tif (hugetlb_cma_exclusive_alloc())\nmm/hugetlb.c-1370-\t\treturn NULL;\n--\nmm/hugetlb.c=1458=static void __update_and_free_hugetlb_folio(struct hstate *h,\n--\nmm/hugetlb.c-1507-\tVM_BUG_ON_FOLIO(folio_ref_count(folio), folio);\nmm/hugetlb.c:1508:\tif (folio_test_hugetlb_cma(folio))\nmm/hugetlb.c:1509:\t\thugetlb_cma_free_frozen_folio(folio);\nmm/hugetlb.c-1510-\telse\n--\nmm/hugetlb.c=3040=static __init void *alloc_bootmem(struct hstate *h, int nid, bool node_exact)\n--\nmm/hugetlb.c-3045-\tif (hugetlb_early_cma(h))\nmm/hugetlb.c:3046:\t\tm = hugetlb_cma_alloc_bootmem(h, \u0026listnode, node_exact);\nmm/hugetlb.c-3047-\telse {\n--\nmm/hugetlb.c=3192=static void __init hugetlb_bootmem_init_migratetype(struct folio *folio,\n--\nmm/hugetlb.c-3199-\tfor (i = 0; i \u003c nr_pages; i += pageblock_nr_pages) {\nmm/hugetlb.c:3200:\t\tif (folio_test_hugetlb_cma(folio))\nmm/hugetlb.c-3201-\t\t\tinit_cma_pageblock(folio_page(folio, i));\n--\nmm/hugetlb.c=3293=static void __init gather_bootmem_prealloc_node(unsigned long nid)\n--\nmm/hugetlb.c-3338-\t\tif (hugetlb_bootmem_page_earlycma(m))\nmm/hugetlb.c:3339:\t\t\tfolio_set_hugetlb_cma(folio);\nmm/hugetlb.c-3340-\n--\nmm/hugetlb.c-3350-\t\t */\nmm/hugetlb.c:3351:\t\tif (!folio_test_hugetlb_cma(folio))\nmm/hugetlb.c-3352-\t\t\tadjust_managed_page_count(page, pages_per_huge_page(h));\n--\nmm/hugetlb.c=3577=static void __init hugetlb_hstate_alloc_pages(struct hstate *h)\n--\nmm/hugetlb.c-3584-\t */\nmm/hugetlb.c:3585:\tif (hstate_is_gigantic(h) \u0026\u0026 hugetlb_cma_total_size() \u0026\u0026\nmm/hugetlb.c-3586-\t    !hugetlb_early_cma(h)) {\nmm/hugetlb.c:3587:\t\tpr_warn_once(\"HugeTLB: hugetlb_cma is enabled, skip boot time allocation\\n\");\nmm/hugetlb.c-3588-\t\treturn;\n--\nmm/hugetlb.c=3607=static void __init hugetlb_init_hstates(void)\n--\nmm/hugetlb.c-3634-\t\t\tcontinue;\nmm/hugetlb.c:3635:\t\tif (hugetlb_cma_total_size() \u0026\u0026 h-\u003eorder \u003c= HUGETLB_PAGE_ORDER)\nmm/hugetlb.c-3636-\t\t\tcontinue;\n--\nmm/hugetlb.c=3931=static long demote_free_hugetlb_folios(struct hstate *src, struct hstate *dst,\n--\nmm/hugetlb.c-3958-\nmm/hugetlb.c:3959:\t\tcma = folio_test_hugetlb_cma(folio);\nmm/hugetlb.c-3960-\n--\nmm/hugetlb.c-3977-\t\t\tif (cma)\nmm/hugetlb.c:3978:\t\t\t\tfolio_set_hugetlb_cma(new_folio);\nmm/hugetlb.c-3979-\t\t\tlist_add(\u0026new_folio-\u003elru, \u0026dst_list);\n--\nmm/hugetlb.c=4239=static __init void hugetlb_parse_params(void)\n--\nmm/hugetlb.c-4249-\nmm/hugetlb.c:4250:\thugetlb_cma_validate_params();\nmm/hugetlb.c-4251-}\n--\nmm/hugetlb_cma.c-12-#include \"internal.h\"\nmm/hugetlb_cma.c:13:#include \"hugetlb_cma.h\"\nmm/hugetlb_cma.c-14-\nmm/hugetlb_cma.c-15-\nmm/hugetlb_cma.c:16:static struct cma *hugetlb_cma[MAX_NUMNODES] __ro_after_init;\nmm/hugetlb_cma.c:17:static unsigned long hugetlb_cma_size_in_node[MAX_NUMNODES] __initdata;\nmm/hugetlb_cma.c:18:static bool hugetlb_cma_only __ro_after_init;\nmm/hugetlb_cma.c:19:static unsigned long hugetlb_cma_size __ro_after_init;\nmm/hugetlb_cma.c-20-\nmm/hugetlb_cma.c:21:void hugetlb_cma_free_frozen_folio(struct folio *folio)\nmm/hugetlb_cma.c-22-{\nmm/hugetlb_cma.c:23:\tWARN_ON_ONCE(!cma_release_frozen(hugetlb_cma[folio_nid(folio)],\nmm/hugetlb_cma.c-24-\t\t\t\t\t \u0026folio-\u003epage, folio_nr_pages(folio)));\n--\nmm/hugetlb_cma.c-26-\nmm/hugetlb_cma.c:27:struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,\nmm/hugetlb_cma.c-28-\t\tint nid, nodemask_t *nodemask)\n--\nmm/hugetlb_cma.c-33-\nmm/hugetlb_cma.c:34:\tif (!hugetlb_cma_size)\nmm/hugetlb_cma.c-35-\t\treturn NULL;\nmm/hugetlb_cma.c-36-\nmm/hugetlb_cma.c:37:\tif (hugetlb_cma[nid] \u0026\u0026 node_isset(nid, *nodemask))\nmm/hugetlb_cma.c:38:\t\tpage = cma_alloc_frozen_compound(hugetlb_cma[nid], order);\nmm/hugetlb_cma.c-39-\n--\nmm/hugetlb_cma.c-41-\t\tfor_each_node_mask(node, *nodemask) {\nmm/hugetlb_cma.c:42:\t\t\tif (node == nid || !hugetlb_cma[node])\nmm/hugetlb_cma.c-43-\t\t\t\tcontinue;\nmm/hugetlb_cma.c-44-\nmm/hugetlb_cma.c:45:\t\t\tpage = cma_alloc_frozen_compound(hugetlb_cma[node], order);\nmm/hugetlb_cma.c-46-\t\t\tif (page)\n--\nmm/hugetlb_cma.c-54-\tfolio = page_folio(page);\nmm/hugetlb_cma.c:55:\tfolio_set_hugetlb_cma(folio);\nmm/hugetlb_cma.c-56-\treturn folio;\n--\nmm/hugetlb_cma.c=59=struct huge_bootmem_page * __init\nmm/hugetlb_cma.c:60:hugetlb_cma_alloc_bootmem(struct hstate *h, int *nid, bool node_exact)\nmm/hugetlb_cma.c-61-{\n--\nmm/hugetlb_cma.c-65-\nmm/hugetlb_cma.c:66:\tcma = hugetlb_cma[*nid];\nmm/hugetlb_cma.c-67-\tm = cma_reserve_early(cma, huge_page_size(h));\n--\nmm/hugetlb_cma.c-72-\t\tfor_each_node_mask(node, hugetlb_bootmem_nodes) {\nmm/hugetlb_cma.c:73:\t\t\tcma = hugetlb_cma[node];\nmm/hugetlb_cma.c-74-\t\t\tif (!cma || node == *nid)\n--\nmm/hugetlb_cma.c-91-\nmm/hugetlb_cma.c:92:static int __init cmdline_parse_hugetlb_cma(char *p)\nmm/hugetlb_cma.c-93-{\n--\nmm/hugetlb_cma.c-108-\t\t\ttmp = memparse(s, \u0026s);\nmm/hugetlb_cma.c:109:\t\t\thugetlb_cma_size_in_node[nid] = tmp;\nmm/hugetlb_cma.c:110:\t\t\thugetlb_cma_size += tmp;\nmm/hugetlb_cma.c-111-\n--\nmm/hugetlb_cma.c-120-\t\t} else {\nmm/hugetlb_cma.c:121:\t\t\thugetlb_cma_size = memparse(p, \u0026p);\nmm/hugetlb_cma.c-122-\t\t\tbreak;\n--\nmm/hugetlb_cma.c-128-\nmm/hugetlb_cma.c:129:early_param(\"hugetlb_cma\", cmdline_parse_hugetlb_cma);\nmm/hugetlb_cma.c-130-\nmm/hugetlb_cma.c:131:static int __init cmdline_parse_hugetlb_cma_only(char *p)\nmm/hugetlb_cma.c-132-{\nmm/hugetlb_cma.c:133:\treturn kstrtobool(p, \u0026hugetlb_cma_only);\nmm/hugetlb_cma.c-134-}\nmm/hugetlb_cma.c-135-\nmm/hugetlb_cma.c:136:early_param(\"hugetlb_cma_only\", cmdline_parse_hugetlb_cma_only);\nmm/hugetlb_cma.c-137-\nmm/hugetlb_cma.c:138:unsigned int __weak arch_hugetlb_cma_order(void)\nmm/hugetlb_cma.c-139-{\n--\nmm/hugetlb_cma.c-142-\nmm/hugetlb_cma.c:143:void __init hugetlb_cma_reserve(void)\nmm/hugetlb_cma.c-144-{\n--\nmm/hugetlb_cma.c-148-\nmm/hugetlb_cma.c:149:\tif (!hugetlb_cma_size)\nmm/hugetlb_cma.c-150-\t\treturn;\nmm/hugetlb_cma.c-151-\nmm/hugetlb_cma.c:152:\torder = arch_hugetlb_cma_order();\nmm/hugetlb_cma.c-153-\tif (!order) {\nmm/hugetlb_cma.c:154:\t\tpr_warn(\"hugetlb_cma: the option isn't supported by current arch\\n\");\nmm/hugetlb_cma.c-155-\t\treturn;\n--\nmm/hugetlb_cma.c-169-\tfor (nid = 0; nid \u003c MAX_NUMNODES; nid++) {\nmm/hugetlb_cma.c:170:\t\tsize = hugetlb_cma_size_in_node[nid];\nmm/hugetlb_cma.c-171-\t\tif (size == 0)\n--\nmm/hugetlb_cma.c-174-\t\tif (!node_isset(nid, hugetlb_bootmem_nodes)) {\nmm/hugetlb_cma.c:175:\t\t\tpr_warn(\"hugetlb_cma: invalid node %d specified\\n\", nid);\nmm/hugetlb_cma.c-176-\t\t} else if (!IS_ALIGNED(size, gigantic_page_size)) {\nmm/hugetlb_cma.c:177:\t\t\tpr_warn(\"hugetlb_cma: cma area of node %d must be a multiple of %lu MiB\\n\",\nmm/hugetlb_cma.c-178-\t\t\t\tnid, gigantic_page_size / SZ_1M);\n--\nmm/hugetlb_cma.c-183-\nmm/hugetlb_cma.c:184:\t\thugetlb_cma_size -= size;\nmm/hugetlb_cma.c:185:\t\thugetlb_cma_size_in_node[nid] = 0;\nmm/hugetlb_cma.c-186-\t}\n--\nmm/hugetlb_cma.c-188-\t/* Validate the CMA size again in case some invalid nodes specified. */\nmm/hugetlb_cma.c:189:\tif (!hugetlb_cma_size)\nmm/hugetlb_cma.c-190-\t\treturn;\nmm/hugetlb_cma.c-191-\nmm/hugetlb_cma.c:192:\tif (!IS_ALIGNED(hugetlb_cma_size, gigantic_page_size)) {\nmm/hugetlb_cma.c:193:\t\tpr_warn(\"hugetlb_cma: cma area must be a multiple of %lu MiB\\n\",\nmm/hugetlb_cma.c-194-\t\t\tgigantic_page_size / SZ_1M);\nmm/hugetlb_cma.c:195:\t\thugetlb_cma_size = 0;\nmm/hugetlb_cma.c-196-\t\treturn;\n--\nmm/hugetlb_cma.c-203-\t\t */\nmm/hugetlb_cma.c:204:\t\tper_node = DIV_ROUND_UP(hugetlb_cma_size,\nmm/hugetlb_cma.c-205-\t\t\t\t\tnodes_weight(hugetlb_bootmem_nodes));\nmm/hugetlb_cma.c-206-\t\tper_node = round_up(per_node, gigantic_page_size);\nmm/hugetlb_cma.c:207:\t\tpr_info(\"hugetlb_cma: reserve %lu MiB, up to %lu MiB per node\\n\",\nmm/hugetlb_cma.c:208:\t\t\thugetlb_cma_size / SZ_1M, per_node / SZ_1M);\nmm/hugetlb_cma.c-209-\t}\n--\nmm/hugetlb_cma.c-216-\t\tif (node_specific_cma_alloc) {\nmm/hugetlb_cma.c:217:\t\t\tif (hugetlb_cma_size_in_node[nid] == 0)\nmm/hugetlb_cma.c-218-\t\t\t\tcontinue;\nmm/hugetlb_cma.c-219-\nmm/hugetlb_cma.c:220:\t\t\tsize = hugetlb_cma_size_in_node[nid];\nmm/hugetlb_cma.c-221-\t\t} else {\nmm/hugetlb_cma.c:222:\t\t\tsize = min(per_node, hugetlb_cma_size - reserved);\nmm/hugetlb_cma.c-223-\t\t}\n--\nmm/hugetlb_cma.c-232-\t\t\t\t\tHUGETLB_PAGE_ORDER, name,\nmm/hugetlb_cma.c:233:\t\t\t\t\t\u0026hugetlb_cma[nid], nid);\nmm/hugetlb_cma.c-234-\t\tif (res) {\nmm/hugetlb_cma.c:235:\t\t\tpr_warn(\"hugetlb_cma: reservation failed: err %d, node %d\",\nmm/hugetlb_cma.c-236-\t\t\t\tres, nid);\n--\nmm/hugetlb_cma.c-240-\t\treserved += size;\nmm/hugetlb_cma.c:241:\t\tpr_info(\"hugetlb_cma: reserved %lu MiB on node %d\\n\",\nmm/hugetlb_cma.c-242-\t\t\tsize / SZ_1M, nid);\nmm/hugetlb_cma.c-243-\nmm/hugetlb_cma.c:244:\t\tif (reserved \u003e= hugetlb_cma_size)\nmm/hugetlb_cma.c-245-\t\t\tbreak;\n--\nmm/hugetlb_cma.c-249-\t\t/*\nmm/hugetlb_cma.c:250:\t\t * hugetlb_cma_size is used to determine if allocations from\nmm/hugetlb_cma.c-251-\t\t * cma are possible.  Set to zero if no cma regions are set up.\nmm/hugetlb_cma.c-252-\t\t */\nmm/hugetlb_cma.c:253:\t\thugetlb_cma_size = 0;\nmm/hugetlb_cma.c-254-}\nmm/hugetlb_cma.c-255-\nmm/hugetlb_cma.c:256:bool hugetlb_cma_exclusive_alloc(void)\nmm/hugetlb_cma.c-257-{\nmm/hugetlb_cma.c:258:\treturn hugetlb_cma_only;\nmm/hugetlb_cma.c-259-}\nmm/hugetlb_cma.c-260-\nmm/hugetlb_cma.c:261:unsigned long __init hugetlb_cma_total_size(void)\nmm/hugetlb_cma.c-262-{\nmm/hugetlb_cma.c:263:\treturn hugetlb_cma_size;\nmm/hugetlb_cma.c-264-}\nmm/hugetlb_cma.c-265-\nmm/hugetlb_cma.c:266:void __init hugetlb_cma_validate_params(void)\nmm/hugetlb_cma.c-267-{\nmm/hugetlb_cma.c:268:\tif (!hugetlb_cma_size)\nmm/hugetlb_cma.c:269:\t\thugetlb_cma_only = false;\nmm/hugetlb_cma.c-270-}\n--\nmm/hugetlb_cma.c=272=bool __init hugetlb_early_cma(struct hstate *h)\n--\nmm/hugetlb_cma.c-276-\nmm/hugetlb_cma.c:277:\treturn hstate_is_gigantic(h) \u0026\u0026 hugetlb_cma_only;\nmm/hugetlb_cma.c-278-}\n--\nmm/hugetlb_cma.h-5-#ifdef CONFIG_CMA\nmm/hugetlb_cma.h:6:void hugetlb_cma_free_frozen_folio(struct folio *folio);\nmm/hugetlb_cma.h:7:struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,\nmm/hugetlb_cma.h-8-\t\t\t\t      int nid, nodemask_t *nodemask);\nmm/hugetlb_cma.h:9:struct huge_bootmem_page *hugetlb_cma_alloc_bootmem(struct hstate *h, int *nid,\nmm/hugetlb_cma.h-10-\t\t\t\t\t\t    bool node_exact);\nmm/hugetlb_cma.h:11:bool hugetlb_cma_exclusive_alloc(void);\nmm/hugetlb_cma.h:12:unsigned long hugetlb_cma_total_size(void);\nmm/hugetlb_cma.h:13:void hugetlb_cma_validate_params(void);\nmm/hugetlb_cma.h-14-bool hugetlb_early_cma(struct hstate *h);\nmm/hugetlb_cma.h-15-#else\nmm/hugetlb_cma.h:16:static inline void hugetlb_cma_free_frozen_folio(struct folio *folio)\nmm/hugetlb_cma.h-17-{\n--\nmm/hugetlb_cma.h-19-\nmm/hugetlb_cma.h:20:static inline struct folio *hugetlb_cma_alloc_frozen_folio(int order,\nmm/hugetlb_cma.h-21-\t\tgfp_t gfp_mask,\tint nid, nodemask_t *nodemask)\n--\nmm/hugetlb_cma.h=26=static inline\nmm/hugetlb_cma.h:27:struct huge_bootmem_page *hugetlb_cma_alloc_bootmem(struct hstate *h, int *nid,\nmm/hugetlb_cma.h-28-\t\t\t\t\t\t    bool node_exact)\n--\nmm/hugetlb_cma.h-32-\nmm/hugetlb_cma.h:33:static inline bool hugetlb_cma_exclusive_alloc(void)\nmm/hugetlb_cma.h-34-{\n--\nmm/hugetlb_cma.h-37-\nmm/hugetlb_cma.h:38:static inline unsigned long hugetlb_cma_total_size(void)\nmm/hugetlb_cma.h-39-{\n--\nmm/hugetlb_cma.h-42-\nmm/hugetlb_cma.h:43:static inline void hugetlb_cma_validate_params(void)\nmm/hugetlb_cma.h-44-{\n--\nmm/mm_init.c=2695=void __init mm_core_init_early(void)\nmm/mm_init.c-2696-{\nmm/mm_init.c:2697:\thugetlb_cma_reserve();\nmm/mm_init.c-2698-\thugetlb_bootmem_alloc();\n"
}

8/2 2026/07/05 18:09 tool grepper
0m Args:
{
  "Expression": "CONFIG_HUGETLB"
}

Results:
{
  "Output": "\nFull output is too long, showing 500 out of 1297 lines.\nUse more precise expression if possible.\n\nDocumentation/admin-guide/kernel-parameters.txt=95=Kernel parameters\n--\nDocumentation/admin-guide/kernel-parameters.txt-2085-\thugetlb_free_vmemmap=\nDocumentation/admin-guide/kernel-parameters.txt:2086:\t\t\t[KNL] Requires CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP\nDocumentation/admin-guide/kernel-parameters.txt-2087-\t\t\tenabled.\n--\nDocumentation/admin-guide/kernel-parameters.txt-2095-\nDocumentation/admin-guide/kernel-parameters.txt:2096:\t\t\tBuilt with CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON=y,\nDocumentation/admin-guide/kernel-parameters.txt-2097-\t\t\tthe default is on.\n--\nDocumentation/admin-guide/mm/hugetlbpage.rst=20=system call or standard SYSV shared memory system calls (shmget, shmat).\nDocumentation/admin-guide/mm/hugetlbpage.rst-21-\nDocumentation/admin-guide/mm/hugetlbpage.rst:22:First the Linux kernel needs to be built with the CONFIG_HUGETLBFS\nDocumentation/admin-guide/mm/hugetlbpage.rst:23:(present under \"File systems\") and CONFIG_HUGETLB_PAGE (selected\nDocumentation/admin-guide/mm/hugetlbpage.rst:24:automatically when CONFIG_HUGETLBFS is selected) configuration\nDocumentation/admin-guide/mm/hugetlbpage.rst-25-options.\n--\nDocumentation/admin-guide/mm/hugetlbpage.rst=174=hugetlb_free_vmemmap\nDocumentation/admin-guide/mm/hugetlbpage.rst:175:\tWhen CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP is set, this enables HugeTLB\nDocumentation/admin-guide/mm/hugetlbpage.rst-176-\tVmemmap Optimization (HVO).\n--\narch/arm64/configs/defconfig=1912=CONFIG_TMPFS_POSIX_ACL=y\narch/arm64/configs/defconfig:1913:CONFIG_HUGETLBFS=y\narch/arm64/configs/defconfig-1914-CONFIG_CONFIGFS_FS=y\n--\narch/arm64/include/asm/mte.h=157=static inline int mte_ptrace_copy_tags(struct task_struct *child,\n--\narch/arm64/include/asm/mte.h-165-\narch/arm64/include/asm/mte.h:166:#if defined(CONFIG_HUGETLB_PAGE) \u0026\u0026 defined(CONFIG_ARM64_MTE)\narch/arm64/include/asm/mte.h-167-static inline void folio_set_hugetlb_mte_tagged(struct folio *folio)\n--\narch/arm64/mm/Makefile=6=obj-$(CONFIG_ARM64_CONTPTE)\t+= contpte.o\narch/arm64/mm/Makefile:7:obj-$(CONFIG_HUGETLB_PAGE)\t+= hugetlbpage.o\narch/arm64/mm/Makefile-8-obj-$(CONFIG_PTDUMP)\t\t+= ptdump.o\n--\narch/hexagon/include/asm/page.h-39- */\narch/hexagon/include/asm/page.h:40:#ifdef CONFIG_HUGETLB_PAGE\narch/hexagon/include/asm/page.h-41-#define HPAGE_SHIFT 22\n--\narch/hexagon/include/asm/pgtable.h=129=extern pgd_t swapper_pg_dir[PTRS_PER_PGD];  /* located in head.S */\n--\narch/hexagon/include/asm/pgtable.h-131-/*  HUGETLB not working currently  */\narch/hexagon/include/asm/pgtable.h:132:#ifdef CONFIG_HUGETLB_PAGE\narch/hexagon/include/asm/pgtable.h-133-#define pte_mkhuge(pte) __pte((pte_val(pte) \u0026 ~0x3) | HVM_HUGEPAGE_SIZE)\n--\narch/loongarch/configs/loongson64_defconfig=1035=CONFIG_TMPFS_POSIX_ACL=y\narch/loongarch/configs/loongson64_defconfig:1036:CONFIG_HUGETLBFS=y\narch/loongarch/configs/loongson64_defconfig-1037-CONFIG_CONFIGFS_FS=y\n--\narch/loongarch/mm/Makefile=10=obj-$(CONFIG_HIGHMEM)\t\t+= highmem.o\narch/loongarch/mm/Makefile:11:obj-$(CONFIG_HUGETLB_PAGE)\t+= hugetlbpage.o\narch/loongarch/mm/Makefile-12-obj-$(CONFIG_KASAN)\t\t+= kasan_init.o\n--\narch/loongarch/mm/tlb.c=138=static void __update_hugetlb(struct vm_area_struct *vma, unsigned long address, pte_t *ptep)\narch/loongarch/mm/tlb.c-139-{\narch/loongarch/mm/tlb.c:140:#ifdef CONFIG_HUGETLB_PAGE\narch/loongarch/mm/tlb.c-141-\tint idx;\n--\narch/mips/configs/cavium_octeon_defconfig=143=CONFIG_TMPFS=y\narch/mips/configs/cavium_octeon_defconfig:144:CONFIG_HUGETLBFS=y\narch/mips/configs/cavium_octeon_defconfig-145-CONFIG_NFS_FS=y\n--\narch/mips/configs/decstation_64_defconfig=144=CONFIG_TMPFS_POSIX_ACL=y\narch/mips/configs/decstation_64_defconfig:145:CONFIG_HUGETLBFS=y\narch/mips/configs/decstation_64_defconfig-146-CONFIG_CONFIGFS_FS=y\n--\narch/mips/mm/Makefile=31=obj-$(CONFIG_HIGHMEM)\t\t+= highmem.o\narch/mips/mm/Makefile:32:obj-$(CONFIG_HUGETLB_PAGE)\t+= hugetlbpage.o\narch/mips/mm/Makefile-33-obj-$(CONFIG_DMA_NONCOHERENT)\t+= dma-noncoherent.o\n--\narch/parisc/include/asm/page.h=93=extern int npmem_ranges;\n--\narch/parisc/include/asm/page.h-147-\narch/parisc/include/asm/page.h:148:#ifdef CONFIG_HUGETLB_PAGE\narch/parisc/include/asm/page.h-149-#define HPAGE_SHIFT\t\tPMD_SHIFT /* fixed for transparent huge pages */\n--\narch/parisc/include/asm/page.h-163-#endif\narch/parisc/include/asm/page.h:164:#endif /* CONFIG_HUGETLB_PAGE */\narch/parisc/include/asm/page.h-165-\n--\narch/parisc/include/asm/pgtable.h=64=extern void __update_cache(pte_t pte);\n--\narch/parisc/include/asm/pgtable.h-170-#define _PAGE_USER_BIT     20   /* (0x800) Software: User accessible page */\narch/parisc/include/asm/pgtable.h:171:#ifdef CONFIG_HUGETLB_PAGE\narch/parisc/include/asm/pgtable.h-172-#define _PAGE_SPECIAL_BIT  _PAGE_DMB_BIT  /* DMB feature is currently unused */\n--\narch/parisc/include/asm/pgtable.h=315=static inline pte_t pte_mkspecial(pte_t pte)\t{ pte_val(pte) |= _PAGE_SPECIAL; return pte; }\n--\narch/parisc/include/asm/pgtable.h-319- */\narch/parisc/include/asm/pgtable.h:320:#ifdef CONFIG_HUGETLB_PAGE\narch/parisc/include/asm/pgtable.h-321-#define pte_huge(pte)           (pte_val(pte) \u0026 _PAGE_HUGE)\n--\narch/parisc/kernel/asm-offsets.c=41=int main(void)\n--\narch/parisc/kernel/asm-offsets.c-278-\t * and kernel data on physical huge pages */\narch/parisc/kernel/asm-offsets.c:279:#ifdef CONFIG_HUGETLB_PAGE\narch/parisc/kernel/asm-offsets.c-280-\tDEFINE(HUGEPAGE_SIZE, 1UL \u003c\u003c REAL_HPAGE_SHIFT);\n--\narch/parisc/kernel/entry.S-481-\t.macro\t\tconvert_for_tlb_insert20 pte,tmp\narch/parisc/kernel/entry.S:482:#ifdef CONFIG_HUGETLB_PAGE\narch/parisc/kernel/entry.S-483-\tcopy\t\t\\pte,\\tmp\n--\narch/parisc/kernel/setup.c=101=void __init setup_arch(char **cmdline_p)\n--\narch/parisc/kernel/setup.c-114-\t\t(int)(PAGE_SIZE / 1024));\narch/parisc/kernel/setup.c:115:#ifdef CONFIG_HUGETLB_PAGE\narch/parisc/kernel/setup.c-116-\tprintk(KERN_CONT \"enabled with %d MB physical and %d MB virtual size\",\n--\narch/parisc/mm/Makefile=6=obj-y\t := init.o fault.o ioremap.o fixmap.o\narch/parisc/mm/Makefile:7:obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o\n--\narch/powerpc/configs/cell_defconfig=178=CONFIG_TMPFS=y\narch/powerpc/configs/cell_defconfig:179:CONFIG_HUGETLBFS=y\narch/powerpc/configs/cell_defconfig-180-CONFIG_NFS_FS=y\n--\narch/powerpc/configs/fsl-emb-nonhw.config=50=CONFIG_HPFS_FS=m\narch/powerpc/configs/fsl-emb-nonhw.config:51:CONFIG_HUGETLBFS=y\narch/powerpc/configs/fsl-emb-nonhw.config-52-CONFIG_IKCONFIG_PROC=y\n--\narch/powerpc/configs/g5_defconfig=214=CONFIG_TMPFS=y\narch/powerpc/configs/g5_defconfig:215:CONFIG_HUGETLBFS=y\narch/powerpc/configs/g5_defconfig-216-CONFIG_HFS_FS=m\n--\narch/powerpc/configs/pasemi_defconfig=151=CONFIG_TMPFS=y\narch/powerpc/configs/pasemi_defconfig:152:CONFIG_HUGETLBFS=y\narch/powerpc/configs/pasemi_defconfig-153-CONFIG_CONFIGFS_FS=y\n--\narch/powerpc/configs/powernv_defconfig=278=CONFIG_TMPFS_POSIX_ACL=y\narch/powerpc/configs/powernv_defconfig:279:CONFIG_HUGETLBFS=y\narch/powerpc/configs/powernv_defconfig-280-CONFIG_CRAMFS=m\n--\narch/powerpc/configs/ppc64_defconfig=333=CONFIG_TMPFS_POSIX_ACL=y\narch/powerpc/configs/ppc64_defconfig:334:CONFIG_HUGETLBFS=y\narch/powerpc/configs/ppc64_defconfig-335-CONFIG_HFS_FS=m\n--\narch/powerpc/configs/ps3_defconfig=138=CONFIG_TMPFS=y\narch/powerpc/configs/ps3_defconfig:139:CONFIG_HUGETLBFS=y\narch/powerpc/configs/ps3_defconfig-140-CONFIG_NFS_FS=y\n--\narch/powerpc/configs/skiroot_defconfig=257=CONFIG_PROC_KCORE=y\narch/powerpc/configs/skiroot_defconfig:258:CONFIG_HUGETLBFS=y\narch/powerpc/configs/skiroot_defconfig-259-# CONFIG_MISC_FILESYSTEMS is not set\n--\narch/powerpc/include/asm/book3s/64/hash-64k.h-74-\narch/powerpc/include/asm/book3s/64/hash-64k.h:75:#if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLB_PAGE)\narch/powerpc/include/asm/book3s/64/hash-64k.h-76-#define H_PMD_FRAG_SIZE_SHIFT  (H_PMD_INDEX_SIZE + 3 + 1)\n--\narch/powerpc/include/asm/book3s/64/hash-64k.h=175=static inline int hash__remap_4k_pfn(struct vm_area_struct *vma, unsigned long addr,\n--\narch/powerpc/include/asm/book3s/64/hash-64k.h-186-#define H_PTE_TABLE_SIZE\tPTE_FRAG_SIZE\narch/powerpc/include/asm/book3s/64/hash-64k.h:187:#if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined (CONFIG_HUGETLB_PAGE)\narch/powerpc/include/asm/book3s/64/hash-64k.h-188-#define H_PMD_TABLE_SIZE\t((sizeof(pmd_t) \u003c\u003c PMD_INDEX_SIZE) + \\\n--\narch/powerpc/include/asm/book3s/64/hash-64k.h-192-#endif\narch/powerpc/include/asm/book3s/64/hash-64k.h:193:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/include/asm/book3s/64/hash-64k.h-194-#define H_PUD_TABLE_SIZE\t((sizeof(pud_t) \u003c\u003c PUD_INDEX_SIZE) +\t\\\n--\narch/powerpc/include/asm/book3s/64/hash.h-46- */\narch/powerpc/include/asm/book3s/64/hash.h:47:#if defined(CONFIG_HUGETLB_PAGE) \u0026\u0026  defined(CONFIG_PPC_64K_PAGES)\narch/powerpc/include/asm/book3s/64/hash.h-48-#define H_PUD_CACHE_INDEX\t(H_PUD_INDEX_SIZE + 1)\n--\narch/powerpc/include/asm/book3s/64/mmu-hash.h=712=struct hash_mm_context {\n--\narch/powerpc/include/asm/book3s/64/mmu-hash.h-722-\tstruct slice_mask mask_4k;\narch/powerpc/include/asm/book3s/64/mmu-hash.h:723:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/include/asm/book3s/64/mmu-hash.h-724-\tstruct slice_mask mask_16m;\n--\narch/powerpc/include/asm/book3s/64/mmu.h=169=static inline struct slice_mask *slice_mask_for_size(mm_context_t *ctx, int psize)\n--\narch/powerpc/include/asm/book3s/64/mmu.h-174-#endif\narch/powerpc/include/asm/book3s/64/mmu.h:175:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/include/asm/book3s/64/mmu.h-176-\tif (psize == MMU_PAGE_16M)\n--\narch/powerpc/include/asm/book3s/64/pgalloc.h=48=static inline pgd_t *pgd_alloc(struct mm_struct *mm)\n--\narch/powerpc/include/asm/book3s/64/pgalloc.h-73-\t */\narch/powerpc/include/asm/book3s/64/pgalloc.h:74:#if defined(CONFIG_HUGETLB_PAGE) \u0026\u0026 defined(CONFIG_PPC_64K_PAGES) \u0026\u0026 \\\narch/powerpc/include/asm/book3s/64/pgalloc.h-75-\t(H_PGD_INDEX_SIZE == H_PUD_CACHE_INDEX)\n--\narch/powerpc/include/asm/book3s/64/pgtable-64k.h-5-#ifndef __ASSEMBLER__\narch/powerpc/include/asm/book3s/64/pgtable-64k.h:6:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/include/asm/book3s/64/pgtable-64k.h-7-\narch/powerpc/include/asm/book3s/64/pgtable-64k.h:8:#endif /* CONFIG_HUGETLB_PAGE */\narch/powerpc/include/asm/book3s/64/pgtable-64k.h-9-\n--\narch/powerpc/include/asm/book3s/64/slice.h-7-#ifdef CONFIG_PPC_64S_HASH_MMU\narch/powerpc/include/asm/book3s/64/slice.h:8:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/include/asm/book3s/64/slice.h-9-#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA\n--\narch/powerpc/include/asm/hugetlb.h-4-\narch/powerpc/include/asm/hugetlb.h:5:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/include/asm/hugetlb.h-6-#include \u003casm/page.h\u003e\n--\narch/powerpc/include/asm/hugetlb.h=67=int huge_ptep_set_access_flags(struct vm_area_struct *vma,\n--\narch/powerpc/include/asm/hugetlb.h-72-\narch/powerpc/include/asm/hugetlb.h:73:#else /* ! CONFIG_HUGETLB_PAGE */\narch/powerpc/include/asm/hugetlb.h-74-static inline void flush_hugetlb_page(struct vm_area_struct *vma,\n--\narch/powerpc/include/asm/hugetlb.h=79=static inline void __init hugetlbpage_init_defaultsize(void)\n--\narch/powerpc/include/asm/hugetlb.h-81-}\narch/powerpc/include/asm/hugetlb.h:82:#endif /* CONFIG_HUGETLB_PAGE */\narch/powerpc/include/asm/hugetlb.h-83-\n--\narch/powerpc/include/asm/page.h-26-#ifndef __ASSEMBLER__\narch/powerpc/include/asm/page.h:27:#ifndef CONFIG_HUGETLB_PAGE\narch/powerpc/include/asm/page.h-28-#define HPAGE_SHIFT PAGE_SHIFT\n--\narch/powerpc/include/asm/pgtable.h=144=static inline void update_mmu_cache_range(struct vm_fault *vmf,\n--\narch/powerpc/include/asm/pgtable.h-148-\tif ((mmu_has_feature(MMU_FTR_HPTE_TABLE) \u0026\u0026 !radix_enabled()) ||\narch/powerpc/include/asm/pgtable.h:149:\t    (IS_ENABLED(CONFIG_PPC_E500) \u0026\u0026 IS_ENABLED(CONFIG_HUGETLB_PAGE)))\narch/powerpc/include/asm/pgtable.h-150-\t\t__update_mmu_cache(vma, address, ptep);\n--\narch/powerpc/include/asm/pte-walk.h=10=static inline pte_t *find_linux_pte(pgd_t *pgdir, unsigned long ea,\n--\narch/powerpc/include/asm/pte-walk.h-18-#if defined(CONFIG_DEBUG_VM) \u0026\u0026\t\t\t\t\t\t\\\narch/powerpc/include/asm/pte-walk.h:19:\t!(defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE))\narch/powerpc/include/asm/pte-walk.h-20-\t/*\n--\narch/powerpc/kernel/fadump.c=549=int __init fadump_reserve_mem(void)\n--\narch/powerpc/kernel/fadump.c-594-\narch/powerpc/kernel/fadump.c:595:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/kernel/fadump.c-596-\t\t/*\n--\narch/powerpc/kernel/head_85xx.S=166=set_ivor:\n--\narch/powerpc/kernel/head_85xx.S-307- */\narch/powerpc/kernel/head_85xx.S:308:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/kernel/head_85xx.S-309-#define FIND_PTE\t\\\n--\narch/powerpc/kernel/head_85xx.S=666=finish_tlb_load:\narch/powerpc/kernel/head_85xx.S:667:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/kernel/head_85xx.S-668-\tcmpwi\t6, r10, 0\t\t\t/* check for huge page */\n--\narch/powerpc/kernel/head_85xx.S-718-\narch/powerpc/kernel/head_85xx.S:719:#endif /* CONFIG_HUGETLB_PAGE */\narch/powerpc/kernel/head_85xx.S-720-\n--\narch/powerpc/kernel/head_85xx.S=739=END_MMU_FTR_SECTION_IFSET(MMU_FTR_BIG_PHYS)\n--\narch/powerpc/kernel/head_85xx.S-742-\trlwimi\tr12, r11, 32-19, 27, 31\t/* extract WIMGE from pte */\narch/powerpc/kernel/head_85xx.S:743:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/kernel/head_85xx.S-744-\tbeq\t6, 3f\t\t\t/* don't mask if page isn't huge */\n--\narch/powerpc/kernel/head_85xx.S=753=tlb_write_entry:\n--\narch/powerpc/kernel/head_85xx.S-757-\tmfspr\tr10, SPRN_SPRG_THREAD\narch/powerpc/kernel/head_85xx.S:758:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/kernel/head_85xx.S-759-\tbeq\t6, 8f /* skip restore for 4k page faults */\n--\narch/powerpc/mm/Makefile=14=obj-$(CONFIG_NUMA) += numa.o\narch/powerpc/mm/Makefile:15:obj-$(CONFIG_HUGETLB_PAGE)\t+= hugetlbpage.o\narch/powerpc/mm/Makefile-16-obj-$(CONFIG_NOT_COHERENT_CACHE) += dma-noncoherent.o\n--\narch/powerpc/mm/book3s64/Makefile=12=endif\narch/powerpc/mm/book3s64/Makefile-13-\narch/powerpc/mm/book3s64/Makefile:14:obj-$(CONFIG_HUGETLB_PAGE)\t+= hugetlbpage.o\narch/powerpc/mm/book3s64/Makefile-15-\narch/powerpc/mm/book3s64/Makefile=16=obj-$(CONFIG_PPC_RADIX_MMU)\t+= radix_pgtable.o radix_tlb.o\narch/powerpc/mm/book3s64/Makefile:17:ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/Makefile-18-obj-$(CONFIG_PPC_RADIX_MMU)\t+= radix_hugetlbpage.o\n--\narch/powerpc/mm/book3s64/hash_tlb.c=41=void hpte_need_flush(struct mm_struct *mm, unsigned long addr,\n--\narch/powerpc/mm/book3s64/hash_tlb.c-62-\tif (huge) {\narch/powerpc/mm/book3s64/hash_tlb.c:63:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/hash_tlb.c-64-\t\tpsize = get_slice_psize(mm, addr);\n--\narch/powerpc/mm/book3s64/hash_utils.c=846=static int __init htab_dt_scan_page_sizes(unsigned long node,\n--\narch/powerpc/mm/book3s64/hash_utils.c-923-\narch/powerpc/mm/book3s64/hash_utils.c:924:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/hash_utils.c-925-/*\n--\narch/powerpc/mm/book3s64/hash_utils.c=929=static int __init htab_dt_scan_hugepage_blocks(unsigned long node,\n--\narch/powerpc/mm/book3s64/hash_utils.c-966-}\narch/powerpc/mm/book3s64/hash_utils.c:967:#endif /* CONFIG_HUGETLB_PAGE */\narch/powerpc/mm/book3s64/hash_utils.c-968-\n--\narch/powerpc/mm/book3s64/hash_utils.c=996=static void __init htab_scan_page_sizes(void)\n--\narch/powerpc/mm/book3s64/hash_utils.c-1019-\narch/powerpc/mm/book3s64/hash_utils.c:1020:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/hash_utils.c-1021-\tif (!hugetlb_disabled \u0026\u0026 !early_radix_enabled() ) {\n--\narch/powerpc/mm/book3s64/hash_utils.c-1024-\t}\narch/powerpc/mm/book3s64/hash_utils.c:1025:#endif /* CONFIG_HUGETLB_PAGE */\narch/powerpc/mm/book3s64/hash_utils.c-1026-}\n--\narch/powerpc/mm/book3s64/hash_utils.c=1718=int hash_page_mm(struct mm_struct *mm, unsigned long ea,\n--\narch/powerpc/mm/book3s64/hash_utils.c-1838-\t\t\t\t\t     trap, flags, ssize, psize);\narch/powerpc/mm/book3s64/hash_utils.c:1839:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/hash_utils.c-1840-\t\telse\n--\narch/powerpc/mm/book3s64/radix_tlb.c=626=void radix__local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)\narch/powerpc/mm/book3s64/radix_tlb.c-627-{\narch/powerpc/mm/book3s64/radix_tlb.c:628:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/radix_tlb.c-629-\t/* need the return fix for nohash.c */\n--\narch/powerpc/mm/book3s64/radix_tlb.c=945=void radix__flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)\narch/powerpc/mm/book3s64/radix_tlb.c-946-{\narch/powerpc/mm/book3s64/radix_tlb.c:947:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/radix_tlb.c-948-\tif (is_vm_hugetlb_page(vma))\n--\narch/powerpc/mm/book3s64/radix_tlb.c=1111=void radix__flush_tlb_range(struct vm_area_struct *vma, unsigned long start,\n--\narch/powerpc/mm/book3s64/radix_tlb.c-1114-{\narch/powerpc/mm/book3s64/radix_tlb.c:1115:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/radix_tlb.c-1116-\tif (is_vm_hugetlb_page(vma))\n--\narch/powerpc/mm/book3s64/slice.c=636=EXPORT_SYMBOL_GPL(slice_get_unmapped_area);\narch/powerpc/mm/book3s64/slice.c-637-\narch/powerpc/mm/book3s64/slice.c:638:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/slice.c-639-static int file_to_psize(struct file *file)\n--\narch/powerpc/mm/book3s64/slice.c=757=void slice_set_range_psize(struct mm_struct *mm, unsigned long start,\n--\narch/powerpc/mm/book3s64/slice.c-767-\narch/powerpc/mm/book3s64/slice.c:768:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/book3s64/slice.c-769-/*\n--\narch/powerpc/mm/init_64.c=617=void __init mmu_early_init_devtree(void)\n--\narch/powerpc/mm/init_64.c-664-\narch/powerpc/mm/init_64.c:665:\tif (IS_ENABLED(CONFIG_HUGETLB_PAGE_SIZE_VARIABLE))\narch/powerpc/mm/init_64.c-666-\t\thugetlbpage_init_defaultsize();\n--\narch/powerpc/mm/nohash/Makefile=8=obj-$(CONFIG_RANDOMIZE_BASE)\t+= kaslr_booke.o\narch/powerpc/mm/nohash/Makefile:9:ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/nohash/Makefile-10-obj-$(CONFIG_PPC_E500)\t+= e500_hugetlbpage.o\n--\narch/powerpc/mm/nohash/tlb.c=278=void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)\narch/powerpc/mm/nohash/tlb.c-279-{\narch/powerpc/mm/nohash/tlb.c:280:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/nohash/tlb.c-281-\tif (vma \u0026\u0026 is_vm_hugetlb_page(vma))\n--\narch/powerpc/mm/pgtable.c=255=int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address,\n--\narch/powerpc/mm/pgtable.c-268-\narch/powerpc/mm/pgtable.c:269:#ifdef CONFIG_HUGETLB_PAGE\narch/powerpc/mm/pgtable.c-270-int huge_ptep_set_access_flags(struct vm_area_struct *vma,\n--\narch/powerpc/mm/pgtable.c=353=void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,\n--\narch/powerpc/mm/pgtable.c-383-#endif\narch/powerpc/mm/pgtable.c:384:#endif /* CONFIG_HUGETLB_PAGE */\narch/powerpc/mm/pgtable.c-385-\n--\narch/riscv/configs/defconfig=290=CONFIG_TMPFS_POSIX_ACL=y\narch/riscv/configs/defconfig:291:CONFIG_HUGETLBFS=y\narch/riscv/configs/defconfig-292-CONFIG_NFS_FS=y\n--\narch/riscv/mm/Makefile=19=obj-y += pmem.o\narch/riscv/mm/Makefile-20-\narch/riscv/mm/Makefile:21:obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o\narch/riscv/mm/Makefile-22-obj-$(CONFIG_PTDUMP) += ptdump.o\n--\narch/s390/configs/debug_defconfig=706=CONFIG_TMPFS_QUOTA=y\narch/s390/configs/debug_defconfig:707:CONFIG_HUGETLBFS=y\narch/s390/configs/debug_defconfig-708-CONFIG_ECRYPT_FS=m\n--\narch/s390/configs/defconfig=692=CONFIG_TMPFS_QUOTA=y\narch/s390/configs/defconfig:693:CONFIG_HUGETLBFS=y\narch/s390/configs/defconfig-694-CONFIG_ECRYPT_FS=m\n--\narch/s390/include/asm/pgtable.h=1111=static inline pte_t pte_mkspecial(pte_t pte)\n--\narch/s390/include/asm/pgtable.h-1115-\narch/s390/include/asm/pgtable.h:1116:#ifdef CONFIG_HUGETLB_PAGE\narch/s390/include/asm/pgtable.h-1117-static inline pte_t pte_mkhuge(pte_t pte)\n--\narch/s390/include/asm/pgtable.h=1560=static inline pud_t pud_mkdirty(pud_t pud)\n--\narch/s390/include/asm/pgtable.h-1567-\narch/s390/include/asm/pgtable.h:1568:#if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLB_PAGE)\narch/s390/include/asm/pgtable.h-1569-static inline unsigned long massage_pgprot_pmd(pgprot_t pgprot)\n--\narch/s390/include/asm/pgtable.h=1618=static inline pmd_t mk_pmd_phys(unsigned long physpage, pgprot_t pgprot)\n--\narch/s390/include/asm/pgtable.h-1622-\narch/s390/include/asm/pgtable.h:1623:#endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLB_PAGE */\narch/s390/include/asm/pgtable.h-1624-\n--\narch/s390/mm/Makefile=10=obj-$(CONFIG_DEBUG_VIRTUAL)\t+= physaddr.o\narch/s390/mm/Makefile:11:obj-$(CONFIG_HUGETLB_PAGE)\t+= hugetlbpage.o\narch/s390/mm/Makefile-12-obj-$(CONFIG_PTDUMP)\t\t+= dump_pagetables.o\n--\narch/sh/configs/apsh4ad0a_defconfig=25=CONFIG_MEMORY_SIZE=0x10000000\narch/sh/configs/apsh4ad0a_defconfig:26:CONFIG_HUGETLB_PAGE_SIZE_1MB=y\narch/sh/configs/apsh4ad0a_defconfig-27-CONFIG_KSM=y\n--\narch/sh/configs/apsh4ad0a_defconfig=97=CONFIG_TMPFS=y\narch/sh/configs/apsh4ad0a_defconfig:98:CONFIG_HUGETLBFS=y\narch/sh/configs/apsh4ad0a_defconfig-99-CONFIG_JFFS2_FS=y\n--\narch/sh/configs/dreamcast_defconfig=64=CONFIG_TMPFS=y\narch/sh/configs/dreamcast_defconfig:65:CONFIG_HUGETLBFS=y\narch/sh/configs/dreamcast_defconfig-66-CONFIG_RTC_CLASS=y\n--\narch/sh/configs/r7780mp_defconfig=84=CONFIG_TMPFS=y\narch/sh/configs/r7780mp_defconfig:85:CONFIG_HUGETLBFS=y\narch/sh/configs/r7780mp_defconfig-86-CONFIG_CONFIGFS_FS=m\n--\narch/sh/configs/r7785rp_defconfig=16=CONFIG_MEMORY_SIZE=0x08000000\narch/sh/configs/r7785rp_defconfig:17:CONFIG_HUGETLB_PAGE_SIZE_1MB=y\narch/sh/configs/r7785rp_defconfig-18-CONFIG_SH_STORE_QUEUES=y\n--\narch/sh/configs/r7785rp_defconfig=79=CONFIG_TMPFS=y\narch/sh/configs/r7785rp_defconfig:80:CONFIG_HUGETLBFS=y\narch/sh/configs/r7785rp_defconfig-81-CONFIG_CONFIGFS_FS=m\n--\narch/sh/configs/sdk7780_defconfig=115=CONFIG_TMPFS_POSIX_ACL=y\narch/sh/configs/sdk7780_defconfig:116:CONFIG_HUGETLBFS=y\narch/sh/configs/sdk7780_defconfig-117-CONFIG_MINIX_FS=y\n--\narch/sh/configs/sdk7786_defconfig=44=CONFIG_NUMA=y\narch/sh/configs/sdk7786_defconfig:45:CONFIG_HUGETLB_PAGE_SIZE_64MB=y\narch/sh/configs/sdk7786_defconfig-46-CONFIG_KSM=y\n--\narch/sh/configs/sdk7786_defconfig=179=CONFIG_TMPFS=y\narch/sh/configs/sdk7786_defconfig:180:CONFIG_HUGETLBFS=y\narch/sh/configs/sdk7786_defconfig-181-CONFIG_CONFIGFS_FS=y\n--\narch/sh/configs/se7722_defconfig=49=CONFIG_TMPFS=y\narch/sh/configs/se7722_defconfig:50:CONFIG_HUGETLBFS=y\narch/sh/configs/se7722_defconfig-51-CONFIG_PRINTK_TIME=y\n--\narch/sh/configs/sh7785lcr_32bit_defconfig=17=CONFIG_PMB=y\narch/sh/configs/sh7785lcr_32bit_defconfig:18:CONFIG_HUGETLB_PAGE_SIZE_1MB=y\narch/sh/configs/sh7785lcr_32bit_defconfig-19-CONFIG_SH_STORE_QUEUES=y\n--\narch/sh/configs/sh7785lcr_32bit_defconfig=121=CONFIG_TMPFS=y\narch/sh/configs/sh7785lcr_32bit_defconfig:122:CONFIG_HUGETLBFS=y\narch/sh/configs/sh7785lcr_32bit_defconfig-123-CONFIG_CONFIGFS_FS=y\n--\narch/sh/configs/shx3_defconfig=89=CONFIG_TMPFS=y\narch/sh/configs/shx3_defconfig:90:CONFIG_HUGETLBFS=y\narch/sh/configs/shx3_defconfig-91-# CONFIG_ENABLE_MUST_CHECK is not set\n--\narch/sh/configs/ul2_defconfig=72=CONFIG_TMPFS=y\narch/sh/configs/ul2_defconfig:73:CONFIG_HUGETLBFS=y\narch/sh/configs/ul2_defconfig-74-CONFIG_CRAMFS=y\n--\narch/sh/configs/urquell_defconfig=122=CONFIG_TMPFS=y\narch/sh/configs/urquell_defconfig:123:CONFIG_HUGETLBFS=y\narch/sh/configs/urquell_defconfig-124-CONFIG_CONFIGFS_FS=y\n--\narch/sh/include/asm/page.h-14-\narch/sh/include/asm/page.h:15:#if defined(CONFIG_HUGETLB_PAGE_SIZE_64K)\narch/sh/include/asm/page.h-16-#define HPAGE_SHIFT\t16\narch/sh/include/asm/page.h:17:#elif defined(CONFIG_HUGETLB_PAGE_SIZE_256K)\narch/sh/include/asm/page.h-18-#define HPAGE_SHIFT\t18\narch/sh/include/asm/page.h:19:#elif defined(CONFIG_HUGETLB_PAGE_SIZE_1MB)\narch/sh/include/asm/page.h-20-#define HPAGE_SHIFT\t20\narch/sh/include/asm/page.h:21:#elif defined(CONFIG_HUGETLB_PAGE_SIZE_4MB)\narch/sh/include/asm/page.h-22-#define HPAGE_SHIFT\t22\narch/sh/include/asm/page.h:23:#elif defined(CONFIG_HUGETLB_PAGE_SIZE_64MB)\narch/sh/include/asm/page.h-24-#define HPAGE_SHIFT\t26\n--\narch/sh/include/asm/page.h-26-\narch/sh/include/asm/page.h:27:#ifdef CONFIG_HUGETLB_PAGE\narch/sh/include/asm/page.h-28-#define HPAGE_SIZE\t\t(1UL \u003c\u003c HPAGE_SHIFT)\n--\narch/sh/include/asm/pgtable_32.h=97=static inline unsigned long copy_ptea_attributes(unsigned long x)\n--\narch/sh/include/asm/pgtable_32.h-136-#if defined(CONFIG_X2TLB)\narch/sh/include/asm/pgtable_32.h:137:# if defined(CONFIG_HUGETLB_PAGE_SIZE_64K)\narch/sh/include/asm/pgtable_32.h-138-#  define _PAGE_SZHUGE\t(_PAGE_EXT_ESZ2)\narch/sh/include/asm/pgtable_32.h:139:# elif defined(CONFIG_HUGETLB_PAGE_SIZE_256K)\narch/sh/include/asm/pgtable_32.h-140-#  define _PAGE_SZHUGE\t(_PAGE_EXT_ESZ0 | _PAGE_EXT_ESZ2)\narch/sh/include/asm/pgtable_32.h:141:# elif defined(CONFIG_HUGETLB_PAGE_SIZE_1MB)\narch/sh/include/asm/pgtable_32.h-142-#  define _PAGE_SZHUGE\t(_PAGE_EXT_ESZ0 | _PAGE_EXT_ESZ1 | _PAGE_EXT_ESZ2)\narch/sh/include/asm/pgtable_32.h:143:# elif defined(CONFIG_HUGETLB_PAGE_SIZE_4MB)\narch/sh/include/asm/pgtable_32.h-144-#  define _PAGE_SZHUGE\t(_PAGE_EXT_ESZ3)\narch/sh/include/asm/pgtable_32.h:145:# elif defined(CONFIG_HUGETLB_PAGE_SIZE_64MB)\narch/sh/include/asm/pgtable_32.h-146-#  define _PAGE_SZHUGE\t(_PAGE_EXT_ESZ2 | _PAGE_EXT_ESZ3)\n--\narch/sh/include/asm/pgtable_32.h-149-#else\narch/sh/include/asm/pgtable_32.h:150:# if defined(CONFIG_HUGETLB_PAGE_SIZE_64K)\narch/sh/include/asm/pgtable_32.h-151-#  define _PAGE_SZHUGE\t(_PAGE_SZ1)\narch/sh/include/asm/pgtable_32.h:152:# elif defined(CONFIG_HUGETLB_PAGE_SIZE_1MB)\narch/sh/include/asm/pgtable_32.h-153-#  define _PAGE_SZHUGE\t(_PAGE_SZ0 | _PAGE_SZ1)\n--\narch/sh/mm/Makefile=37=obj-$(CONFIG_DEBUG_FS)\t\t+= $(debugfs-y)\narch/sh/mm/Makefile:38:obj-$(CONFIG_HUGETLB_PAGE)\t+= hugetlbpage.o\narch/sh/mm/Makefile-39-obj-$(CONFIG_PMB)\t\t+= pmb.o\n--\narch/sparc/configs/sparc64_defconfig=192=CONFIG_TMPFS=y\narch/sparc/configs/sparc64_defconfig:193:CONFIG_HUGETLBFS=y\narch/sparc/configs/sparc64_defconfig-194-CONFIG_PRINTK_TIME=y\n--\narch/sparc/include/asm/hugetlb.h-6-\narch/sparc/include/asm/hugetlb.h:7:#ifdef CONFIG_HUGETLB_PAGE\narch/sparc/include/asm/hugetlb.h-8-struct pud_huge_patch_entry {\n--\n\n"
}

9/2 2026/07/05 18:09 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 24308
							output: 39
							thoughts: 201
						

Thoughts:
**Analyzing Huge Page Configuration Dependencies**

Okay, so I'm digging into these kernel configurations related to huge pages. `CONFIG_HUGETLB_PAGE` is the key one, and it's responsible for bringing `hugetlbpage.o` into the game across a bunch of different architectures. Then there's `CONFIG_CMA`, which enables CMA. That's Comma-separated Memory Allocation, if I recall. Now, `CONFIG_HUGETLBFS` is what actually enables `hugetlb_cma.o` within `mm/Makefile`.

Hold on... looking at `mm/Makefile` directly, it has this conditional block:

```
ifdef CONFIG_CMA
obj-$(CONFIG_HUGETLBFS) += hugetlb_cma.o
endif
```

Right, so `CONFIG_HUGETLBFS` and `CONFIG_CMA` *both* need to be enabled for `hugetlb_cma.o` to get built. That explains why I'm seeing this particular relationship. Now, let's see how `mm/hugetlb.c` compilation is handled.

Okay, here it is:

```
obj-$(CONFIG_HUGETLB_PAGE) += hugetlb.o
```

Aha! `hugetlb.o` is tied directly to `CONFIG_HUGETLB_PAGE`. Now, the crucial piece is how `CONFIG_HUGETLB_PAGE` itself is selected. It's likely related to `CONFIG_HUGETLBFS`. I need to consult either `fs/Kconfig` or `mm/Kconfig` to confirm that direct selection. I am assuming that it is the direct selection. I need to be sure, of course.



10/2 2026/07/05 18:09 tool grepper
0m Args:
{
  "Expression": "config HUGETLBFS"
}

Results:
{
  "Output": "fs/Kconfig=247=config ARCH_SUPPORTS_HUGETLBFS\n--\nfs/Kconfig-249-\nfs/Kconfig:250:menuconfig HUGETLBFS\nfs/Kconfig-251-\tbool \"HugeTLB file system support\"\n"
}

11/2 2026/07/05 18:09 tool grepper
0m Args:
{
  "Expression": "config HUGETLB_PAGE"
}

Results:
{
  "Output": "arch/sh/mm/Kconfig=158=choice\n--\narch/sh/mm/Kconfig-163-\narch/sh/mm/Kconfig:164:config HUGETLB_PAGE_SIZE_64K\narch/sh/mm/Kconfig-165-\tbool \"64kB\"\n--\narch/sh/mm/Kconfig-167-\narch/sh/mm/Kconfig:168:config HUGETLB_PAGE_SIZE_256K\narch/sh/mm/Kconfig-169-\tbool \"256kB\"\n--\narch/sh/mm/Kconfig-171-\narch/sh/mm/Kconfig:172:config HUGETLB_PAGE_SIZE_1MB\narch/sh/mm/Kconfig-173-\tbool \"1MB\"\narch/sh/mm/Kconfig-174-\narch/sh/mm/Kconfig:175:config HUGETLB_PAGE_SIZE_4MB\narch/sh/mm/Kconfig-176-\tbool \"4MB\"\n--\narch/sh/mm/Kconfig-178-\narch/sh/mm/Kconfig:179:config HUGETLB_PAGE_SIZE_64MB\narch/sh/mm/Kconfig-180-\tbool \"64MB\"\n--\nfs/Kconfig=262=if HUGETLBFS\nfs/Kconfig:263:config HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON\nfs/Kconfig-264-\tbool \"HugeTLB Vmemmap Optimization (HVO) defaults to on\"\n--\nfs/Kconfig=271=endif # HUGETLBFS\nfs/Kconfig-272-\nfs/Kconfig:273:config HUGETLB_PAGE\nfs/Kconfig-274-\tdef_bool HUGETLBFS\n--\nfs/Kconfig-276-\nfs/Kconfig:277:config HUGETLB_PAGE_OPTIMIZE_VMEMMAP\nfs/Kconfig-278-\tdef_bool HUGETLB_PAGE\n--\nmm/Kconfig=706=config ARCH_ENABLE_THP_MIGRATION\n--\nmm/Kconfig-708-\nmm/Kconfig:709:config HUGETLB_PAGE_SIZE_VARIABLE\nmm/Kconfig-710-\tdef_bool n\n"
}

12/2 2026/07/05 18:09 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 25597
							output: 23
							thoughts: 73
						

Thoughts:
Okay, let's see, my mental checklist begins with the obvious:

**Initial Configuration Dependencies**

So, `CONFIG_HUGETLBFS` is the cornerstone here; it's the one that pulls in `CONFIG_HUGETLB_PAGE`, and that makes perfect sense. They're intrinsically linked. Then, of course, the `hugetlb_cma.c` module demands `CONFIG_CMA`. I knew that one by heart. Now, I need to make sure I haven't missed anything else. Let me quickly double-check if we need `CONFIG_CPUSETS` for `cpuset_current_mems_allowed`. That's the key to knowing where large pages are visible to processes. Always need to be thorough with the dependencies. I have to think through whether the current memory policy, as controlled by cpusets, is a factor. Let's make sure I'm not missing anything.



13/2 2026/07/05 18:09 tool grepper
0m Args:
{
  "Expression": "cpuset_current_mems_allowed"
}

Results:
{
  "Output": "include/linux/cpuset.h=83=extern nodemask_t cpuset_mems_allowed(struct task_struct *p);\ninclude/linux/cpuset.h:84:#define cpuset_current_mems_allowed (current-\u003emems_allowed)\ninclude/linux/cpuset.h-85-void cpuset_init_current_mems_allowed(void);\n--\ninclude/linux/cpuset.h=219=static inline nodemask_t cpuset_mems_allowed(struct task_struct *p)\n--\ninclude/linux/cpuset.h-223-\ninclude/linux/cpuset.h:224:#define cpuset_current_mems_allowed (node_states[N_MEMORY])\ninclude/linux/cpuset.h-225-static inline void cpuset_init_current_mems_allowed(void) {}\n--\nkernel/sched/fair.c=4076=static void task_numa_work(struct callback_head *work)\n--\nkernel/sched/fair.c-4107-\t */\nkernel/sched/fair.c:4108:\tif (cpusets_enabled() \u0026\u0026 nodes_weight(cpuset_current_mems_allowed) == 1) {\nkernel/sched/fair.c:4109:\t\ttrace_sched_skip_cpuset_numa(current, \u0026cpuset_current_mems_allowed);\nkernel/sched/fair.c-4110-\t\treturn;\n--\nmm/hugetlb.c=1863=static struct folio *alloc_fresh_hugetlb_folio(struct hstate *h,\n--\nmm/hugetlb.c-1873-\t\t\tcpuset_mems_cookie = read_mems_allowed_begin();\nmm/hugetlb.c:1874:\t\t\tlocal_node_mask = cpuset_current_mems_allowed;\nmm/hugetlb.c-1875-\t\t} while (read_mems_allowed_retry(cpuset_mems_cookie));\n--\nmm/hugetlb.c=2257=static int gather_surplus_pages(struct hstate *h, long delta)\n--\nmm/hugetlb.c-2269-\tif (mbind_nodemask)\nmm/hugetlb.c:2270:\t\tnodes_and(alloc_nodemask, *mbind_nodemask, cpuset_current_mems_allowed);\nmm/hugetlb.c-2271-\telse\nmm/hugetlb.c:2272:\t\talloc_nodemask = cpuset_current_mems_allowed;\nmm/hugetlb.c-2273-\n--\nmm/hugetlb.c=4512=static unsigned int allowed_mems_nr(struct hstate *h)\n--\nmm/hugetlb.c-4520-\tmbind_nodemask = policy_mbind_nodemask(gfp_mask);\nmm/hugetlb.c:4521:\tfor_each_node_mask(node, cpuset_current_mems_allowed) {\nmm/hugetlb.c-4522-\t\tif (!mbind_nodemask || node_isset(node, *mbind_nodemask))\n--\nmm/mempolicy.c=404=static int mpol_set_nodemask(struct mempolicy *pol,\n--\nmm/mempolicy.c-418-\tnodes_and(nsc-\u003emask1,\nmm/mempolicy.c:419:\t\t  cpuset_current_mems_allowed, node_states[N_MEMORY]);\nmm/mempolicy.c-420-\n--\nmm/mempolicy.c-430-\telse\nmm/mempolicy.c:431:\t\tpol-\u003ew.cpuset_mems_allowed = cpuset_current_mems_allowed;\nmm/mempolicy.c-432-\n--\nmm/mempolicy.c=1147=static long do_get_mempolicy(int *policy, nodemask_t *nmask,\n--\nmm/mempolicy.c-1163-\t\ttask_lock(current);\nmm/mempolicy.c:1164:\t\t*nmask  = cpuset_current_mems_allowed;\nmm/mempolicy.c-1165-\t\ttask_unlock(current);\n--\nmm/oom_kill.c=249=static enum oom_constraint constrained_alloc(struct oom_control *oc)\n--\nmm/oom_kill.c-298-\t\toc-\u003etotalpages = total_swap_pages;\nmm/oom_kill.c:299:\t\tfor_each_node_mask(nid, cpuset_current_mems_allowed)\nmm/oom_kill.c-300-\t\t\toc-\u003etotalpages += node_present_pages(nid);\n--\nmm/page_alloc.c=4725=__alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,\n--\nmm/page_alloc.c-4806-\t\t\t\t\tac-\u003ehighest_zoneidx,\nmm/page_alloc.c:4807:\t\t\t\t\t\u0026cpuset_current_mems_allowed);\nmm/page_alloc.c-4808-\t\tif (!zonelist_zone(z))\n--\nmm/page_alloc.c=5026=static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,\n--\nmm/page_alloc.c-5042-\t\tif (in_task() \u0026\u0026 !ac-\u003enodemask)\nmm/page_alloc.c:5043:\t\t\tac-\u003enodemask = \u0026cpuset_current_mems_allowed;\nmm/page_alloc.c-5044-\t\telse\n--\nmm/page_alloc.c=5268=struct page *__alloc_frozen_pages_noprof(gfp_t gfp, unsigned int order,\n--\nmm/page_alloc.c-5312-\t * Restore the original nodemask if it was potentially replaced with\nmm/page_alloc.c:5313:\t * \u0026cpuset_current_mems_allowed to optimize the fast-path attempt.\nmm/page_alloc.c-5314-\t */\n--\nmm/show_mem.c=119=static bool show_mem_node_skip(unsigned int flags, int nid, nodemask_t *nodemask)\n--\nmm/show_mem.c-129-\tif (!nodemask)\nmm/show_mem.c:130:\t\tnodemask = \u0026cpuset_current_mems_allowed;\nmm/show_mem.c-131-\n"
}

14/2 2026/07/05 18:09 llm patch-evaluator
0m Model:
gemini-3.1-pro-preview

Args:
null

Results:
null

Tokens:
							input: 27557
							output: 203
							thoughts: 955
						

Thoughts:
**Analysis of Hugetlb and Hugetlb_CMA Allocation Changes**

Okay, let's break this down. It looks like `cpuset_current_mems_allowed` is playing a role, which is defined in `cpuset.h`. It appears to be based on `current->mems_allowed` if cpusets are enabled, but defaults to `node_states[N_MEMORY]` otherwise. This suggests that even without `CONFIG_CPUSETS`, the code might still be relevant, though `CONFIG_HUGETLBFS` and `CONFIG_CMA` seem like the more critical configurations here.

Now, focusing on the core changes, this patch touches `alloc_fresh_hugetlb_folio` and `hugetlb_cma_alloc_frozen_folio`. Functionally, these changes look pretty straightforward. In `alloc_fresh_hugetlb_folio`, when `nmask` is NULL, instead of passing the null mask into `only_alloc_fresh_hugetlb_folio`, it now uses `cpuset_current_mems_allowed`. That's important; the implication is that a NULL `nmask` allows allocation from *any* node, but now the code restricts it to the current cpuset's allowed memory nodes. This looks like a constraint to reduce memory allocation footprint.

In `hugetlb_cma_alloc_frozen_folio`, the patch adds a `node_isset` check against `nodemask` before allocating from `hugetlb_cma[nid]`. This is another targeted restriction, this time ensuring that only allowed nodes are used for allocation.

This is clearly a functional change affecting the hugetlb and hugetlb_cma memory allocation paths. It's tightening the node mask constraints. Since this involves core memory management, this absolutely warrants fuzzing.

My primary focus points here are `alloc_fresh_hugetlb_folio` and `hugetlb_cma_alloc_frozen_folio`, but I should check the callers of those functions too. `alloc_fresh_hugetlb_folio` is static. Alright, let's look at the calls: `alloc_surplus_hugetlb_folio`, `alloc_migrate_hugetlb_folio`, and `alloc_and_dissolve_hugetlb_folio`.

`hugetlb_cma_alloc_frozen_folio` is called by `alloc_gigantic_frozen_folio`. Okay, let's include those.

Therefore, the revised focus symbols are:
*   `alloc_fresh_hugetlb_folio`
*   `hugetlb_cma_alloc_frozen_folio`
*   `alloc_surplus_hugetlb_folio`
*   `alloc_migrate_hugetlb_folio`
*   `alloc_and_dissolve_hugetlb_folio`
*   `alloc_gigantic_frozen_folio`

And the configs to enable:
*   `HUGETLBFS`
*   `CMA`

Let me just double-check reachability. `alloc_fresh_hugetlb_folio` is indeed called by `alloc_surplus_hugetlb_folio`, `alloc_migrate_hugetlb_folio`, and `alloc_and_dissolve_hugetlb_folio`, and those functions are called by `alloc_hugetlb_folio` and migration and isolation code respectively. Also, `hugetlb_cma_alloc_frozen_folio` is called by `alloc_gigantic_frozen_folio` which is called by `alloc_pool_huge_folio`. Yup, they're all reachable.

Therefore, it's definitely worth fuzzing. The patch restricts memory allocation to specific nodes determined by cpuset configuration and introduces node mask checks. These changes are crucial for memory allocation correctness, and can be checked with fuzzing.



15/2 2026/07/05 18:09 tool set-results
0m Args:
{
  "EnableConfigs": [
    "HUGETLBFS",
    "CMA"
  ],
  "FocusSymbols": [
    "alloc_fresh_hugetlb_folio",
    "hugetlb_cma_alloc_frozen_folio",
    "alloc_surplus_hugetlb_folio",
    "alloc_migrate_hugetlb_folio",
    "alloc_and_dissolve_hugetlb_folio",
    "alloc_gigantic_frozen_folio"
  ],
  "Reasoning": "The patch modifies the node mask handling in hugetlb and hugetlb_cma allocation paths. It restricts allocations to `cpuset_current_mems_allowed` when `nmask` is NULL and adds a `node_isset` check in `hugetlb_cma_alloc_frozen_folio`. This is a functional change to core memory management logic that should be fuzzed.",
  "WorthFuzzing": true
}

Results:
{
  "EnableConfigs": [
    "HUGETLBFS",
    "CMA"
  ],
  "FocusSymbols": [
    "alloc_fresh_hugetlb_folio",
    "hugetlb_cma_alloc_frozen_folio",
    "alloc_surplus_hugetlb_folio",
    "alloc_migrate_hugetlb_folio",
    "alloc_and_dissolve_hugetlb_folio",
    "alloc_gigantic_frozen_folio"
  ],
  "Reasoning": "The patch modifies the node mask handling in hugetlb and hugetlb_cma allocation paths. It restricts allocations to `cpuset_current_mems_allowed` when `nmask` is NULL and adds a `node_isset` check in `hugetlb_cma_alloc_frozen_folio`. This is a functional change to core memory management logic that should be fuzzed.",
  "WorthFuzzing": true
}

LLM Calls Summary:
Total Calls Total Tokens Avg Tokens Total Duration (Seconds) Avg Duration (Seconds)
Tool Calls Summary:
Total Calls Total Duration (Seconds) Avg Duration (Seconds)