[RFC PATCH 01/19] mm: hugetlb: Expose get_hstate_idx()

From: Ackerley Tng
Date: Tue Jun 06 2023 - 15:04:26 EST


Expose get_hstate_idx() so it can be used from KVM's guest_mem code

Signed-off-by: Ackerley Tng <ackerleytng@xxxxxxxxxx>
---
fs/hugetlbfs/inode.c | 9 ---------
include/linux/hugetlb.h | 14 ++++++++++++++
2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 9062da6da567..406d7366cf3e 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -1560,15 +1560,6 @@ static int can_do_hugetlb_shm(void)
return capable(CAP_IPC_LOCK) || in_group_p(shm_group);
}

-static int get_hstate_idx(int page_size_log)
-{
- struct hstate *h = hstate_sizelog(page_size_log);
-
- if (!h)
- return -1;
- return hstate_index(h);
-}
-
/*
* Note that size should be aligned to proper hugepage size in caller side,
* otherwise hugetlb_reserve_pages reserves one less hugepages than intended.
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 7c977d234aba..37c2edf7beea 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -876,6 +876,15 @@ static inline int hstate_index(struct hstate *h)
return h - hstates;
}

+static inline int get_hstate_idx(int page_size_log)
+{
+ struct hstate *h = hstate_sizelog(page_size_log);
+
+ if (!h)
+ return -1;
+ return hstate_index(h);
+}
+
extern int dissolve_free_huge_page(struct page *page);
extern int dissolve_free_huge_pages(unsigned long start_pfn,
unsigned long end_pfn);
@@ -1142,6 +1151,11 @@ static inline int hstate_index(struct hstate *h)
return 0;
}

+static inline int get_hstate_idx(int page_size_log)
+{
+ return 0;
+}
+
static inline int dissolve_free_huge_page(struct page *page)
{
return 0;
--
2.41.0.rc0.172.g3f132b7071-goog