aboutsummaryrefslogtreecommitdiffstats
path: root/mm/hugetlb.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/hugetlb.c')
-rw-r--r--mm/hugetlb.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index dd30f22b35e0..c82290b9c1fc 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1172,6 +1172,7 @@ static void return_unused_surplus_pages(struct hstate *h,
1172 while (nr_pages--) { 1172 while (nr_pages--) {
1173 if (!free_pool_huge_page(h, &node_states[N_MEMORY], 1)) 1173 if (!free_pool_huge_page(h, &node_states[N_MEMORY], 1))
1174 break; 1174 break;
1175 cond_resched_lock(&hugetlb_lock);
1175 } 1176 }
1176} 1177}
1177 1178
@@ -1980,11 +1981,7 @@ static int __init hugetlb_init(void)
1980{ 1981{
1981 int i; 1982 int i;
1982 1983
1983 /* Some platform decide whether they support huge pages at boot 1984 if (!hugepages_supported())
1984 * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
1985 * there is no such support
1986 */
1987 if (HPAGE_SHIFT == 0)
1988 return 0; 1985 return 0;
1989 1986
1990 if (!size_to_hstate(default_hstate_size)) { 1987 if (!size_to_hstate(default_hstate_size)) {
@@ -2111,6 +2108,9 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy,
2111 unsigned long tmp; 2108 unsigned long tmp;
2112 int ret; 2109 int ret;
2113 2110
2111 if (!hugepages_supported())
2112 return -ENOTSUPP;
2113
2114 tmp = h->max_huge_pages; 2114 tmp = h->max_huge_pages;
2115 2115
2116 if (write && h->order >= MAX_ORDER) 2116 if (write && h->order >= MAX_ORDER)
@@ -2164,6 +2164,9 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write,
2164 unsigned long tmp; 2164 unsigned long tmp;
2165 int ret; 2165 int ret;
2166 2166
2167 if (!hugepages_supported())
2168 return -ENOTSUPP;
2169
2167 tmp = h->nr_overcommit_huge_pages; 2170 tmp = h->nr_overcommit_huge_pages;
2168 2171
2169 if (write && h->order >= MAX_ORDER) 2172 if (write && h->order >= MAX_ORDER)
@@ -2189,6 +2192,8 @@ out:
2189void hugetlb_report_meminfo(struct seq_file *m) 2192void hugetlb_report_meminfo(struct seq_file *m)
2190{ 2193{
2191 struct hstate *h = &default_hstate; 2194 struct hstate *h = &default_hstate;
2195 if (!hugepages_supported())
2196 return;
2192 seq_printf(m, 2197 seq_printf(m,
2193 "HugePages_Total: %5lu\n" 2198 "HugePages_Total: %5lu\n"
2194 "HugePages_Free: %5lu\n" 2199 "HugePages_Free: %5lu\n"
@@ -2205,6 +2210,8 @@ void hugetlb_report_meminfo(struct seq_file *m)
2205int hugetlb_report_node_meminfo(int nid, char *buf) 2210int hugetlb_report_node_meminfo(int nid, char *buf)
2206{ 2211{
2207 struct hstate *h = &default_hstate; 2212 struct hstate *h = &default_hstate;
2213 if (!hugepages_supported())
2214 return 0;
2208 return sprintf(buf, 2215 return sprintf(buf,
2209 "Node %d HugePages_Total: %5u\n" 2216 "Node %d HugePages_Total: %5u\n"
2210 "Node %d HugePages_Free: %5u\n" 2217 "Node %d HugePages_Free: %5u\n"
@@ -2219,6 +2226,9 @@ void hugetlb_show_meminfo(void)
2219 struct hstate *h; 2226 struct hstate *h;
2220 int nid; 2227 int nid;
2221 2228
2229 if (!hugepages_supported())
2230 return;
2231
2222 for_each_node_state(nid, N_MEMORY) 2232 for_each_node_state(nid, N_MEMORY)
2223 for_each_hstate(h) 2233 for_each_hstate(h)
2224 pr_info("Node %d hugepages_total=%u hugepages_free=%u hugepages_surp=%u hugepages_size=%lukB\n", 2234 pr_info("Node %d hugepages_total=%u hugepages_free=%u hugepages_surp=%u hugepages_size=%lukB\n",