diff options
Diffstat (limited to 'mm/hugetlb.c')
-rw-r--r-- | mm/hugetlb.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 246192929a2d..c82290b9c1fc 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -1981,11 +1981,7 @@ static int __init hugetlb_init(void) | |||
1981 | { | 1981 | { |
1982 | int i; | 1982 | int i; |
1983 | 1983 | ||
1984 | /* Some platform decide whether they support huge pages at boot | 1984 | if (!hugepages_supported()) |
1985 | * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when | ||
1986 | * there is no such support | ||
1987 | */ | ||
1988 | if (HPAGE_SHIFT == 0) | ||
1989 | return 0; | 1985 | return 0; |
1990 | 1986 | ||
1991 | if (!size_to_hstate(default_hstate_size)) { | 1987 | if (!size_to_hstate(default_hstate_size)) { |
@@ -2112,6 +2108,9 @@ static int hugetlb_sysctl_handler_common(bool obey_mempolicy, | |||
2112 | unsigned long tmp; | 2108 | unsigned long tmp; |
2113 | int ret; | 2109 | int ret; |
2114 | 2110 | ||
2111 | if (!hugepages_supported()) | ||
2112 | return -ENOTSUPP; | ||
2113 | |||
2115 | tmp = h->max_huge_pages; | 2114 | tmp = h->max_huge_pages; |
2116 | 2115 | ||
2117 | if (write && h->order >= MAX_ORDER) | 2116 | if (write && h->order >= MAX_ORDER) |
@@ -2165,6 +2164,9 @@ int hugetlb_overcommit_handler(struct ctl_table *table, int write, | |||
2165 | unsigned long tmp; | 2164 | unsigned long tmp; |
2166 | int ret; | 2165 | int ret; |
2167 | 2166 | ||
2167 | if (!hugepages_supported()) | ||
2168 | return -ENOTSUPP; | ||
2169 | |||
2168 | tmp = h->nr_overcommit_huge_pages; | 2170 | tmp = h->nr_overcommit_huge_pages; |
2169 | 2171 | ||
2170 | if (write && h->order >= MAX_ORDER) | 2172 | if (write && h->order >= MAX_ORDER) |
@@ -2190,6 +2192,8 @@ out: | |||
2190 | void hugetlb_report_meminfo(struct seq_file *m) | 2192 | void hugetlb_report_meminfo(struct seq_file *m) |
2191 | { | 2193 | { |
2192 | struct hstate *h = &default_hstate; | 2194 | struct hstate *h = &default_hstate; |
2195 | if (!hugepages_supported()) | ||
2196 | return; | ||
2193 | seq_printf(m, | 2197 | seq_printf(m, |
2194 | "HugePages_Total: %5lu\n" | 2198 | "HugePages_Total: %5lu\n" |
2195 | "HugePages_Free: %5lu\n" | 2199 | "HugePages_Free: %5lu\n" |
@@ -2206,6 +2210,8 @@ void hugetlb_report_meminfo(struct seq_file *m) | |||
2206 | int hugetlb_report_node_meminfo(int nid, char *buf) | 2210 | int hugetlb_report_node_meminfo(int nid, char *buf) |
2207 | { | 2211 | { |
2208 | struct hstate *h = &default_hstate; | 2212 | struct hstate *h = &default_hstate; |
2213 | if (!hugepages_supported()) | ||
2214 | return 0; | ||
2209 | return sprintf(buf, | 2215 | return sprintf(buf, |
2210 | "Node %d HugePages_Total: %5u\n" | 2216 | "Node %d HugePages_Total: %5u\n" |
2211 | "Node %d HugePages_Free: %5u\n" | 2217 | "Node %d HugePages_Free: %5u\n" |
@@ -2220,6 +2226,9 @@ void hugetlb_show_meminfo(void) | |||
2220 | struct hstate *h; | 2226 | struct hstate *h; |
2221 | int nid; | 2227 | int nid; |
2222 | 2228 | ||
2229 | if (!hugepages_supported()) | ||
2230 | return; | ||
2231 | |||
2223 | for_each_node_state(nid, N_MEMORY) | 2232 | for_each_node_state(nid, N_MEMORY) |
2224 | for_each_hstate(h) | 2233 | for_each_hstate(h) |
2225 | 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", |