[PATCH v2 1/9] mm/clear_huge_page: allow arch override for clear_huge_page()

From: Ankur Arora
Date: Wed Aug 30 2023 - 17:14:18 EST


clear_huge_page() is constrained to process a page-at-a-time
because it also handles the CONFIG_HIGHMEM case.

Mark __weak to allow for arch specific optimizations.

Suggested-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Ankur Arora <ankur.a.arora@xxxxxxxxxx>
---
mm/memory.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/mm/memory.c b/mm/memory.c
index 405a483d2fd1..3854f0b9b3a9 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -5982,8 +5982,9 @@ static int clear_subpage(unsigned long addr, int idx, void *arg)
return 0;
}

-void clear_huge_page(struct page *page,
- unsigned long addr_hint, unsigned int pages_per_huge_page)
+__weak void clear_huge_page(struct page *page,
+ unsigned long addr_hint,
+ unsigned int pages_per_huge_page)
{
unsigned long addr = addr_hint &
~(((unsigned long)pages_per_huge_page << PAGE_SHIFT) - 1);
--
2.31.1