diff options
Diffstat (limited to 'arch/x86/mm/memblock.c')
| -rw-r--r-- | arch/x86/mm/memblock.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/arch/x86/mm/memblock.c b/arch/x86/mm/memblock.c index 50ecbc59757f..fd7a0404945d 100644 --- a/arch/x86/mm/memblock.c +++ b/arch/x86/mm/memblock.c | |||
| @@ -156,7 +156,8 @@ static int __init count_early_node_map(int nodeid) | |||
| 156 | return data.nr; | 156 | return data.nr; |
| 157 | } | 157 | } |
| 158 | 158 | ||
| 159 | int __init get_free_all_memory_range(struct range **rangep, int nodeid) | 159 | int __init __get_free_all_memory_range(struct range **rangep, int nodeid, |
| 160 | unsigned long start_pfn, unsigned long end_pfn) | ||
| 160 | { | 161 | { |
| 161 | int count; | 162 | int count; |
| 162 | struct range *range; | 163 | struct range *range; |
| @@ -172,9 +173,9 @@ int __init get_free_all_memory_range(struct range **rangep, int nodeid) | |||
| 172 | * at first | 173 | * at first |
| 173 | */ | 174 | */ |
| 174 | nr_range = add_from_early_node_map(range, count, nr_range, nodeid); | 175 | nr_range = add_from_early_node_map(range, count, nr_range, nodeid); |
| 175 | #ifdef CONFIG_X86_32 | 176 | subtract_range(range, count, 0, start_pfn); |
| 176 | subtract_range(range, count, max_low_pfn, -1ULL); | 177 | subtract_range(range, count, end_pfn, -1ULL); |
| 177 | #endif | 178 | |
| 178 | memblock_x86_subtract_reserved(range, count); | 179 | memblock_x86_subtract_reserved(range, count); |
| 179 | nr_range = clean_sort_range(range, count); | 180 | nr_range = clean_sort_range(range, count); |
| 180 | 181 | ||
| @@ -182,6 +183,16 @@ int __init get_free_all_memory_range(struct range **rangep, int nodeid) | |||
| 182 | return nr_range; | 183 | return nr_range; |
| 183 | } | 184 | } |
| 184 | 185 | ||
| 186 | int __init get_free_all_memory_range(struct range **rangep, int nodeid) | ||
| 187 | { | ||
| 188 | unsigned long end_pfn = -1UL; | ||
| 189 | |||
| 190 | #ifdef CONFIG_X86_32 | ||
| 191 | end_pfn = max_low_pfn; | ||
| 192 | #endif | ||
| 193 | return __get_free_all_memory_range(rangep, nodeid, 0, end_pfn); | ||
| 194 | } | ||
| 195 | |||
| 185 | static u64 __init __memblock_x86_memory_in_range(u64 addr, u64 limit, bool get_free) | 196 | static u64 __init __memblock_x86_memory_in_range(u64 addr, u64 limit, bool get_free) |
| 186 | { | 197 | { |
| 187 | int i, count; | 198 | int i, count; |
