git: e51729f608da - main - linuxkpi: Move `release_pages()` to linux_page.c

From: Jean-Sébastien Pédron <dumbbell_at_FreeBSD.org>
Date: Mon, 12 May 2025 17:46:48 UTC
The branch main has been updated by dumbbell:

URL: https://cgit.FreeBSD.org/src/commit/?id=e51729f608dae341b82543d33a11d4ba1f36d46a

commit e51729f608dae341b82543d33a11d4ba1f36d46a
Author:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
AuthorDate: 2025-04-13 10:58:27 +0000
Commit:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
CommitDate: 2025-05-12 17:08:02 +0000

    linuxkpi: Move `release_pages()` to linux_page.c
    
    We want to avoid putting code managing memory in inline functions in the
    future.
    
    Reviewed by:    markj
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D49810
---
 sys/compat/linuxkpi/common/include/linux/mm.h      | 3 +++
 sys/compat/linuxkpi/common/include/linux/pagemap.h | 9 ---------
 sys/compat/linuxkpi/common/src/linux_page.c        | 9 +++++++++
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/mm.h b/sys/compat/linuxkpi/common/include/linux/mm.h
index b4c8bf3c1c30..17b7a4137b7a 100644
--- a/sys/compat/linuxkpi/common/include/linux/mm.h
+++ b/sys/compat/linuxkpi/common/include/linux/mm.h
@@ -275,6 +275,9 @@ get_page(struct page *page)
 	vm_page_wire(page);
 }
 
+void linux_release_pages(struct page **pages, int nr);
+#define	release_pages(pages, nr) linux_release_pages((pages), (nr))
+
 extern long
 lkpi_get_user_pages(unsigned long start, unsigned long nr_pages,
     unsigned int gup_flags, struct page **);
diff --git a/sys/compat/linuxkpi/common/include/linux/pagemap.h b/sys/compat/linuxkpi/common/include/linux/pagemap.h
index 7244b61257dc..92159f7a2eb8 100644
--- a/sys/compat/linuxkpi/common/include/linux/pagemap.h
+++ b/sys/compat/linuxkpi/common/include/linux/pagemap.h
@@ -39,15 +39,6 @@
 unsigned long linux_invalidate_mapping_pages(vm_object_t obj, pgoff_t start,
     pgoff_t end);
 
-static inline void
-release_pages(struct page **pages, int nr)
-{
-	int i;
-
-	for (i = 0; i < nr; i++)
-		put_page(pages[i]);
-}
-
 static inline void
 mapping_clear_unevictable(vm_object_t mapping)
 {
diff --git a/sys/compat/linuxkpi/common/src/linux_page.c b/sys/compat/linuxkpi/common/src/linux_page.c
index 93aaea01f0df..5114dc708a9e 100644
--- a/sys/compat/linuxkpi/common/src/linux_page.c
+++ b/sys/compat/linuxkpi/common/src/linux_page.c
@@ -177,6 +177,15 @@ linux_free_pages(struct page *page, unsigned int order)
 	}
 }
 
+void
+linux_release_pages(struct page **pages, int nr)
+{
+	int i;
+
+	for (i = 0; i < nr; i++)
+		put_page(pages[i]);
+}
+
 vm_offset_t
 linux_alloc_kmem(gfp_t flags, unsigned int order)
 {